Zabbixによる温度・湿度の監視・モニタリング – Debian Linuxによる自宅サーバ

自宅サーバ
自宅サーバ

この記事では、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にあるのでそちらを使います。

GitHub - urwen/temper: Simple python for accessing TEMPer USB thermometers
Simple python for accessing TEMPer USB thermometers - GitHub - urwen/temper: Simple python for accessing TEMPer USB ther...

インストール

ライブラリインストール

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を使用しましたが、他の温度・湿度センサーでも同様の手順で監視・モニタリングが可能です。
是非自分の環境に合ったセンサーを選び、自宅サーバの安定運用に役立ててください。

コメント

タイトルとURLをコピーしました