5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Grafana: Prometheusで取り込んだデータを監視してLINEにアラートメッセージを出してみた

Posted at
実施環境:
Linux
[root@testhost ~]# uname -a
Linux testhost 4.18.0-448.el8.x86_64 #1 SMP Wed Jan 18 15:02:46 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# cat /etc/redhat-release
CentOS Stream release 8
[root@testhost ~]# yum list installed | grep grafana
grafana-enterprise.x86_64                          10.0.3-1  

prometheus:2.46.0.linux-amd64
node_exporter:1.6.1.linux-amd64

iOS 16.7.2
LINE 13.18.1

0. 概要

Grafana は、主にデータの可視化に使用されるオープンソースのソフトウェアです。
ですが、実は Grafana は、データからグラフや表を作るだけではなく、データを監視してアラートを出すことも出来たりします。

今回はシステム監視ソフトウェアの Prometheus と LINE のサービスの1つである LINE Notify を用いて、 CPU 使用率が一定の値を超えた際に LINE にアラートメッセージを出すシステムを作成してみたいと思います。

1. 事前準備

Prometheus と Grafana のインストールと連携については、以下の過去記事を参照してください。

Linux: システム監視ソフト「Prometheus」を無料インストールしてみた

Linux: データ可視化ソフト「Grafana」を無料インストールしてみた+「Prometheus」と連携させてみた

Line Notify のトークン発行については、以下の過去記事を参照してください。

LINE: LINE Notifyを用いてWindowsのcurlコマンドからメッセージを投稿する

Prometheus における CPU 使用率の監視方法については、以下の過去記事を参照してください。

Prometheus: CPU、メモリ、ディスクの使用率の算出方法+Grafanaでの算出方法

2. アラートの作成

まずは、アラート本体を作成します。
メニュー画面から、「 Alerting 」⇒「 Alert rules 」を選択します。

WS000709.JPG

「 Create alert rule 」を押します。

WS000710.JPG

すると、アラートの作成画面が表示されます。

アラート名は何でもよいのですが、今回は「 test_alert 」にします。

WS000712.JPG

次の項目はデフォルトの「 Grafana managed alert 」のままにします。

WS000713.JPG

アラート条件については、次のように指定します。

まず、監視する値( A )については、値の取得元を「 Prometheus 」、期間を「 now-1m to now (過去1分)」とし、以下の過去記事を参考として CPU 使用率を指定します。

WS000718.JPG

集計値( B )については、「 Last A ( A の最新値 )」にします。
Mode は「 Strict (数値でない場合は NaN として扱う)」のままでよいです。

WS000720.JPG

判定条件( C )については、「 B is above 20 ( B が 20 を超過した場合アラート)」にします。

WS000723.JPG

次に、ルールの所属するグループを選択します。
今回はまだグループを作成していませんので、 Folder に「 test_alert_folder 」と、 Evaluation group に「 test_alert_group 」と入力し、それぞれ Enter キーを押してフォルダ「 test_alert_folder 」とグループ「 test_alert_group 」を作成します。

WS000724.JPG

Evaluate every (監視の実行間隔)には「 1m (1分ごと)」を指定します。
for (判定から発行までの待機時間)には「 5m (5分間)」を指定します。

WS000726.JPG

for は「判定条件( C )が成立してから実際にアラートが発行されるまでの待機時間」を表します。
この待機時間の間に再度判定が行われ条件が成立していなかったら、アラートの発行は取りやめられます。
判定条件が成立した時点でアラートを発行したければ、 for に 0 を指定すれば即座にアラートが発行されます。

詳細設定については今回は設定しません。

WS000727.JPG

ラベルは後で使いますが、今は一旦スルーします。

WS000729.JPG

ここまで設定したら、「 Save rule and exit 」を押して作成したアラートを保存します。

WS000800.JPG

これで、アラートが作成できました。

WS000732.JPG

3. アラートの確認

さて、では実際にアラートが発行されるところを確認してみましょう。
「目」のマークが書かれているボタンを押せば、アラートの状態が確認できます。

WS000732.JPG

判定条件が満たされていない状態だと、以下のようにステータスは「 Normal 」になっています。

WS000733.JPG

