홈으로 돌아가기

Alertmanager-jira: Jira와 알림 통합

Alertmanager-jira — Prometheus/VictoriaMetrics 알림을 Jira와 통합하는 웹훅 플러그인. 유연한 필드 구성, 템플릿, 중복 제거 지원. Docker 배포, SRE 팀을 위한 구성 예제.

Jira를 위한 Alertmanager-jira Webhook: 전체 가이드
Advertisement 728x90

# Alertmanager와 Jira 통합: Quarkus 기반 유연한 Webhook 플러그인

Alertmanager-jira는 Alertmanager (Prometheus, VictoriaMetrics)를 위한 오픈소스 webhook 플러그인으로, Jira에서 이슈를 생성하고 관리합니다. 담당자 지정, 사용자 정의 필드, 설명 템플릿, JQL을 통한 중복 감지 등을 지원합니다. Quarkus로 구축되어 Docker/Podman으로 배포할 수 있습니다. 이 도구는 jiralert 같은 대안의 한계를 극복하며, 사용자 정의 스크립트 없이 티켓에 대한 완전한 제어를 제공합니다.

기존 솔루션의 문제점

prometheus-community의 Jiralert는 group_key를 기반으로 이슈를 생성하며, Go 템플릿을 사용하고 자동 해결을 지원합니다. 그러나 실제 사용 시 다음과 같은 한계가 있습니다:

  • 최소 구성: 기본 YAML 템플릿만 지원하며, 사용자 정의 필드나 동적 JQL 쿼리를 지원하지 않음.
  • 긴 group_key 해시가 Jira UI를 깨뜨림.
  • 개발 속도 느림: 2018년부터 열려 있는 버그, 업데이트가 드뭄.

기타 옵션으로는 PagerDuty 같은 엔터프라이즈 솔루션이나 사용자 정의 스크립트가 있습니다. Alertmanager-jira는 프로젝트/이슈 유형에 대한 기본값, 경고에서의 오버라이드, 기존 티켓에 대한 댓글 기능을 제공하여 유연성을 보장합니다.

Google AdInline article slot

컨테이너 배포

프로젝트는 hub.docker.com에 Docker 이미지를 제공합니다. Podman (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 구성

alertmanager.yml에 수신자 추가:

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

Prometheus/VictoriaMetrics에서 경고 구성

Jira 필드는 규칙의 레이블/어노테이션에서 jira__ 접두어를 사용하여 설정합니다. Groovy SimpleTemplate 템플릿을 지원합니다.

Google AdInline article slot

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}'

prometheus.yml의 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

특정 경고에서의 오버라이드가 우선합니다. 템플릿:

Google AdInline article slot
  • ${context.alert.fingerprint} — 경고 해시.
  • ${context.jiraProject.name} — 프로젝트 메타데이터.
  • 검색용 JQL: labels = "alert[${context.alert.hashCode()}]") AND statusCategory != Done.

기술 구현

Java + Groovy (Quarkus), Atlassian Jira SDK로 구축. 테스트: 파싱을 위한 단위 테스트, 외부 Jira 인스턴스에서의 통합 테스트. CI는 Jira 라이선스 제한으로 테스트를 실행하지 않음 — 배포된 서버에서 수동 실행이 필요합니다.

개선 가능: 임시 라이선스나 모의 서버를 사용한 CI 테스트 통합.

주요 기능

  • 필드 유연성: jira__ 접두어와 템플릿을 통한 임의의 사용자 정의 필드, 레이블, 컴포넌트.
  • 중복 제거: 댓글 옵션이 있는 기존 이슈 JQL 검색.
  • 자동화: 자동 티켓으로 DevOps/SRE/ITSM의 MTTR 단축.
  • 프로덕션 준비 완료: 데이터 플랫폼에서 2년간 프로덕션 사용.
  • 오픈소스: Apache 2.0, GitHub에서 이슈/PR 관리.

— Editorial Team

Advertisement 728x90

다음 읽기