Zurück zur Startseite

Alertmanager-jira: Integration von Warnungen mit Jira

Alertmanager-jira — Webhook-Plugin zur Integration von Prometheus/VictoriaMetrics-Warnungen mit Jira. Unterstützt flexible Feldkonfiguration, Vorlagen und Deduplizierung. Bereitstellung in Docker, Konfigurationsbeispiele für SRE-Teams.

Alertmanager-jira Webhook für Jira: vollständiger Leitfaden
Advertisement 728x90

# Alertmanager mit Jira integrieren: Flexibles Webhook-Plugin auf Quarkus

Alertmanager-jira ist ein Open-Source-Webhook-Plugin für Alertmanager (Prometheus, VictoriaMetrics), das Issues in Jira erstellt und verwaltet. Es unterstützt die Zuweisung von Assignees, benutzerdefinierte Felder, Vorlagen für Beschreibungen und Duplikatenerkennung über JQL. Auf Quarkus aufgebaut, wird es über Docker/Podman bereitgestellt. Dieses Tool behebt die Einschränkungen von Alternativen wie jiralert und bietet volle Kontrolle über Tickets ohne benutzerdefinierte Skripte.

Probleme mit bestehenden Lösungen

Jiralert von prometheus-community erstellt Issues basierend auf group_key, verwendet Go-Templates und unterstützt Auto-Resolution. In der Praxis hat es jedoch folgende Einschränkungen:

  • Minimale Konfiguration: einfache YAML-Templates, keine Unterstützung für benutzerdefinierte Felder oder dynamische JQL-Abfragen.
  • Lange group_key-Hashes zerstören die Jira-Benutzeroberfläche.
  • Langsame Entwicklung: offene Bugs seit 2018, seltene Updates.

Andere Optionen umfassen Enterprise-Lösungen wie PagerDuty oder benutzerdefinierte Skripte. Alertmanager-jira bietet Flexibilität: Standardwerte für Projekte/Issue-Typen, Überschreibungen in Alerts und Kommentare zu bestehenden Tickets.

Google AdInline article slot

Bereitstellung in einem Container

Das Projekt enthält Docker-Images auf hub.docker.com. Beispielstart mit Podman (ähnlich wie Docker):

podman run -it --rm --name alertmanager-jira \
    --env JIRA_URL=https://your-jira.com \
    --env JIRA_USERNAME=service-account \
    --env JIRA_PASSWORD=your-token \
    -p 8080:8080 \
        hubbitus/alertmanager-jira:latest

Alertmanager konfigurieren

Fügen Sie einen Receiver in alertmanager.yml hinzu:

receivers:
  - name: 'jira'
    webhook_configs:
      - url: 'http://your-host:8080'
        send_resolved: true

Alerts in Prometheus/VictoriaMetrics konfigurieren

Jira-Felder werden mit dem Präfix jira__ in Labels/Annotations von Rules gesetzt. Groovy SimpleTemplate-Templates werden unterstützt.

Google AdInline article slot

Beispiel prometheus-rules.yml:

groups:
- name: example
  rules:
  - alert: HighCPU
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 1m
    labels:
      severity: critical
      jira__field__severity: High
    annotations:
      summary: "High CPU on {{ $labels.instance }}"
      description: "CPU usage above 80%."
      jira__project_key: OPS
      jira__issue_type_name: Incident
      jira__field__assignee: oncall-sre
      jira__field__labels: 'monitoring, cpu, alert'
      jira__field__component_s: 'DevOps+infrastructure, DQ-issues+alerts'
      jira__field__name__1: 'Custom Field'
      jira__field__value__1: 'Some dynamic value: ${context.alert.severity}'

Standardwerte in prometheus.yml über alert_relabel_configs:

alerting:
  alert_relabel_configs:
    - source_labels: [__alert_severity]
      target_label: jira__field__severity
      regex: critical;High
    - target_label: jira__project_key
      replacement: OPS

Überschreibungen in spezifischen Alerts haben Vorrang. Templates:

Google AdInline article slot
  • ${context.alert.fingerprint} — Alert-Hash.
  • ${context.jiraProject.name} — Projekt-Metadaten.
  • JQL für Suche: labels = "alert[${context.alert.hashCode()}]") AND statusCategory != Done.

Technische Umsetzung

Aufgebaut auf Java + Groovy (Quarkus), Atlassian Jira SDK. Tests: Unit-Tests für Parsing, Integrationstests auf einer externen Jira-Instanz. CI führt keine Tests aus aufgrund von Jira-Lizenzbeschränkungen – erfordert manuelle Ausführungen auf einem bereitgestellten Server.

Mögliche Verbesserungen: Tests in CI integrieren mit temporären Lizenzen oder Mock-Servern.

Wichtige Funktionen

  • Flexibilität bei Feldern: beliebige benutzerdefinierte Felder, Labels, Komponenten über jira__-Präfix und Templates.
  • Deduplizierung: JQL-Suche nach bestehenden Issues mit Kommentaroption.
  • Automatisierung: reduziert MTTR in DevOps/SRE/ITSM durch Auto-Tickets.
  • Produktionsreif: 2 Jahre in Produktion auf einer Datenplattform.
  • Open-Source: Apache 2.0, GitHub für Issues/PRs.

— Editorial Team

Advertisement 728x90

Weiterlesen