今回は CPU 使用率を監視しているので、以下のように yes コマンドをいくつか実行して CPU に負荷をかけます。

Linux
[testuser@testhost ~]$ yes > /dev/null

yes コマンドは Linux のコマンドの1つで、コマンドの実行を中断するまで指定した文字列を出し続けるコマンドです。
引数を指定しない場合は、文字「 y 」を出し続けます。
本来は YES / NO の選択肢が出た際に自動で YES を選び続けるためのコマンドですが、このようにサーバーに負荷をかける際などにも利用できます。

判定条件が満たされた直後は、以下のように「 Pending 」というステータスになります。
この状態で判定条件が満たされなくなれば、ステータスは「 Normal 」に戻ります。

WS000763.JPG

判定条件が満たされた状態で一定時間(今回は5分間)たつと、いよいよ「 Alerting 」ステータスになります。

WS000764.JPG

4. アラートメッセージ出力先の登録

さて、アラートは発行されましたが、この段階ではどこにもアラートメッセージは出せていません。
一応 Grafana のデフォルトとしてメールでのアラートメッセージ出力が設定されているのですが、メールアドレスも何も設定していないため機能していない状態です。
これでは、せっかくの監視もほとんど意味をなしません。

アラートメッセージを出力するためには、出力先の情報を登録した後、先ほどスルーした「ラベル」を用いて、アラートと出力先を紐づける必要があります。
まずは、アラートメッセージ出力先の情報を登録しましょう。
今回は、 LINE を出力先として登録します。

「 Alerting 」から「 Contact points 」を選択します。

WS000803.JPG

「 Add contact point 」を選択します。

WS000753.JPG

すると、アラートメッセージ出力先の新規登録画面が表示されます。

Alertmanager はデフォルトの「 Grafana 」のままにします。

WS000754.JPG

登録名は「 TEST_POINT_LINE 」にしましょう。

WS000755.JPG

Integration には「 LINE 」を選択し、 Token には LINE Notify で発行したトークンを入力します。
一通り入力が終わったら、「 TEST 」を押します。

WS000756.JPG

テスト画面が開くので、 Notification message は「 Predefined 」のまま、「 Send test notification 」を押します。

WS000757.JPG

テストに成功したならば、 LINE のトークルームに以下のようなメッセージが投稿されているはずです。

WS000798.JPG

問題なければ、「 Save contact point 」を押して登録内容を保存します。

WS000759.JPG

5. アラートメッセージ出力先とラベルの紐づけ

次に、先ほど登録したアラートメッセージ出力先とラベルを紐づけます。
「 Alerting 」から「 Notification policies 」を選択します。

WS000760.JPG

デフォルト設定を編集してもよいのですが、今回は新しく設定を作りましょう。
「 New nested policy 」を押します。

WS000765.JPG

ラベルの判定条件には、「 test_label = test_value 」を指定しましょう。
Contact point には先ほど登録した「 TEST_POINT_LINE 」を選択します。

WS000767.JPG

その他の設定はデフォルトのままでかまいません。
「 Save policy 」を押して設定を保存します。

WS000768.JPG

6. アラートとラベルの紐づけ

さて、引き続きアラートとラベルも紐づけます。
「 Alerting 」から「 Alert rules 」を選択します。

WS000770.JPG

「ペン」のマークが書かれているボタンを押して、先ほどの「 test_alert 」の編集画面を開きます。

WS000771.JPG

先ほどスルーした「 Labels 」について設定します。
この段階ではまだラベルは作成されていないので、左の欄に「 test_label 」、右の欄に「 test_value 」と入力し、 Enter キーをそれぞれ押してラベルを作成します。

WS000772.JPG

設定できたら「 Save rule and exit 」を押して変更を保存しましょう。

WS000801.JPG

7. アラートメッセージの確認

これで、アラートメッセージの出力のための設定は一通り完了しました。
先ほどと同様に yes コマンドで CPU 使用率を上げてアラートを発行してみます。

WS000775.JPG

以下のようなメッセージが LINE に出力されれば、設定は成功です。

WS000799.JPG

なお、回復した場合はきちんと回復メッセージも投稿されます。

WS000837.JPG

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?