Zurück zur Startseite

Alertmanager-evateam: Integration mit EvaTeam

alertmanager-evateam-Plugin automatisiert Aufgabenerstellung und -Updates in EvaTeam basierend auf Alertmanager-Alerts. Unterstützt flexible Konfiguration über eva__-Präfixe in Labels und Annotationen, nativer GraalVM-Build. Anleitungen zu Deployment, Konfiguration und Tests.

alertmanager-evateam-Plugin für EvaTeam und Prometheus
Advertisement 728x90

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:

Google AdInline article slot
  • 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.

Google AdInline article slot

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:

Google AdInline article slot
- 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

Advertisement 728x90

Weiterlesen