All tools / Kubernetes examples
Alertmanager on Kubernetes
Prometheus Alertmanager with a starter routing config you can extend with Slack, email or PagerDuty receivers.
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
- Point Prometheus at it by uncommenting the alerting block in the Prometheus config, using the target alertmanager:9093.
Prefer Docker Compose? See the Alertmanager Docker Compose version.