Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

昆布乾燥室温湿度モニタリングシステム その9

 とりあえず、munin から警報メールを送信できないか?実は採用しないのだが、敢えて調べてやってみたことを書いておく。

munin の設定

メール送信先設定

 多くのLinuxの場合、/etc/munin/munin.conf が munin 全体の設定ファイルである。そのファイルには、インストール直後に次の行があるはずだ。これを参考にメールの送り先を設定する。

# Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime
# something changes (OK -> WARNING, CRITICAL -> OK, etc)
#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm
#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm

 メールの送り先以外にもメール本文や、設定したどの状態でメールを送信するかを選択できる。上記の次の行あたりから、次のフォーマットに従って記せばよい。

  • contact.識別子.command コマンド --- コマンド実行(今回の場合は mail コマンド)を実行する
  • contact.識別子.text メール本文 --- 送りたいメール内容
  • contact.識別子.always_send [warning, criticalなどを記述 --- 送りたい状況

例えば次のように書く:

contact.matthew.command mail -s "昆布乾燥室 温度警告" hoge@hogehoge.com
contact.matthew.text 昆布乾燥室の温度が設定温度範囲外になりました。
contact.matthew.always_send warning critical

一度に複数のメール送り先があるなら送り先の分の識別子を増やして同じ内容を書いておけばよい。例えば次のように書ける:

contact.matthew.command mail -s "昆布乾燥室 温度警告" matthew@hogehoge.com
contact.matthew.text 昆布乾燥室の温度が設定温度範囲外になりました。
contact.matthew.always_send warning critical
contact.peter.command mail -s "昆布乾燥室 温度警告" peter@hogehoge.com
contact.peter.text 昆布乾燥室の温度が設定温度範囲外になりました。
contact.peter.always_send warning critical

wanring は matthew だけ、critical は matthew と peter 両方に出したい場合は always_send の行で peter だけ critical を指定すればよい。

警告設定

 メール送信先と同じく /etc/munin/munin.conf に次の行があるはずである。

# a simple host tree
[localhost.localdomain]
        address 127.0.0.1
        use_node_name yes

ここに警告設定を追加する。具体的には、指定したプラグインの指定した値が指定範囲外になったら、誰(識別子)にコンタクトをとれという風に複数行で指定する。例えばこんな風になる:

[localhost.localdomain]
        address 127.0.0.1
        use_node_name yes
        temp.total.warning 40:60
        temp.total.critical 35:65
        contacts matthew peter

計測した温度を読み取るプラグイン名は temp、その計測値は total、その total が40(℃)~60(℃)の範囲外になれば注意を、35(℃)~65(℃)の範囲外になれば深刻な状況を報告する設定である。しかし、メールの内容はどちらも一緒だ。後日、注意(warning)と危機的状況(critical)の降分け方を調べておく。

設定の反映

 編集後は保存すれば次回のセンサー計測時に自動的に読み取って、センサーの値が設定範囲外であれえばメールを送信するが、もし設定が読み取られていないようだったら、munin を再起動すればよい。

再起動したときのメッセージ

 再起動すると次のメッセージが表示されることがある。

@raspberrypi:~ $ sudo service munin restart
Failed to restart munin.service: Unit munin.service is masked.

ユーザー・開発者のBBSには何か書かれているが、後日調べることにする。

これは使えない

 室温は常に一定ではなく、検出したいのは、乾燥機が停止したときの相対的で急激な室温低下であり、これでは乾燥させてないときや乾燥し始めにメールが送信されてしまう。munin の使い方をもっと調べればできそうな気もするので、調べてみるが、スクリプトを書いて cron で周期実行させていたほうが融通が利きそうだ。