Grafana でメール通知

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは。サイオステクノロジー OSS サポート担当 山本 です。

以前の投稿で扱ったとおり、Grafana は他のツールが収集したデータを使ってグラフを描画することがよく知られる機能ですが、実は Grafana ではその他のツールで収集したデータを使って通知を行うこともできます。

今回は、そんな Grafana の通知機能を確認していきます。

■Grafana の通知機能

先述のとおり Grafana には通知機能が備わっています。それも、ドキュメントを確認すると、多岐に渡る通知方法がサポートされています。

今回は Grafana 上で Prometheus をデータソースとして扱えるようになった状態から、Prometheus のデータソースを使用してメール通知をするまでに必要な設定を確認してみます。

Grafana の導入と Promehteus との連携の設定につきましては、以前の投稿を参照してください。

Grafana を使ってみる

■メール通知の設定

まずは通知方法を決定し、その通知方法を使うために必要な設定を行いましょう。

今回はメールによる通知を行うので、Grafana でメールを扱えるようにします。
設定ファイル /etc/grafana/grafana.ini を開き、以下の項目を設定してください。
(環境や設定によっては他の項目の設定も必要になる場合があります。)

・([smtp]) enabled = true
・([smtp]) host = <メールサーバの IP アドレス or ホスト名>:<ポート>

なお、これらの項目はデフォルトの grafana.ini に記載されていますが、行頭に “;” がついています。
行頭に “;” がある行はコメント行と扱われ設定としては読み込まれないため、元々記述されている設定項目を使って設定する場合は行頭の “;” を忘れずに削除してください。

grafana.ini 設定例

 :
#################################### SMTP / Emailing ##########################
[smtp]
enabled = true
host = localhost:25
 :

設定を行ったら、以下のコマンドを実行し Grafana を再起動します。

# sudo systemctl restart grafana-server

メール通知以外の通知方法の設定や、その他の設定項目などについては公式ドキュメントを参照してください。
再起動が完了したら、Grafana のインターフェースにアクセスし、残りの設定を行っていきます。

(URL): https://(IP アドレス or ホスト名):3000

■通知方法の設定

Grafana のインターフェース上では、「通知の方法や通知先」と「通知条件」を設定します。

まずは通知方法の設定をしていきます。通知方法は「Alerting – Notification channels」から設定することができます。
画面中央の「Add channel」ボタンを押下し、新規の通知設定を追加します。
(既に通知設定が登録されている場合、このページには通知設定一覧が表示されます。その場合、新規の通知設定は画面右側に表示される「New channel」ボタンから行います。)

1_add_channel

今回のメール通知の設定では、開いた画面で以下の項目を設定します。

・Name : <任意の名前>
Type : Email
Email addresses : <通知先メールアドレス> (“;” で区切ることで複数のメールアドレス登録可)

2_add_channel_2

設定を行ったら、画面下部の「Send Test」ボタンを押下すると、”Email addresses” に設定したアドレスに以下のようなメールが届くはずです。

3_testmail

テストメールが届かない場合は、当然実際の通知メールも届きません。Grafana の設定かメールサーバの設定、あるいはネットワークなどに問題がある可能性があるので、問題を確認・解決してから再度確認しましょう。

問題がなければそのまま「Send Test」ボタンの隣にある「Save」ボタンを押下して設定を保存します。

■通知条件の設定

通知条件はダッシュボード上のパネルから設定することができます。
Dashboards – Manage」から作成したダッシュボードの呼び出し、または「Create – Dashboard」から新規ダッシュボードを作成します。
ダッシュボードの編集画面では新規パネルを作成し、「Add Query」からパネルの設定を行なっていきます。

4_add_panel

まず、最初の 「Queries」 タブでは、監視対象とするクエリの登録をします。
今回は Prometheus の node_exporter の metrics、”node_filesystem_avail_bytes” を使って確認をしてみます。

・A : node_filesystem_avail_bytes{mountpoint=”/”} (※環境に合わせて適宜変更してください)

5_add_panel_queries

続いて、画面左のアイコンから「Visualization」タブに移ります。
現在、Grafana ではグラフ表示されたパネルしか通知機能に対応していないため、一番上の設定項目 “Visualization” が “Graph” になっていることを確認します。”Visualization” が “Graph” 以外だった場合、”Graph” に変更します。

6_add_panel_visualization

最後に、画面左のアイコンから「Alert」タブに移動し、中央にある「Create Alert」ボタンを押下します。すると設定項目が表示されるので、通知の条件や内容、通知方法を設定していきます。
例として、以下のように各項目を設定します。

・(Rule) Name : <任意の名前>
・(Rule) Evaluate every : 1m
・(Rule) for : 3m
Conditions : WHEN “last()” OF “query(A,5m,now)” “IS BELOW” “<適当な閾値 (現在の “/” の空き容量よりも少し小さい値)>”
Send to : <“Notification channels” で設定した名前>
・Message : <任意のメッセージ>

7_add_panel_alert

“Conditions” 項目内には設定箇所が複数ありますが、それぞれの箇所では以下の内容を設定します。

 ・”last()” の箇所 : 値の参照の仕方 (“最新値”、”平均値”、”最大値” など)
 ・”query(A,5m,now)” の箇所 : 判定に使用する 「Queries」タブ上のクエリの記号時間の範囲
 ・”IS BELOW” の箇所 : 条件 (“以上”、”以下” など)
 ・”<適当な閾値>” の箇所 : 閾値

なお、”Conditions” を設定すると画面上部のグラフ上に設定した閾値が表示されるようになります
この閾値は “Conditions” で設定する以外にも、グラフの右側のマーク付近をドラッグすることで調整することもできます。

設定が完了したら、ダッシュボードの保存を行うと通知設定は完了です。

8_save

現在設定されている通知設定については、当該のダッシュボード以外でも「Alerting – Alert Rules」から一覧で確認することができます。

9_alert_rules

■通知の確認

それでは、通知が機能するのか確認してみましょう。

まずは「Dashboards – Manage」から通知を設定したダッシュボードの画面を開きます。この手順ではこのダッシュボード画面を数回更新する必要があるので、折角なので画面右上の設定でダッシュボードの自動更新を有効にしてみましょう。
同時に、通知設定を行なったパネルのタイトルの左側に緑色のハートマークが表示されていることも確認しましょう。

10_notificate_check_1

今回の例では “node_filesystem_avail_bytes (ファイルシステムの空き領域)” が一定値以下になった際に通知を行うように設定したので、例として以下のようなコマンドを実行して適当なサイズのダミーファイルを作成し、通知条件を満たすようにします。

# fallocate -l 500MiB dummy_file

上記コマンド実行後 Grafana のダッシュボードが更新されると、当該のグラフの値が大きく動いているはずです。

上手く通知条件を満たす状態になっていれば、通知の状態が「PENDING」状態に変化しパネルのタイトルの左側のハートマークは黄色になります。
更にグラフ上では状態が変化した時間に色付きの点線が表示されます。この点線の色は状態を示すハートマークの色と一致する色で描かれますので、この「PENDING」状態に変化した箇所には黄色い点線が表示されます。
(状態変化の判定は「Alert」タブで “Evaluate every” に設定した間隔で判定されるため、実際に条件を満たしたタイミングよりも遅く状態変化する可能性があります。)

11_notificate_check_2

通知条件を満たした状態を維持すると、3分 (「Alert」タブで “for” に設定した時間) が経過した時点で、通知の状態は「ALERTING」状態となりパネルのタイトルの左側のハートマークが割れた赤色のものに変化し、この時点で通知メールが送信されます。

12_notificate_check_3
13_alertmail_sample

無事に通知メールの受信が確認できたら、Grafana でメール通知を行う方法の確認手順は終了です。
確認を終えたら、忘れずに今回の手順で作成したダミーファイルを削除しましょう。

# rm -f dummy_file

■最後に

今回は Grafana でメール通知を行う方法を見てきました。

今回サンプルで使用した Prometheus には元々通知機能が備わっているため、わざわざ Grafana 側でやる必要はないと言えばないですが、設定方法の違いや管理する範囲の違いは勿論、使用できる通知方法にも差異がありますので、場合によっては Grafana 側で通知を行うように設定する意味もあるかと思います。
また、各種 DB 等の通知機能が備わっていないデータソースを使って通知を行いたいと考えている場合には、その恩恵を大きく受けることができるでしょう。

なお、公式ドキュメントによると現在 Grafana で通知機能を利用できるデータソースには制限があるとのことですが、プラグインで通知機能に対応しているものもあるようです。
Grafana の通知機能を使おうと思ったけど、上記ドキュメントを見たら対応していなかった!と思っても、一度プラグインを確認してみることをお勧めします。

アバター画像
About 山本 54 Articles
元サーバサイドエンジニアのサポートエンジニア。「物事は理解できれば活路が見出せる可能性がある」という信条のもと、今日も石橋を叩く。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる