§アラートメールの送信設定
さて、測定した温度が一定の数値を超えたら、アラートメールを送信したい場合があります。 そんな場合には、以下のように設定します。 まずは、設定ファイルを開きます。
pi@raspberrypi:~ $ sudo vim /etc/munin/munin.conf
100行目付近に以下を記述します。
contact.email.command mail -s "Munin Alerts!!!" yyy@gmail.com #contact.email.max_messages 1 contact.email.always_send warning critical # a simple host tree [localhost.localdomain] address 127.0.0.1 use_node_name yes temp.temp.warning 4:16 temp.temp.critical 3:15
このセクションの内容は、参考文献[1]に詳しく掲載されています。 設定ファイル編集の1行目は、宛先のメールアドレスを記載してください。 9,10行目は、4度から16度という温度域から外れた時にwarningアラートメールを、3度から15度という温度域から外れた時にcriticalアラートメールを送信しなさいという命令です。
§平均気温を自動で算出・メール送信
本セクションのpythonモジュールは、自作のため、よりよいコードがあるかもしれません。 それに関しましては、ご了承ください。 まずは新規ファイルを開きましょう。
pi@raspberrypi:~ $ sudo vim /home/pi/program/log_handle.py
以下のように記述します。
# -*- coding: utf-8 -*- import smtplib from email.MIMEText import MIMEText from email.Utils import formatdate from email.Header import Header import datetime if __name__ == "__main__": file_in = open("log.txt") data = file_in.read() lines = data.split('\n') counter = 0 sum_num = 0 for line in lines: counter += 1 bad_line = "nan" in line if counter == 1 or counter == 2: # 二行目までは無視 pass elif bad_line == 1: # 1=True counter -= 1 elif line == "": counter -= 1 else: value = float(line[12:17]) # 有効数字部 expo = line[26:28] # 指数部 if expo == "01": value = value * 10 sum_num += value element = counter - 2 if element > 0: average = sum_num / element else: average = 0 file_in.close() ############################################ today = datetime.date.today() from_address = "xxx@gmail.com" to_address = "yyy@gmail.com" login_user = 'xxx@gmail.com' login_pass = 'passward' charset = "ISO-2022-JP" subject = u"Munin Data" text = u"Temperature Average of Today(%s) is %f C." % (today, average) msg = MIMEText(text.encode(charset),"plain",charset) msg["Subject"] = Header(subject,charset) msg["From"] = from_address msg["To"] = to_address msg["Date"] = formatdate(localtime=True) smtp = smtplib.SMTP('smtp.gmail.com', 587) smtp.ehlo() smtp.starttls() smtp.ehlo() smtp.login(login_user, login_pass) smtp.sendmail(from_address, [to_address], msg.as_string()) smtp.close()
ファイルをコピーします。
pi@raspberrypi:~ $ cd / pi@raspberrypi:/ $ mkdir temp_avg pi@raspberrypi:/ $ sudo cp /home/pi/program/log_handle.py /temp_avg
モジュールを実行させるための設定をします。以下のファイルを開きます。
pi@raspberrypi:~ $ sudo vim /usr/share/munin/plugins/temp
以下のように編集します。一部のみ抜粋。
echo 'temp.draw LINE2' echo 'temp.type GAUGE' exit 0 fi day1=`date '+%d'` day2=`date -d '6 minutes' '+%d'` day3=`date '+%Y%m%d'` day4=`date -d '1 days' '+%Y%m%d'` if [ $day1 != $day2 ]; then #if [ $day1 = $day2 ]; then rrdtool fetch /var/lib/munin/localdomain/localhost.localdomain-temp-temp -g.rrd AVERAGE -s $day3 -e $day4 > /temp_avg/log.txt python /temp_avg/log_handle.py fi echo "temp.value $GETNUM";
実はday1,2,3,4が少し粗削りな設定ですが、お許しください。 以上で設定は終了です。