プロフィール

あんじー(35歳・男)

石川県出身石川県在住
ソフトウエア開発技術者(2004)
テクニカルエンジニア(ネットワーク)(2006)、ネットワークスペシャリスト(2012)
情報セキュリティアドミニストレータ(2008)
データベーススペシャリスト(2010)
LPIC Level3 Security(2015)
ORACLE MASTER Oracle Database 11g Bronze(2011)
プロジェクトマネージャ(2014)
日商簿記2級(2015)
2級FP技能士(2016)
ITサービスマネージャ(2016)
Perl・PHPを利用し、正規表現を使ったデータマイニング処理を得意とする

« Rasberry Pi 2で温湿度センサーの情報を収集する | メイン | Rasberry Pi 2で定期的に温湿度センサーの情報を送信する »

Rasberry Pi 2で温湿度センサーの情報をZabbixサーバに送信する

Rasberry Pi 2で温湿度センサーの情報をZabbixサーバに送信する

Rasberry Pi 2で収集した情報をZabbixサーバに送信するためには大きくは2つの方法がある。
・Zabbixエージェントをインストールしてデータを送信(サーバから見ると収集)する方法(パッシブチェックとアクティブチェックというデータの収集のトリガーが異なる2つの方式がある。詳しくはこちら
・zabbix_senderコマンドを利用してデータをサーバに送信する方法

前者の方式は、エージェントを利用するので、サービスを常に起動しておかなければならないということと、ポートを待ち受けしないといけないことから、IoTディバイスとして節電して長く使いたい要求と、セキュリティを担保したい(エージェントの脆弱性によって問題が起こり得るか、DoS攻撃の対象になりうる)ことから後者を採用することにした。
ただ、zabbix_senderはRasberry Pi2を動かしているRaspianOSではちょっと導入が面倒。

Zabbix Server側の設定はこちらを参考にしてみるとよい。
これから始めるZabbix Sender(2) Raspberry Pi の温度データを送るには?

作成したソースはこんな感じ
配列に一度格納してまとめて1回のコマンドで実行することで通信回数を減らしてみた。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import dht11
import time
import subprocess
from datetime import datetime
now=time.time()

Zabbix_Server="(ZabbixサーバのIPアドレス)"
Host_Name="(Zabbixサーバに登録したホスト名)"
#Zabbixサーバに下記アイテムを2つ登録している必要がある
Temp_KeyName="sender_temperature"
Humi_KeyName="sender_humidity"

#define GPIO 14 as DHT11 data pin
Temp_sensor=14

try:
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)

while not 'result' in locals() or result.humidity==0:
result = instance.read()
if result.is_valid():
print("Tem:"+str(result.temperature)+" C Hum:"+str(result.humidity)+"%")
send_data = []
send_data.append(Host_Name + " " + Temp_KeyName + " " + str(int(now)) + " " + str(result.temperature))
send_data.append(Host_Name + " " + Humi_KeyName + " " + str(int(now)) + " " + str(result.humidity))
check = subprocess.check_call('echo "' + "\n".join(send_data) + '" | zabbix_sender -z ' + Zabbix_Server + " -T -i -", shell=True)
except KeyboardInterrupt:
pass
finally:
print check



トラックバック

トラックバックは本サイトの紹介(リンクがあれば可)があるものに限り受付いたします。このエントリーのトラックバックURLは以下のとおりです。

http://blog.development-network.net/mt/mt-tb.cgi/1159

コメントを投稿