こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。
今回は、zabbix_senderを使ってRapsberry Piで計測している温度センサーのデータをZabbix Serverへ送信し、グラフで可視化・監視する方法の紹介です。
zabbix_senderとは?
Zabbix Serverへデータを送信するクライアントコマンド です。
https://www.zabbix.com/documentation/4.2/manual/concepts/sender
以下のような使い方で、-oオプションで指定したデータを送信できます。
また、-o `コマンド ` とすることで指定したコマンド結果を送ることも可能です。
zabbix_senderパッケージのインストール
以下の記事などを参考に、Rasbian(Raspberry Pi)に4.0 LTSや4.2のzabbix_senderをインストールします。
https://www.opensourcetech.tokyo/entry/20190408/1554707216
Zabbix Server側の準備
作業はZabbix Serverは192.168.11.6、zabbix_senderを実行するrasbianは192.168.11.14という環境で行なっています。
まずは、ホストの追加。
設定 > ホスト > ホストの作成 と進みます。
ホスト名・グループ名・インターフェイスなど必要項目を入力し、ホストを追加します。
続いて、zabbix_senderで送信されるデータ用のアイテムを追加します。
ここで重要な項目は、以下の通り。
タイプ:Zabbixトラッパー
->zabbix_senderからのデータ受信用する。
キー:temperature
->zabbix_senderからのデータ送信する際に使用する。
データ型:数値(浮動小数)
->zabbix_senderからの送信するデータの型の指定。整数データの場合、数値(整数)とする。
zabbix_senderによるデータ送信
データ送信時に実施するシェルスクリプトとして、以下を用意しました。
※以下の記事で扱った温度データを、**.***という小数点データとして処理するもの。
Raspberry Pi(zero w)にデジタル温度センサー DS18B20+(1-WIRE)を接続し、温度測定する! - Opensourcetechブログ
#!/bin/bash
grep t= /sys/devices/w1_bus_master1/28-00000a74ac23/w1_slave | cut -d "=" -f 2 | awk '{print substr($0,1,2) "." substr($0,3,5)}'
試しに送信してみます。
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000435"
sent: 1; skipped: 0; total: 1
Zabbix ServerのGUI(監視データ > 最新データ)を見ると、
以下のように送信されてきたデータが表示されます。
複数回 zabbix_senderコマンドを実行すると、以下のように折れ線グラフが完成します。
データ送信の定期的実行
crontabを使って定期的にデータ送信を行います。
pi@raspberrypi:~ $ crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
MAILTO=""
*/1 * * * * zabbix_sender -z 192.168.11.6 -s "RaspberryPizeroW" -k temperature -o `/home/pi/temp_for_zabbix.sh` ・・・追加
毎分データ送信させると、以下のように温度変化している様子を監視することができます。
深夜には温度がじわじわ下がって、朝になると温度上昇していることがわかりますね。
おまけ
その他、以下の記事で扱った「湿度」や「照度」・「輝度」も同様の方法で監視できそうです。
Raspberry Pi(zero)にデジタル温湿度センサー DHT11を接続し、温度&湿度を測定する! - Opensourcetechブログ
光センサーBH1750FVI(GY-30)で明るさを測定する - Opensourcetechブログ