# Integrace Alertmanageru s Jira: flexibilní webhookový plugin na Quarkus
Alertmanager-jira — open-source webhook plugin pro Alertmanager (Prometheus, VictoriaMetrics), který vytváří a spravuje úkoly v Jira. Podporuje přiřazování vykonavatelů, vlastní pole, šablony popisů a vyhledávání duplicit podle JQL. Vyvinuto na Quarkus, nasaditelné v Docker/Podman. Nástroj řeší problémy omezených alternativ jako jiralert, zajišťuje plnou kontrolu nad tikety bez vlastních skriptů.
Problémy stávajících řešení
Jiralert od prometheus-community vytváří úkoly podle group_key, používá Go šablony, podporuje automatické uzavírání. Na praxi se však projevují omezení:
- Minimální nastavení: základní šablony v YAML, absence podpory vlastních polí a dynamických JQL dotazů.
- Dlouhé haše group_key ničí UI Jira.
- Pomalý vývoj: otevřené chyby od roku 2018, vzácné aktualizace.
Další varianty — enterprise řešení jako PagerDuty nebo vlastní kód. Alertmanager-jira nabízí flexibilitu: výchozí hodnoty pro projekty/typy úkolů, přepsání v alertech, komentáře k existujícím tiketům.
Nasazení v kontejneru
Projekt je dodáván s Docker obrazy na hub.docker.com. Příklad spuštění s Podman (analogicky 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
Nastavení Alertmanageru
Do alertmanager.yml přidejte receiver:
receivers:
- name: 'jira'
webhook_configs:
- url: 'http://your-host:8080'
send_resolved: true
Konfigurace alertů v Prometheus/VictoriaMetrics
Pole Jira se zadávají předponou jira__ v labels/annotations pravidel. Podporovány jsou šablony Groovy SimpleTemplate.
Příklad 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}'
Výchozí hodnoty v prometheus.yml přes 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
Přepsání v konkrétních alertech má prioritu. Šablony:
${context.alert.fingerprint}— haš alertu.${context.jiraProject.name}— metadata projektu.- JQL pro vyhledávání:
labels = "alert[${context.alert.hashCode()}]") AND statusCategory != Done.
Technická realizace
Na bázi Java + Groovy (Quarkus), Atlassian Jira SDK. Testy: modulární pro parsování, integrační na externí Jira instanci. CI nespouští testy kvůli licenčním omezením Jira — vyžaduje manuální spuštění na nasazeném serveru.
Možná zlepšení: integrace testů do CI přes dočasné licence nebo mock servery.
Co je důležité
- Flexibilita polí: libovolná vlastní pole, labels, components přes předponu
jira__a šablony. - Deduplikace: JQL vyhledávání existujících úkolů s možností komentářů.
- Automatizace: snížení MTTR v DevOps/SRE/ITSM díky auto-tiketům.
- Připravenost pro produkci: 2 roky v provozu na data platformě.
- Open-source: Apache 2.0, GitHub pro issues/PR.
— Editorial Team
Zatím žádné komentáře.