AE-BME280がTWELITE経由で送るデータをzabbixでグラフにする

スポンサーリンク

はじめに

この頃zabbixをさわらせてもらっているのですが、その過程でzabbix-senderなる便利なものがあることを知りました。

このzabbix-senderを使うと今年1月に投稿したこちらのデータをzabbixでグラフかできます。

ということでzabbixを使ってグラフ化しようと思います。

参考サイト

python3のコード作成時に参考にさせていただきました。

構成について

データが流れる順番に①②③と分けて考えます。

①AE-BME280+TWELITE DIP(子機)を用意

②raspiにTWELITE MONOSTICK(親機)を接続してzabbix-senderでデータを取得

③ESXiのstandalone(ubuntu 18.04)にzabbix用のmysql、zabbix-web、zabbix-serverを構築

構成はこんな感じです。使うzabbixのversionは10月に新しくリリースされた4.0を使います。

ちなみにここでは②のIPアドレスを192.168.0.12とし、③を192.168.0.18としています。

①AE-BME280+TWELITE DIP(子機)の構成と設定について

AE-BME280とTWELITE DIP(子機)の構成と設定については過去投稿を参考にどうぞ。

60秒ごとにTWELITEの子機から親機にデータが飛んで行く設定になってます。

②ラズパイ3の構成と設定について

ラズパイ3の構成も①のリンクにあるMONOSTICKの設定そのまんまです。

新たに実施したのはラズパイ3にzabbix-senderをインストールしたのとpythonで以下を実施するコードを作成しました。

・子機から飛んでくるデータを受信する

・受信したデータをzabbix-senderでzabbix-serverに飛ばす

Raspberry Pi 3にzabbix-senderをインストール

zabbix公式リポジトリにrasbianがあったのでこちらを使わせていただきました。

インストールの流れはこんな感じ。

やっていることは適当な名前のディレクトリ(ここではzabbix)を作り、wgetでパッケージを取得してdpkg -iでインストールすればOKです。

apt-cache policyでインストールされているかの確認するとこんな感じです。

python3でコード作成

実際のコードはこちら。適当にここではget_twelite_data2.pyという名前にしてます。

subprocess.run使ってzabbix_senderコマンドを使って送ってます。

そのためpython3.5以上じゃないと動かないです。

起動は方法ですが試すだけならpython3 get_twelite_data2.pyでもOKです。

バックグランドで動かすならこちら。

nohup python3 get_twelite_data2.py &

動いているかの確認はjobsコマンドでできます。

止めたいときはkill %番号でOK。以下の例ではkill %1を実行しています。

③について

docker-composeでzabbix構築

適当な自宅サーバにubuntu 18.04を入れてdockerで環境を構築します。

ですが家には自宅サーバなんて高価なものはないのでぷらいべーとで使っているノートPCにESXiを入れてその上にubuntu 18.04のサーバを建てています。

今回はクラウドなどを使わず自宅だけの閉じた環境で実施しているのでhttpsとか使わない簡単な構成で動かしました。

こちらが使ったdocker-compose.ymlです。

起動はsudo docker-compose up -d

停止はsudo docker-compose up down

確認はsudo docker-compose ps

zabbix-serverの設定

・zabbixへのログインといらないもの削除

raspiからzabbix-senderで飛んでくるデータを受け取るための設定を実施します。

zabbixにまずはログイン

http://192.168.0.18

初期ユーザ名/パスワードはadmin/zabbix

ログイン後、英語より日本語が良い方は右上にある人型のマークをクリックして言語を日本語に変更できます。ここでは英語表記のままで進めます。

ついでに初期設定されているhostとテンプレートを全部消します。邪魔なので。

Configuration→Hostsから初期にあるhostは全部消してOK。

Configuration→Templatesから初期にあるTemplateは全部消してOK。

・hostの作成

まずhostsを1つ作成します。

testhostというhostを作成します。pythonで作成したコードでzabbix_senderで設定しているものと同じにする必要があります。

Groupsは適当でOK。ここではLinux serversにしてます。

IPアドレスは初期の127.0.0.1

Enabledにチェックを入れた状態でUpdateをクリックして登録します。

・itemsの作成

次に作成したtesthostでitemを作成します。

temperature(温度)、humidity(湿度)、atmospheric_pressure(気圧)のアイテムを作ります。

temperatureを例にするとこんな感じです。Keyはpythonで作成したコードでzabbix_senderで設定しているものと同じものにする必要があります。

【Item】タブ

Name:temperature

Type:Zabbix trapper

Key:temperature.key

Type of information:Numeric(unsigned)

Units:°C

【Preprocessing】タブ

Name:乗数

Parameters:0.01

temperatureで飛んでくるデータが4桁の整数です。たとえば2500みたいな。そこでPreprocessingで0.01を乗算して25.00(°C)として表示してもらいます

同じようにhumidityも作成します。

【Item】タブ

Name:humidity

Type:Zabbix trapper

Key:humidity.key

Type of information:Numeric(unsigned)

Units:%

【Preprocessing】タブ

Name:乗数

Parameters:0.01

同じようにatmospheric_pressureも作成します。

【Item】タブ

Name:atmospheric_pressure

Type:Zabbix trapper

Key:atmospheric_pressure.key

Type of information:Numeric(unsigned)

Units:Pha

atmospheric_pressureは0.01で乗算する必要がないので【Preprocessing】タブは設定不要です。

動作確認

②のラズパイでget_twelite_data2.pyを実行していると③のzabbix serverの設定が終わると60秒ごとにデータが更新されるはずです。

Monitoring→Latest dataを選択し、Hostsでtesthostを選択します。

うまくいっているとこんな感じで表示されるはずです。

※今回からクリックすると大きくなるようになりました!

例としてhumidityのGraphをクリックするとこんな感じ。

簡単にグラフ化してくれて便利ですねb

最後に

zabbixが便利すぎてやばい。。特にzabbix-senderが便利で電子工作と相性良いですね。簡単にとったデータを自動でグラフ化してくれるし、やろうと思えばメールにもslackにもアラート飛ばせますし。

zabbixは初期からあるhostやTemplatesの設定をすべて消して自分で設定していくと色々わかってくるものですね。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする