How Alerting Works
Prometheus evaluates alert rules at regular intervals. When a condition is met, it fires an alert to Alertmanager, which handles routing, grouping, and sending notifications.
Alert Rules File
Create /etc/prometheus/alert-rules.yml:
groups:
- name: server-alerts
rules:
- alert: HighCPU
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU on {{ $labels.instance }}"
description: "CPU usage above 85% for 5 minutes"
- alert: DiskSpaceLow
expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
for: 2m
labels:
severity: critical
annotations:
summary: "Low disk space on {{ $labels.instance }}"
- alert: HighMemory
expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 90
for: 5m
labels:
severity: warning
- alert: ServiceDown
expr: up == 0
for: 1m
labels:
severity: criticalConfigure Prometheus
# prometheus.yml
rule_files:
- "alert-rules.yml"
alerting:
alertmanagers:
- static_configs:
- targets: ["localhost:9093"]Alertmanager Configuration
# alertmanager.yml
route:
receiver: email-alerts
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receivers:
- name: email-alerts
email_configs:
- to: admin@example.com
from: alerts@example.com
smarthost: localhost:25