この記事では、Zabbixを使用して自宅サーバーで温度と湿度を監視・モニタリングする方法を紹介します。
温度や湿度などのデータをパソコンで取得できる機器があります。
そういった機器を使い、Zabbixでデータ収集・監視・モニタリングを行うことができます。
機器選定
USB接続で温度・湿度を取得できる機器は色々あるのですが、PCsensorのTEMPerHUMという機器を使って構築したいと思います。
Linuxでデータを取得できる機器であれば何でも大丈夫です。
PCsensor TEMPerHUM
https://pcsensor.com/product-details?product_id=791
TEMPerHUM
TEMPerHUM は入手性良くないのですが、中国の世界向けのECサイトなどで入手可能です。
AliExpress TEMPerHUM
https://ja.aliexpress.com/item/4000072409084.html
Banggood TEMPerHUM
https://jp.banggood.com/TEMPerHUM-USB-Thermometer-Hygrometer-4085-Hid-Remote-Temperature-Humidity-Recorder-PC-Sensor-USB-p-1396761.html
TEMPerHUMデータの取得方法
TEMPerHUMをサーバに接続し、データを取得できるようにします。
TEMPerシリーズのデータを取得できるプログラムがGitHubにあるのでそちらを使います。
インストール
ライブラリインストール
sudo apt install python3-serial
プログラムインストール
cd /usr/src
sudo git clone https://github.com/urwen/temper.git
cd temper
sudo cp temper.py /usr/local/bin/temper
確認
データは管理者のみ取得できるので、sudo
コマンドを使い実行します。
sudo temper
実行すると下記のように温度・湿度が取得できます。
Bus 001 Dev 008 413d:2107 TEMPerX_V3.3 28.01C 82.42F 38% - - -
オプションでJSON形式での取得も可能です。
sudo temper --json
[
{
"vendorid": 16701,
"productid": 8455,
"manufacturer": "",
"product": "",
"busnum": 1,
"devnum": 8,
"devices": [
"hidraw0",
"hidraw1"
],
"firmware": "TEMPerX_V3.3",
"hex_firmware": "54454d506572585f56332e3320202020",
"hex_data": "80400ac60f6e0000",
"internal temperature": 27.58,
"internal humidity": 39.5
}
]
watch
コマンドで、1秒間隔で確認できます。
watch -n 1 -d sudo temper
Zabbix設定
Zabbix Agent
Zabbix Agentにはユーザーパラメータという、独自の監視項目を追加できる機能があります。
ユーザーパラメータに温度や湿度のデータを取得できるように設定します。
ユーザパラメータ
Zabbix Agentにユーザパラメータの設定を行います。
温度・湿度をJSON形式で取得し、jq
コマンドで値だけを抽出します。
sudo vi /etc/zabbix/zabbix_agentd.conf.d/temper.conf
UserParameter=temper.temperature,sudo temper --json | jq '.[]."internal temperature"'
UserParameter=temper.humidity,sudo temper --json | jq '.[]."internal humidity"'
設定後、Zabbix Agentを再起動します。
sudo service zabbix-agent restart
ユーザパラメータ取得テスト
zabbix_agentd
コマンドで取得できるか確認します。
温度
sudo zabbix_agentd -t temper.temperature
temper.temperature [t|26.46]
湿度
sudo zabbix_agentd -t temper.humidity
temper.humidity [t|42.31]
sudo設定
temper
コマンドは管理者で実行しないと値が取得できません。
Zabbix Agentのデータの取得は、zabbix
ユーザで実行されるので、zabbix
ユーザから実行できるように設定します。
echo 'Defaults:zabbix !requiretty' | sudo tee -a /etc/sudoers.d/zabbix-temper
echo 'zabbix ALL= NOPASSWD: /usr/local/bin/temper' | sudo tee -a /etc/sudoers.d/zabbix-temper
Zabbix Server
アイテムの設定
監視しているホストに温度・湿度の監視項目を追加します。
監視項目の追加は、監視ホストのアイテム作成になります。
アイテムの作成
データ収集 -> ホスト
から Zabbix Server
のアイテム
を選択。
アイテムの作成
からアイテムの追加を行います。
温度
名前: 温度
タイプ: Zabbixエージェント
キー: temper.temperature
データ型: 数値(浮動小数)
単位: ℃
監視間隔: 1m
キーは、Zabbix Agentに設定したユーザパラメータを設定します。
値を設定し追加する前に、データが取得できるか確認します。
下のテスト
ボタンからアイテムのテストを呼び出し、値の取得とテスト
で取得できるか確認します。
取得した値は、前処理することが可能です。
上部タブの保存前処理
から設定できます。
[ 保存前処理 ]
値の範囲 -40 85
temper
コマンドのプログラムの問題で、まれに関係ない値を出力することがあります。
保存前処理で値の範囲を設定することにより、おかしな値を保存しないようにします。
湿度
名前: 湿度
タイプ: Zabbixエージェント
キー: temper.humidity
データ型: 数値(浮動小数)
単位: %
監視間隔: 1m
値を設定し追加する前に、データが取得できるか確認します。
下のテスト
ボタンからアイテムのテストを呼び出し、値の取得とテスト
で取得できるか確認します。
[ 保存前処理 ]
値の範囲 0 100
最新データ
監視データ -> 最新データ
から取得しているデータの確認ができます。
トリガーの設定
Zabbixにはトリガーという、特定の条件に基づいてアラートを発生させる仕組みがあります。
トリガーを使い、温度・湿度が閾値を超えたときにアラートを発生させるよう設定します。
トリガーの作成
データ収集 -> ホスト
から Zabbix Server
のトリガー
を選択。
トリガーの作成
からトリガーの追加を行います。
温度
名前: 温度
深刻度: 警告
条件式: last(/Zabbix server/temper.temperature)>32 or last(/Zabbix server/temper.temperature)<18
温度が32℃より上、または18℃より下の場合、警告になります。
湿度
名前: 湿度
深刻度: 警告
条件式: last(/Zabbix server/temper.humidity)>70 or last(/Zabbix server/temper.humidity)<20
湿度が70%より上、または20%より下の場合、警告になります。
トリガーの確認
警告になった場合、メッセージが送信される設定を行うことにより、問題を早期に発見できます。
ダッシュボード
ダッシュボードにウィジットを追加し、グラフィカルに確認できるようにします。
ウィジット追加
タイプ: グラフ
名前: 温度・湿度
データセット #1
ホストパターン: Zabbix server
アイテムパターン: 温度
塗りつぶし: 0
データセット #2
ホストパターン: Zabbix server
アイテムパターン: 湿度
幅: 0
Y軸: 右
1つのグラフに複数データを表示できます。
温度と湿度の場合は同時に表示すると、わかりやすいと思います。
おわりに
Zabbixを用いて自宅サーバの温度・湿度を監視・モニタリングする方法について解説しました。
これにより、自宅の温度・湿度をリアルタイムで把握しできるようになります。
また、トリガー機能を活用することで、異常な状態になったとき、警告を受け取ることができ、問題を早期発見できるようになります。
今回はPCsensorのTEMPerHUMを使用しましたが、他の温度・湿度センサーでも同様の手順で監視・モニタリングが可能です。
是非自分の環境に合ったセンサーを選び、自宅サーバの安定運用に役立ててください。
コメント