Kitloft

All tools / Kubernetes examples

Alertmanager on Kubernetes

Prometheus Alertmanager with a starter routing config you can extend with Slack, email or PagerDuty receivers.

Customize names, versions →

alertmanager.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: alertmanager-config
  namespace: monitoring
data:
  alertmanager.yml: |
    route:
      receiver: default
      group_by: ["alertname", "namespace"]
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 4h
    receivers:
      - name: default
        # Add a receiver, for example:
        # slack_configs:
        #   - api_url: https://hooks.slack.com/services/...
        #     channel: "#alerts"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertmanager
  namespace: monitoring
  labels:
    app: alertmanager
spec:
  replicas: 1
  selector:
    matchLabels:
      app: alertmanager
  template:
    metadata:
      labels:
        app: alertmanager
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 65534
        fsGroup: 65534
      containers:
        - name: alertmanager
          image: prom/alertmanager:v0.28.1
          args:
            - --config.file=/etc/alertmanager/alertmanager.yml
            - --storage.path=/alertmanager
          ports:
            - name: web
              containerPort: 9093
          readinessProbe:
            httpGet:
              path: /-/ready
              port: web
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
            limits:
              memory: 256Mi
          volumeMounts:
            - name: config
              mountPath: /etc/alertmanager
            - name: data
              mountPath: /alertmanager
      volumes:
        - name: config
          configMap:
            name: alertmanager-config
        - name: data
          emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: alertmanager
  namespace: monitoring
spec:
  selector:
    app: alertmanager
  ports:
    - name: web
      port: 9093
      targetPort: web

How to use it

Commands
kubectl create namespace monitoring --dry-run=client -o yaml | kubectl apply -f -
kubectl apply -f alertmanager.yaml
kubectl -n monitoring get pods -w

Prefer Docker Compose? See the Alertmanager Docker Compose version.