2022年4月30日土曜日

Zabbixの「nodata」関数を使って一定期間データが受信できない場合にトリガーで検知させる

自宅ではRaspberry PiにてPC周りの温度・湿度を計測しており、計測した温度・湿度情報は、zabbix_senderコマンドを用いてZabbixに送信して監視を実現している。Zabbixではグラフとして表示させ、年間での温度・湿度の変化を確認できるようにもしている。

Raspberry Piによる温度計測とZabbixへの連携方法の詳細を知りたい場合は、以下別記事にて記載しているので参照いただきたい。

温度・湿度の計測は基本的には問題なくできており満足しているが、まれに不調により計測が長時間失敗することがある(下図の赤枠箇所)。

このような、「一定時間Zabbixへ監視情報が送られてこない」状態は、Zabbixの「nodata」関数を利用することで監視することができる。本記事では、Zabbixの「nodata」関数を使って一定期間データが受信できない場合にトリガーで検知させる方法を記載する。

環境

環境は以下の通り。Zabbix 6.0を利用しているが、nodata関数自体は昔のバージョンから利用可能となる。

  • OS : CentOS Stream 8
  • Zabbix : 6.0.2

手順

1. トリガーを作成

nodata関数の記載は以下の通り。設定した秒数よりも長い時間データが未受信であれば1を返し、受信していれば0を返す。

nodata(監視対象アイテム,データ未受信の秒数)

なお、ZabbixのGUI上では設定単位が「時間」と書いてあるように見えるが、「Hour」の意味ではなく、あくまで設定値は「秒」である点に注意しよう。

データ未受信の秒数は30秒に1回チェックされることから、30秒以上で設定すること。

以上をふまえ、トリガーの設定内容は以下の通りとなる。

設定項目 設定例 説明
名前 No sensor data received 任意で指定する。
深刻度 警告 任意で指定する。
障害の条件式 nodata(/Template Sensor Temperature/rasp_temp,3600)=1 今回は1時間(3600秒)データが未受信の場合、トリガーにて障害検知できるようにする。
正常イベントの生成 復旧条件式 自動で障害復旧できるよう復旧条件式を指定する。
復旧条件式 nodata(/Template Sensor Temperature/rasp_temp,3600)=0 障害の条件式逆にnodata関数の結果が0であることを条件式として設定する。
有効 チェック トリガーを有効にする。

2. 動作確認

実際に設定したトリガーが動作することを確認してみよう。データ受信しないよう監視対象サーバを停止して、nodata関数で設定時間経過するのを待つ。すると、以下の通り正常にトリガーにて障害検知がされた。

監視対象サーバを復旧させ監視データの受信を再開すると、自動で「解決済」ステータスとなった。

以上で、Zabbixの「nodata」関数を使って一定期間データが受信できない場合にトリガーで検知させる手順は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