概要
前回 routes を設定する方法を紹介しました
今回はメールの本文やタイトルをカスタムする方法を紹介します
環境
- Gitlab 16.3.6
- Alertmanager 0.25.0
gitlab.rb
alertmanager['receivers']
の email_configs 内にある headers.subject, text を編集します
デフォルトの html メールは無効にするためブランクを設定しておきます
メールの内容には golang のテンプレート構文が使えます
注意するのは変数の定義で golang ではダラー1つで定義しますが今回は docker-compose 内でテンプレートを定義するためダラーを2つにする必要があります
使用できるテンプレート文字列やテンプレート構文に関しては各種公式を参考にしてください
alertmanager['listen_address'] = '0.0.0.0:9093'
alertmanager['receivers'] = [
{
name: 'email',
email_configs: [
to: 'your_to@mail',
from: 'your_from@mail',
smarthost: 'smtp.ess.nifcloud.com:465',
auth_username: 'your_access_key',
auth_password: 'your_secret_key',
require_tls: false,
headers: {
subject: '[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] ({{ $$alerts := "" }}{{ $$instance_id := (index .Alerts 0).Labels.instance_id }}{{ range .Alerts }}{{ $$alerts = (printf "%v %v" $$alerts .Labels.alertname) }}{{ end }}{{ $$instance_id }} ->{{ $$alerts }})'
},
html: '',
text: '{{ range .Alerts.Firing }}{{ range .Annotations.SortedPairs }} - {{ .Name }} = {{ .Value }}{{ "\n" }}{{ end }}{{ end }}',
send_resolved: true
]
}
]
alertmanager['routes'] = [
{
receiver: 'email',
group_wait: '30s',
group_interval: '5m',
repeat_interval: '4h',
matchers: [ 'instance_id = hoge' ]
}
]
custom.rules
groups:
- name: Custom
rules:
- alert: RedisDown
expr: avg_over_time(redis_up[5m]) * 100 < 50
labels:
severity: critical
instance_id: hoge
annotations:
description: The Redis service is not responding for more than 50% of the time for 5 minutes.
summary: The Redis service is not responding
動作確認
実際に redis をダウンさせるとカスタムした本文とタイトルでテキストメールが届くと思います
最後に
Gitlab 内の alertmanager のメール本文をカスタムする方法を紹介しました
golang の知識が必要になると alertmanager に送信させる json の内容も把握する必要があります
alertmanager に送信される json 情報はどこかで確認することができるのだろうか
0 件のコメント:
コメントを投稿