自宅では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 件のコメント:
コメントを投稿