Integration von Alertmanager mit EvaTeam: Das alertmanager-evateam Plugin zur Aufgabenautomatisierung
Das alertmanager-evateam Plugin gewährleistet eine direkte Integration zwischen Alertmanager aus Prometheus oder VictoriaMetrics und dem EvaTeam Tracker. Wenn ein Alert ausgelöst wird, entsteht automatisch ein Task im EvaTeam Projekt. Sobald der Alert behoben ist, wird ein Kommentar hinzugefügt oder der Status aktualisiert. Die Lösung ist seit über sechs Monaten im Produktiveinsatz und demonstriert Stabilität ohne Ausfälle.
Implementiert in Java unter Verwendung des Quarkus Frameworks und nativer GraalVM Kompilierung, minimiert es den Ressourcenverbrauch und beschleunigt den Start.
Integrationsworkflow
Das Schema zur Alertverarbeitung umfasst folgende Schritte:
- Sammlung von Prometheus oder VictoriaMetrics Metriken.
- Alertmanager wertet Regeln aus, generiert einen Alert und sendet ihn via webhook_config an den Plugin-Endpoint.
- Das Plugin parst den Alert JSON, erstellt einen neuen Task in EvaTeam oder aktualisiert einen bestehenden.
- Wenn send_resolved: true, wird ein Lösungskommentar hinzugefügt oder der Task-Status ändert sich.
Der Schlüsselmechanismus besteht darin, dass Task-Parameter über das eva__ Präfix in den Alert Labels und Annotationen definiert werden. Dies ermöglicht die Anpassung des Verhaltens auf Ebene jeder einzelnen Alerting-Regel ohne Änderungen an der Plugin-Konfiguration.
Deployment via Container
Images sind auf Docker Hub verfügbar. Schneller Test:
podman run -it --rm --name alertmanager-evateam \
-p 8080:8080 \
hubbitus/alertmanager-evateam:latest
Für die Entwicklung wird ein prometheus + alertmanager + grafana Stack im Verzeichnis _DEV.scripts/prometheus-alertmanager-grafana mit podman-compose oder docker-compose bereitgestellt.
Konfiguration in Alertmanager
Fügen Sie einen Receiver hinzu:
receivers:
- name: 'data-evateam'
webhook_configs:
- url: 'https://alertmanager-evateam.your.domain'
send_resolved: true
Für gemeinsame Werte verwenden Sie alert_relabel_configs:
alerting:
alert_relabel_configs:
- target_label: eva__project
replacement: data-alerts
- target_label: eva__field__issue_type_name
replacement: Task
Wichtige Steuerungsfelder
eva__project: EvaTeam Projektschlüssel (z. B. data-alerts).eva__field__issue_type_name: Task-Typ (Task, Incident).eva__field__<field>: Beliebige Felder (assignee, priority, cf_env).eva__identification_field_name: Feld zur Suche nach bestehenden Tasks (Standard cf_alert_id).eva__identification_field_value: Identifier-Vorlage (${context.alert.hashCode()}).eva__bql_to_find_issue_for_update: BQL-Abfrage zur Aktualisierung des Tasks.eva__comment_in_present_issues: Kommentar-Vorlage.
Beispiel Alert-Regel:
- name: DATA
rules:
- alert: DataTest0
expr: 'promhttp_metric_handler_requests_total > 1'
labels:
severity: warning
eva__field__severity: High
annotations:
eva__project: data-alerts
eva__field__issue_type_name: Task
eva__field__cf_env: PROD
summary: DataTest0 summary
description: |
Some description VALUE: {{$value}}
Umgang mit Feldern mit Sonderzeichen und Templating
Für Feldnamen mit Leerzeichen oder Schrägstrichen wenden Sie Paare an:
annotations:
eva__field__name__1: 'Component/s'
eva__field__value__1: 'DQ-issues+alerts, DevOps+infrastructure'
eva__field__name__result: 'Final Result'
eva__field__value__result: 'Some result description'
Templates verwenden Kontext: eva__field__tags: '["severity:${context.field("severity")}"]'. Vollständige Liste der Variablen in AlertContext.
EvaTeam API Spezifika
Die EvaTeam API ist flexibel: Sie akzeptiert kwargs für beliebige Felder ohne striktes Schema. Die Validierung ist jedoch schwach – Tippfehler in Feldnamen werden ohne Fehler ignoriert. Umfassende Tests erforderlich: Verifizieren Sie die Task-Erstellung mit Zielfeldern vor dem Produktiveinsatz.
Bauen und Testen aus dem Quellcode
Build:
./gradlew build
java -jar build/quarkus-app/quarkus-run.jar
Nativer Build:
./gradlew build -Dquarkus.native.enabled=true \
-Dquarkus.package.jar.enabled=false \
-Dquarkus.native.container-build=true
Tests (Unit + Integration, erfordern live EvaTeam):
./gradlew test --info
./gradlew testNative --info
Wichtige Erkenntnisse
- Automatisiert den vollständigen Zyklus: vom Alertmanager Alert zum EvaTeam Task mit Updates bei Lösung.
- Flexible Konfiguration via eva__ Präfixe in Labels/Annotationen ohne Plugin-Bearbeitung.
- GraalVM nativer Build für geringen Ressourcenverbrauch.
- Erfordert gründliche Tests aufgrund schwacher EvaTeam API Validierung.
- Geeignet für Produktion: stabiler Betrieb seit sechs Monaten.
— Editorial Team
Noch keine Kommentare.