Zabbix


2017年5月 6日

トリガーへのリンクと子を持つことを同時にできません

ZabbixのITサービス機能にて、SLA測定を親子設定しようとするとうまくいかない。

Zabbix.png

後日追記)
トリガーを設定しない親を準備してあげるとうまくいった。ちょっとわかりづらい。
zabbix1.png
zabbix2.png

2017年5月 3日

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

/etc/crontabと/etc/cron.d設定ファイルの書き方を参考にプログラムの実行をスケジュール化する。
/etc/cron.d/send_temp
と登録し、下記を保存する。

#8~17時を除いた6~23時に毎時0時に送信する
0 6-7,18-23 * * * pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#土日は8~17時も毎時0時に送信する
0 8-17 * * 0,6 pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#5分ごとにセンサデータを収集する
*/5 * * * * pi /home/pi/iot_source/get_temp.py 12> /dev/null

2017年5月 2日

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

2017年4月30日

Rasberry Pi 2で温湿度センサーの情報をZabbixで収集する

こんなケースに入れて、
蓋なし.jpg
穴をあけた蓋を付けて、
蓋つき.jpg
温室に取り付けると
取り付け.jpg
こんな感じで温室の温湿度が取得できる。
らずぱい温湿度センサー.png

これをやる為の方法を今後掲載していくことにする。

実現するために必要な材料
Raspberry Pi2
・無線LANアダプタ(余っていた WLI-UC-G を使用)
・温湿度センサー(DHT11センサー を使用。誤差が大きいので、気休め程度。気になる場合にはもう少し精度のよいものがよいかも?)
・リチウムイオンバッテリー(Anker PowerCore 10000)
・電子レンジであっためられるタッパー
・Zabbixサーバ(Cloudnで実現)

実現した結果として
・Raspberry Pi2はバッテリーからでも起動できる
・意外に電源を食うので、省電力対策は欠かせない
 →無線LAN通信を極力減らす必要がある。

今後したいこと
・電源のシャットダウン方法を確立する か バックアップをとる。
・Raspberry Pi2ではなく、Raspberry Pi Zero Wでやりたい。(さらに省電力にしたい)

2016年8月13日

Zabbixでヤマハルータの温度を取得する

Zabbix温度監視 No.05 SNMPで温度を取得するを参考に
N1200(RTX1200)の温度監視してみることにチャレンジした。

しかし、 No Such Object available on this agent at this OID と怒られて取得に失敗してしまう。
SNMP OID欄にOIDである .1.3.6.1.4.1.1182.2.1.15.0 とすべきところを .1.3.6.1.4.1.1182.2.1.15 としていたことが原因。

代わりに SNMPv2-SMI::enterprises.1182.2.1.15.0 とすることでも正しく取得できる。

OIDは正確に登録しましょう!

$ snmpwalk -v 2c -c (コミュニティ名) (IPアドレス) .1.3.6.1.4.1.1182.2.1.15
SNMPv2-SMI::enterprises.1182.2.1.15.0 = Gauge32: 44

$ snmpwalk -v 2c -c (コミュニティ名) (IPアドレス) SNMPv2-SMI::enterprises.1182.2.1.15.0
SNMPv2-SMI::enterprises.1182.2.1.15.0 = Gauge32: 44