BME280 で取得した室温を zabbix_sender で Zabbix サーバーに送る

昨日、センサーモジュールから値を取得するスクリプトを一般ユーザーで実行できるようにしたので、取得した値を Zabbix サーバーに投げることにしました。

使うのは Zabbix サーバーにデータを投げる zabbix_sender です。

zabbix_sender のインストール

公式サイトから 3.0.3 のソースをダウンロードして展開します。

$ tar zxvf zabbix-3.0.3.tar.gz
$ cd zabbix-3.0.3/

--enable-agent を付けてコンフィグファイルを作ってから make します。

$ ./configure --enable-agent
$ make
$ sudo make install

Zabbix サーバーの設定

Zabbix サーバーのフロントエンドにアクセスして、設定ホスト%対象のホスト%アイテムとたどってアイテムの作成をクリック。

f:id:k-side:20160713114239p:plain

アイテムの作成画面では次の様にセット。

項目
名前 室温(適当でOK)
タイプ Zabbix トラッパー
キー room_temp(わかれば適当でOK)
データ型 数値(浮動小数)
単位 ℃(わかれば適当でOK)

f:id:k-side:20160713114240p:plain

最後に追加をクリックしてアイテムの作成は完了。

zabbix_sender コマンドを実行する

次のオプションを付けて zabbix_sender を実行します。

オプション 渡す値
-z Zabbix サーバーのホストネームか IP アドレス
-s Zabbix に登録してあるホストネーム
-vv コマンド結果を詳細に標準出力する(vを2つ)
-k Zabbix サーバーでアイテムにセットしたキーの名称
-o キーの値、今回であれば室温(bme280.py の結果から)

今回は次のようなコマンドになりました。

$ /usr/local/bin/zabbix_sender -z 192.168.10.11 -s RaspberryPi -vv -k room_temp -o `/home/zoar/src/ss/bme280.py | cut -f1 -d','

結果は次のような感じ。

zabbix_sender [18751]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000107"}]
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000107"
sent: 1; skipped: 0; total: 1

processed: 1となっていれば成功。
失敗したら中身を確認して再チャレンジ。

Zabbix サーバーで確認

送信が成功したっぽかったら Zabbix のフロントエンドにアクセスして値を持ってるか確認します。
監視データ最新データで名前にアイテムの名前を入れてフィルタリングをクリックすると出てくると思います。

f:id:k-side:20160713114241p:plain

チェック時刻がどう見ても業務時間中です、ありがとうございました。

右側にあるグラフをクリックするとグラフを見ることができますが、値が1つだけだと直線で表示されるだけでした。

後はコマンドをシェルスクリプトなりにして cron に登録すれば Zabbix サーバーに向かって定期的に値を飛ばし続けてくれるはずです。