홈으로 돌아가기

Alertmanager-evateam: EvaTeam과의 통합

alertmanager-evateam 플러그인은 Alertmanager 경고를 기반으로 EvaTeam에서 작업 생성 및 업데이트를 자동화합니다. 라벨 및 어노테이션의 eva__ 접두어를 통해 유연한 구성 지원, 네이티브 GraalVM 빌드. 배포, 구성 및 테스트 지침.

EvaTeam 및 Prometheus용 alertmanager-evateam 플러그인
Advertisement 728x90

Alertmanager 와 EvaTeam 연동: 작업 자동화를 위한 alertmanager-evateam 플러그인

alertmanager-evateam 플러그인은 Prometheus 또는 VictoriaMetrics 의 Alertmanager 와 EvaTeam 트래커 간의 직접적인 연동을 보장합니다. 알람이 발생하면 EvaTeam 프로젝트에 작업이 자동으로 생성됩니다. 알람이 해결되면 댓글이 추가되거나 상태가 업데이트됩니다. 이 솔루션은 6 개월 이상 프로덕션 환경에서 배포되어 오류 없이 안정성을 입증했습니다.

Java 로 구현되었으며 Quarkus 프레임워크와 네이티브 GraalVM 컴파일을 사용하여 리소스 소비를 최소화하고 시작 속도를 가속화했습니다.

연동 워크플로우

알람 처리 스키마는 다음 단계를 포함합니다:

Google AdInline article slot
  • Prometheus 또는 VictoriaMetrics 메트릭 수집.
  • Alertmanager 가 규칙을 평가하고 알람을 생성하며 webhook_config 를 통해 플러그인 엔드포인트로 전송합니다.
  • 플러그인이 알람 JSON 을 파싱하여 EvaTeam 에 새 작업을 생성하거나 기존 작업을 업데이트합니다.
  • send_resolved: true 인 경우 해결 댓글이 추가되거나 작업 상태가 변경됩니다.

핵심 메커니즘은 작업 매개변수가 알람 레이블 및 주석의 eva__ 접두사를 통해 정의된다는 점입니다. 이를 통해 플러그인 구성 변경 없이 각 알람 규칙 수준에서 동작을 커스터마이징할 수 있습니다.

컨테이너를 통한 배포

이미지는 Docker Hub 에서 사용할 수 있습니다. 빠른 테스트:

podman run -it --rm --name alertmanager-evateam \
    -p 8080:8080 \
    hubbitus/alertmanager-evateam:latest

개발을 위해 _DEV.scripts/prometheus-alertmanager-grafana 디렉토리에 podman-compose 또는 docker-compose 를 위한 prometheus + alertmanager + grafana 스택이 제공됩니다.

Google AdInline article slot

Alertmanager 구성

수신자를 추가합니다:

receivers:
  - name: 'data-evateam'
    webhook_configs:
      - url: 'https://alertmanager-evateam.your.domain'
        send_resolved: true

공통 값에는 alert_relabel_configs 를 사용하십시오:

alerting:
  alert_relabel_configs:
    - target_label: eva__project
      replacement: data-alerts
    - target_label: eva__field__issue_type_name
      replacement: Task

주요 제어 필드

  • eva__project: EvaTeam 프로젝트 키 (예: data-alerts).
  • eva__field__issue_type_name: 작업 유형 (Task, Incident).
  • eva__field__<field>: 임의 필드 (assignee, priority, cf_env).
  • eva__identification_field_name: 기존 작업 검색을 위한 필드 (기본값 cf_alert_id).
  • eva__identification_field_value: 식별자 템플릿 (${context.alert.hashCode()}).
  • eva__bql_to_find_issue_for_update: 작업 업데이트를 위한 BQL 쿼리.
  • eva__comment_in_present_issues: 댓글 템플릿.

알람 규칙 예시:

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

특수 문자 및 템플릿이 있는 필드 처리

공백이나 슬래시가 있는 필드 이름의 경우 쌍을 적용합니다:

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'

템플릿은 컨텍스트를 사용합니다: eva__field__tags: '["severity:${context.field("severity")}"]'. AlertContext 의 전체 변수 목록을 참조하십시오.

EvaTeam API 특정 사항

EvaTeam API 는 유연합니다: 엄격한 스키마 없이 모든 필드에 대한 kwargs 를 허용합니다. 그러나 유효성 검사는 약합니다. 필드 이름의 오타는 오류 없이 무시됩니다. 필수 테스트: 프로덕션 전에 대상 필드로 작업 생성을 확인하십시오.

소스에서 빌드 및 테스트

빌드:

./gradlew build
java -jar build/quarkus-app/quarkus-run.jar

네이티브 빌드:

./gradlew build -Dquarkus.native.enabled=true \
    -Dquarkus.package.jar.enabled=false \
    -Dquarkus.native.container-build=true

테스트 (단위 + 통합, 실시간 EvaTeam 필요):

./gradlew test --info
./gradlew testNative --info

주요 요약

  • Alertmanager 알람부터 해결 시 업데이트까지 EvaTeam 작업의 전체 사이클을 자동화합니다.
  • 플러그인 편집 없이 레이블/주석의 eva__ 접두사를 통해 유연하게 구성 가능합니다.
  • 리소스 소비가 적은 GraalVM 네이티브 빌드.
  • EvaTeam API 유효성 검사가 약하므로 철저한 테스트가 필요합니다.
  • 프로덕션에 적합: 6 개월 동안 안정적으로 작동.

— Editorial Team

Advertisement 728x90

다음 읽기