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 サーバーのフロントエンドにアクセスして、設定→ホスト→%対象のホスト%→アイテムとたどってアイテムの作成をクリック。

アイテムの作成画面では次の様にセット。
| 項目 | 値 |
|---|---|
| 名前 | 室温(適当でOK) |
| タイプ | Zabbix トラッパー |
| キー | room_temp(わかれば適当でOK) |
| データ型 | 数値(浮動小数) |
| 単位 | ℃(わかれば適当でOK) |

最後に追加をクリックしてアイテムの作成は完了。
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 のフロントエンドにアクセスして値を持ってるか確認します。
監視データ→最新データで名前にアイテムの名前を入れてフィルタリングをクリックすると出てくると思います。

チェック時刻がどう見ても業務時間中です、ありがとうございました。
右側にあるグラフをクリックするとグラフを見ることができますが、値が1つだけだと直線で表示されるだけでした。
後はコマンドをシェルスクリプトなりにして cron に登録すれば Zabbix サーバーに向かって定期的に値を飛ばし続けてくれるはずです。