configure-alerting-rules
关于
This skill configures Prometheus Alertmanager with routing trees, receivers (like Slack and PagerDuty), and features like inhibition and silencing for actionable incident alerting. Use it to implement proactive monitoring, route alerts by severity to the right team, and reduce alert fatigue through grouping and deduplication. It's ideal for integrating with on-call systems or migrating from legacy alerting to Prometheus.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/configure-alerting-rules在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: configure-alerting-rules description: > Prometheus Alertmanager mit Routing-Baeumen, Empfaengern (Slack, PagerDuty, E-Mail), Inhibierungsregeln, Stummschaltungen und Benachrichtigungsvorlagen fuer handlungsorientiertes Incident-Alerting konfigurieren. Verwenden, wenn proaktives Monitoring mit automatisierter Incident-Erkennung implementiert wird, Alerts basierend auf Schweregrad an das entsprechende Team geroutet werden, Alert-Ueberlastung durch Gruppierung und Deduplizierung reduziert wird, mit On-Call-Systemen wie PagerDuty integriert wird oder von Legacy-Alerting zu Prometheus-basiertem Alerting migriert wird. locale: de source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: observability complexity: intermediate language: multi tags: alertmanager, alerting, routing, pagerduty, slack
Alerting-Regeln konfigurieren
Prometheus-Alerting-Regeln und Alertmanager fuer zuverlaessige, handlungsorientierte Incident-Benachrichtigungen einrichten.
Unter Extended Examples sind vollstaendige Konfigurationsdateien und Templates verfuegbar.
Wann verwenden
- Proaktives Monitoring mit automatisierter Incident-Erkennung implementieren
- Alerts basierend auf Schweregrad und Service-Eigentuemer an entsprechende Teams routen
- Alert-Ueberlastung durch intelligente Gruppierung und Deduplizierung reduzieren
- Monitoring mit On-Call-Systemen integrieren (PagerDuty, Opsgenie)
- Eskalationsrichtlinien fuer kritische Produktionsprobleme etablieren
- Von Legacy-Monitoring-Systemen zu Prometheus-basiertem Alerting migrieren
- Handlungsorientierte Alerts erstellen, die Responder zur Loesung fuehren
Eingaben
- Pflichtfeld: Prometheus-Metriken fuer Alerts (Fehlerquoten, Latenz, Saettigung)
- Pflichtfeld: On-Call-Rotation und Eskalationsrichtlinien
- Optional: Vorhandene Alert-Definitionen zur Migration
- Optional: Benachrichtigungskanaele (Slack, E-Mail, PagerDuty)
- Optional: Runbook-Dokumentation fuer gaengige Alerts
Vorgehensweise
Schritt 1: Alertmanager bereitstellen
Alertmanager installieren und konfigurieren, um Alerts von Prometheus zu empfangen.
Docker-Compose-Deployment (Grundstruktur):
version: '3.8'
services:
alertmanager:
image: prom/alertmanager:v0.26.0
ports:
- "9093:9093"
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
# ... (see EXAMPLES.md for complete configuration)
Grundlegende Alertmanager-Konfiguration (alertmanager.yml Auszug):
global:
resolve_timeout: 5m
slack_api_url: 'https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'
route:
receiver: 'default-receiver'
group_by: ['alertname', 'cluster', 'service']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- match:
severity: critical
receiver: pagerduty-critical
# ... (see EXAMPLES.md for complete routing, inhibition rules, and receivers)
Prometheus fuer Alertmanager konfigurieren (prometheus.yml):
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
timeout: 10s
api_version: v2
Erwartet: Alertmanager-UI unter http://localhost:9093 zugaenglich, Prometheus "Status > Alertmanagers" zeigt UP-Status.
Bei Fehler:
- Alertmanager-Logs pruefen:
docker logs alertmanager - Pruefen, ob Prometheus Alertmanager erreichen kann:
curl http://alertmanager:9093/api/v2/status - Webhook-URLs testen:
curl -X POST <SLACK_WEBHOOK_URL> -d '{"text":"test"}' - YAML-Syntax validieren:
amtool check-config alertmanager.yml
Schritt 2: Alerting-Regeln in Prometheus definieren
Alerting-Regeln erstellen, die bei Bedingungserfuellung ausloesen.
Alerting-Regeldatei erstellen (/etc/prometheus/rules/alerts.yml Auszug):
groups:
- name: instance_alerts
interval: 30s
rules:
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: critical
team: infrastructure
annotations:
summary: "Instance {{ $labels.instance }} is down"
description: "{{ $labels.instance }} has been down for >5min."
runbook_url: "https://wiki.example.com/runbooks/instance-down"
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 10m
labels:
severity: warning
annotations:
summary: "High CPU usage on {{ $labels.instance }}"
# ... (see EXAMPLES.md for complete alerts)
Best Practices fuer Alert-Design:
for-Dauer: Verhindert flatternde Alerts. 5-10 Minuten fuer die meisten Alerts verwenden.- Beschreibende Annotationen: Aktuellen Wert, betroffene Ressource und Runbook-Link einschliessen.
- Schweregrade: critical (ruft On-Call), warning (untersuchen), info (zur Information)
- Team-Labels: Ermoeglicht Routing zum richtigen Team/Kanal
- Runbook-Links: Jeder Alert sollte eine Runbook-URL haben
Regeln in Prometheus laden:
# prometheus.yml
rule_files:
- "rules/*.yml"
Validieren und neu laden:
promtool check rules /etc/prometheus/rules/alerts.yml
curl -X POST http://localhost:9090/-/reload
Erwartet: Alerts auf der Prometheus-"Alerts"-Seite sichtbar, Alerts loesen bei ueberschrittenen Schwellenwerten aus, Alertmanager empfaengt ausgeloeste Alerts.
Bei Fehler:
- Prometheus-Logs auf Regelauswertungsfehler pruefen
- Regelsyntax mit
promtool check rulespruefen - Alert-Abfragen unabhaengig in der Prometheus-UI testen
- Alert-Zustandsuebertragungen pruefen: Inactive → Pending → Firing
Schritt 3: Benachrichtigungsvorlagen erstellen
Lesbare, handlungsorientierte Benachrichtigungsmeldungen gestalten.
Vorlagendatei erstellen (/etc/alertmanager/templates/default.tmpl Auszug):
{{ define "slack.default.title" }}
[{{ .Status | toUpper }}] {{ .GroupLabels.alertname }}
{{ end }}
{{ define "slack.default.text" }}
{{ range .Alerts }}
*Alert:* {{ .Labels.alertname }}
*Severity:* {{ .Labels.severity }}
*Summary:* {{ .Annotations.summary }}
{{ if .Annotations.runbook_url }}*Runbook:* {{ .Annotations.runbook_url }}{{ end }}
{{ end }}
{{ end }}
# ... (see EXAMPLES.md for complete email and PagerDuty templates)
Vorlagen in Empfaengern verwenden:
receivers:
- name: 'slack-custom'
slack_configs:
- channel: '#alerts'
title: '{{ template "slack.default.title" . }}'
text: '{{ template "slack.default.text" . }}'
Erwartet: Benachrichtigungen konsistent formatiert, enthalten alle relevanten Kontextinformationen, handlungsorientiert mit Runbook-Links.
Bei Fehler:
- Vorlagen-Rendering testen:
amtool template test --config.file=alertmanager.yml - Vorlagensyntaxfehler in Alertmanager-Logs pruefen
{{ . | json }}zur Fehlersuche in der Vorlage-Datenstruktur verwenden
Schritt 4: Routing und Gruppierung konfigurieren
Alert-Zustellung mit intelligenten Routing-Regeln optimieren.
Erweiterte Routing-Konfiguration (Auszug):
route:
receiver: 'default-receiver'
group_by: ['alertname', 'cluster', 'service']
group_wait: 30s
routes:
- match:
team: platform
receiver: 'team-platform'
routes:
- match:
severity: critical
receiver: 'pagerduty-platform'
group_wait: 10s
repeat_interval: 15m
continue: true # Also send to Slack
# ... (see EXAMPLES.md for complete routing with time intervals)
Gruppierungsstrategien:
# Group by alertname: All HighCPU alerts bundled together
group_by: ['alertname']
# Group by alertname AND cluster: Separate notifications per cluster
group_by: ['alertname', 'cluster']
Erwartet: Alerts werden an korrekte Teams geroutet, logisch gruppiert, Zeitplanung angemessen fuer Schweregrad.
Bei Fehler:
- Routing testen:
amtool config routes test --config.file=alertmanager.yml --alertname=HighCPU --label=severity=critical - Routing-Baum pruefen:
amtool config routes show --config.file=alertmanager.yml continue: truepruefen, wenn Alert mehrere Routen treffen soll
Schritt 5: Inhibierung und Stummschaltung implementieren
Alert-Rauschen mit Inhibierungsregeln und temporaeren Stummschaltungen reduzieren.
Inhibierungsregeln (abhaengige Alerts unterdruecken):
inhibit_rules:
# Cluster down suppresses all node alerts in that cluster
- source_match:
alertname: 'ClusterDown'
severity: 'critical'
target_match_re:
alertname: '(InstanceDown|HighCPU|HighMemory)'
equal: ['cluster']
# Service down suppresses latency and error alerts
- source_match:
alertname: 'ServiceDown'
target_match_re:
alertname: '(HighLatency|HighErrorRate)'
equal: ['service', 'namespace']
# ... (see EXAMPLES.md for more inhibition patterns)
Stummschaltungen programmgesteuert erstellen:
# Silence during maintenance
amtool silence add \
instance=app-server-1 \
--author="ops-team" \
--comment="Scheduled maintenance" \
--duration=2h
# List and manage silences
amtool silence query
amtool silence expire <SILENCE_ID>
Erwartet: Inhibierung reduziert Kaskaden-Alerts automatisch, Stummschaltungen verhindern Benachrichtigungen waehrend geplanter Wartungsarbeiten.
Bei Fehler:
- Inhibierungslogik mit Live-Alerts testen
- "Silences"-Tab in der Alertmanager-UI pruefen
- Sicherstellen, dass Stummschaltungs-Matcher exakt sind (Labels muessen perfekt uebereinstimmen)
Schritt 6: Mit externen Systemen integrieren
Alertmanager mit PagerDuty, Opsgenie, Jira usw. verbinden.
PagerDuty-Integration (Auszug):
receivers:
- name: 'pagerduty'
pagerduty_configs:
- routing_key: 'YOUR_INTEGRATION_KEY'
severity: '{{ .CommonLabels.severity }}'
description: '{{ range .Alerts.Firing }}{{ .Annotations.summary }}{{ end }}'
details:
firing: '{{ .Alerts.Firing | len }}'
alertname: '{{ .GroupLabels.alertname }}'
# ... (see EXAMPLES.md for complete integration examples)
Webhook fuer benutzerdefinierte Integrationen:
receivers:
- name: 'webhook-custom'
webhook_configs:
- url: 'https://your-webhook-endpoint.com/alerts'
send_resolved: true
Erwartet: Alerts erstellen Incidents in PagerDuty, erscheinen in Team-Kommunikationskanaelen, loesen On-Call-Eskalationen aus.
Bei Fehler:
- API-Schluessel/Tokens auf Gueltigkeit pruefen
- Netzwerkkonnektivitaet zu externen Services pruefen
- Webhook-Endpunkte unabhaengig mit curl testen
- Debug-Modus aktivieren:
--log.level=debug
Validierung
- Alertmanager empfaengt erfolgreich Alerts von Prometheus
- Alerts werden basierend auf Labels und Schweregrad an korrekte Teams geroutet
- Benachrichtigungen werden an Slack, E-Mail oder PagerDuty zugestellt
- Alert-Gruppierung reduziert Benachrichtigungsvolumen angemessen
- Inhibierungsregeln unterdruecken abhaengige Alerts korrekt
- Stummschaltungen verhindern Benachrichtigungen waehrend Wartungsfenstern
- Benachrichtigungsvorlagen enthalten Runbook-Links und Kontext
- Wiederholungsintervall verhindert Alert-Ueberlastung bei lang andauernden Problemen
- Aufloesungsbenachrichtigungen werden gesendet, wenn Alerts sich klaeren
- Externe Integrationen (PagerDuty, Opsgenie) erstellen Incidents
Haeufige Stolperfallen
- Alert-Ueberlastung: Zu viele niedrig priorisierte Alerts fuehren dazu, dass Responder kritische ignorieren. Strenge Schwellenwerte setzen, Inhibierung verwenden.
- Fehlende
for-Dauer: Alerts ohneforloesen bei vorueber gehenden Spitzen aus. Immer 5-10-Minuten-Fenster verwenden. - Zu breite Gruppierung: Gruppierung mit
['...']sendet einzelne Benachrichtigungen. Spezifische Label-Gruppierung verwenden. - Keine Runbook-Links: Alerts ohne Runbooks lassen Responder raten. Jeder Alert braucht eine Runbook-URL.
- Falscher Schweregrad: Warnungen faelschlicherweise als kritisch zu bezeichnen, desensibilisiert das Team. Critical nur fuer Notfaelle reservieren.
- Vergessene Stummschaltungen: Stummschaltungen ohne Ablaufzeit koennen echte Probleme verbergen. Immer Endzeiten setzen.
- Einzelne Route: Alle Alerts in einen Kanal verliert Kontext. Teamspezifisches Routing verwenden.
- Keine Inhibierung: Kaskaden-Alerts waehrend Ausfaellen erzeugen Rauschen. Inhibierungsregeln implementieren.
Verwandte Skills
setup-prometheus-monitoring- Metriken und Recording-Rules definieren, die Alerting-Regeln speisendefine-slo-sli-sla- SLO-Burn-Rate-Alerts fuer Fehlerbudget-Management generierenwrite-incident-runbook- Runbooks erstellen, die aus Alert-Annotationen verlinkt werdenbuild-grafana-dashboards- Alert-Ausloesungshistorie und Stummschaltungsmuster visualisieren
GitHub 仓库
相关推荐技能
himalaya-email-manager
通信这个Claude Skill通过Himalaya CLI工具提供IMAP邮箱管理功能,支持使用自然语言查询搜索、总结和删除邮件。它特别适合开发者快速获取每日邮件摘要和执行批量邮件操作,所有功能都通过Python脚本封装,简化了环境配置和命令执行流程。关键特性包括支持富文本表格输出、多文件夹分类处理,以及完整的Unicode字符和表情符号显示。
imsg
通信imsg是一个macOS命令行工具,让开发者能通过终端直接访问和操作iMessage/SMS。它支持查看聊天列表、获取历史记录、实时监控消息以及发送文本和附件。这个工具特别适合需要自动化处理消息或与Messages.app集成的开发工作流。
internationalization-i18n
通信这个Skill为开发者提供全面的国际化(i18n)和本地化实现指南,适用于构建多语言应用和支持国际用户。它涵盖消息提取、翻译管理、复数规则、日期/时间/数字格式化以及RTL语言支持等关键功能,并集成i18next和gettext等主流库。开发者可借助此Skill快速设置本地化工作流,处理语言切换和区域特定格式需求。
wacli
通信wacli是一个通过命令行管理WhatsApp的工具,支持消息同步、搜索和发送。它通过WhatsApp Web协议工作,适用于需要自动化处理WhatsApp消息或与外部系统集成的开发场景。关键功能包括持续同步消息、历史记录检索以及向指定联系人发送文本和文件。
