Notificationテンプレートサンプル - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

このドキュメントでは、様々なアラートの設定と対応するAlertmanagerの設定ファイル(alertmanager.yml)の例を示す。各設定で、Go templatingを利用している。

Slackへの通知のカスタマイズ

この例では、送信されたアラートの対処方法が書かれた組織のWikiへのURLをSlackへの通知が送るようにカスタマイズされている。

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: 'https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}'

CommonAnnotationsのアノテーションの取得

この例では、Slackレシーバーに送られるテキストを、CommonAnnotationsに入っているsummarydescriptionを取得してカスタマイズする。

アラート

groups:
- name: Instances
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: page
    # Prometheus templates apply here in the annotation and label fields of the alert.
    annotations:
      description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.'
      summary: 'Instance {{ $labels.instance }} down'

レシーバー

- name: 'team-x'
  slack_configs:
  - channel: '#alerts'
    # Alertmanager templates apply here.
    text: "<!channel> \nsummary: {{ .CommonAnnotations.summary }}\ndescription: {{ .CommonAnnotations.description }}"

Ranging over all received Alerts

直前の例と同じアラートを仮定して、Alertmanagerから受け取る全てのアラートを列挙するようにカスタマイズする。

Receiver

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

再利用可能なテンプレートの定義

複数行に渡る複雑なテンプレートを避けるために、名前付きのテンプレートを含み、Alertmanagerに読み込まれるテンプレートを含むファイルを提供することが出来る。 /alertmanager/template/myorg.tmplというファイルを作り、"slack.myorg.text"という名前のテンプレートを作成する。

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

参考リンク

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム