Opensourcetechブログ

OpensourcetechによるNGINX/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

zabbix_senderでRaspberry PiのセンサーデータをZabbix Serverへ送信する(1)

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 Alexei Vladishevさんと一緒

 

今回は、zabbix_senderを使ってRapsberry Piで計測している温度センサーのデータをZabbix Serverへ送信し、グラフで可視化・監視する方法の紹介です。

 

 

zabbix_senderとは?

Zabbix Serverへデータを送信するクライアントコマンド です。

https://www.zabbix.com/documentation/4.2/manual/concepts/sender

 

以下のような使い方で、-oオプションで指定したデータを送信できます。

また、-o `コマンド ` とすることで指定したコマンド結果を送ることも可能です。

zabbix senderの使い方

 

 

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ブログ

pi@raspberrypi:~ $ cat /home/pi/temp_for_zabbix.sh
#!/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)}'

 

試しに送信してみます。

pi@raspberrypi:~ $ zabbix_sender -z 192.168.11.6 -s "RaspberryPizeroW" -k temperature -o `/home/pi/temp_for_zabbix.sh`
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 -e
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`  ・・・追加

 

毎分データ送信させると、以下のように温度変化している様子を監視することができます。

深夜には温度がじわじわ下がって、朝になると温度上昇していることがわかりますね。

半日分のグラフ

1日分のグラフ

 

 

おまけ

その他、以下の記事で扱った「湿度」や「照度」・「輝度」も同様の方法で監視できそうです。

Raspberry Pi(zero)にデジタル温湿度センサー DHT11を接続し、温度&湿度を測定する! - Opensourcetechブログ

光センサーBH1750FVI(GY-30)で明るさを測定する - Opensourcetechブログ

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

Opensourcetech by Takahiro Kujirai