토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

프로메테우스 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


여기서는 각기 다른 alert와 Alertmanager 설정 파일(alertmanager.yml) 예제를 다룬다. 모든 예제는 Go 템플릿 시스템을 사용한다.

목차


Customizing Slack notifications

이 예제에선 전달받은 alert를 처리하는 방법이 나와있는 조직 내 위키 URL을 전송하도록 Slack notification을 커스텀했다.

global:
  # 이 URL은 파일에 넣는 것도 가능하다.
  # Ex: `slack_api_url_file: '/etc/alertmanager/slack_url'`
  slack_api_url: '<slack_webhook_url>'

route:
  receiver: 'slack-notifications'
  group_by: [alertname, datacenter, app]

receivers:
- name: 'slack-notifications'
  slack_configs:
  - channel: '#alerts'
    text: 'https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}'

Accessing annotations in CommonAnnotations

이 예제에선 Alertmanager가 전송하는 데이터의 CommonAnnotations에 저장돼 있는 summarydescription을 이용해 Slack receiver로 전송할 텍스트를 또 한번 커스텀한다.

Alert

groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: page
    # 여기서는 alert의 애노테이션과 레이블 필드에 프로메테우스 템플릿을 적용한다.
    annotations:
      description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.'
      summary: 'Instance {{ $labels.instance }} down'

Receiver

- name: 'team-x'
  slack_configs:
  - channel: '#alerts'
    # 여기서는 Alertmanager 템플릿을 적용한다.
    text: "<!channel> \nsummary: {{ .CommonAnnotations.summary }}\ndescription: {{ .CommonAnnotations.description }}"

Ranging over all received Alerts

마지막으로, 이전 예제와 같은 alert를 가정하고, Alertmanager에서 수신한 전체 alert를 범위로 지정해서 각각의 애노테이션 summary와 description을 새로운 라인에 출력하도록 receiver를 커스텀한다.

Receiver

- name: 'default-receiver'
  slack_configs:
  - channel: '#alerts'
    title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
    text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"

Defining reusable templates

첫 번째 예제로 돌아가서, 여러 줄에 걸쳐 있는 복잡한 템플릿을 사용하는 대신, 전용 이름과 함께 템플릿이 담겨있는 파일을 제공해도 된다. 이 파일은 Alertmanager가 로드해줄 거다. /alertmanager/template/myorg.tmpl 아래에 파일을 하나 만들고 “slack.myorg.txt”라는 이름으로 템플릿을 생성해라:

{{ define "slack.myorg.text" }}https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}{{ end}}

이제 설정에선 “text” 필드에 템플릿 이름을 지정하고, 커스텀 템플릿 파일의 경로를 제공해주면 된다:

global:
  slack_api_url: '<slack_webhook_url>'

route:
  receiver: 'slack-notifications'
  group_by: [alertname, datacenter, app]

receivers:
- name: 'slack-notifications'
  slack_configs:
  - channel: '#alerts'
    text: '{{ template "slack.myorg.text" . }}'

templates:
- '/etc/alertmanager/templates/myorg.tmpl'

이 예제는 이 블로그 포스트에서 더 자세히 다루고 있다.


Next :
Alertmanager Management API
Alertmanager management API 가이드

전체 목차는 여기에 있습니다.

<< >>

TOP