RD-X3 がちゃんと予約メールを読んでいるかどうかを nagios で監視
「■「TVスケジューラ」との連携」にて、TV番組の自動録画をしている話を書きましたが、自動録画のトリガーにはメール録画予約機能を使っており、そのメールはgentooのサーバでやりとりしてます。
先日、POP3サーバを qpopper から、dovecot に変更したのですが、その際、設定ミスでRD-X3がメールを取れなくなっていました。
自分で予約しているわけではないので、取れなくなっていることにも気づかず、結局、「録画できてるはず」と思って見ようとした番組が録画されていないくて気づいたってことに。
そこで、nagios に RD-X3 がちゃんと予約メールを読んでいるかどうかの監視を組み込んでみました。
いや、監視までするのはちょっと大げさなような気もしますが、まぁ、意外に簡単だったので。
基本的には、
基本的な流れからいうと、
1. logger を使って、ある特定のキーワードをログに出力させる。
2. そのキーワードを swatch で拾い、ある特定のファイルを touch してファイル日付を更新する。
3. nagios(またはシェルスクリプト)で、上記ファイルの更新日付を監視し、長時間変更されていなければアラートをあげる。
ということをします。
と同じ手法です。
この方法、なかなか便利で色々と応用がききます。
swatch の設定ファイルに RD-X3 がメールを読みに来た時の監視を入れる。
dovecot は、POP3 クライアントが接続にくると、syslog 経由でログファイルに、
pop3-login: Login: user=<ほにゃらら>
というログを残します。
ですので、これを swatch で引っかけてファイルを touch します。
# # RD-X3 mail check # watchfor /pop3-login: Login: user=<ほにゃらら>/ exec=/usr/bin/touch /var/tmp/swatch-rd-x3-mail.alive
ファイル日時の監視
上記で touch したファイルを nagios で監視します。
使うプラグインは、以前と同じく check_file_age です。
で、後は以前と同じように設定すればいいのですが、今回の場合、「RD-X3がメールをとれていない」ことを AM3:00 頃に通知されてもしかたありません。そもそも、RD-X3 がメールを取るのは、AM6:40、AM11:40、PM6:40 の3回です。(電源を切っていた場合)
ずっと監視するのも無駄なので、起床時間の間だけ、監視するようにします。
$NAGIOS_HOME/etc/timeperiods.cfg
# 'wakeuphours' timeperiod definition define timeperiod{ timeperiod_name wakeuphours alias Wakeup Hours sunday 08:00-24:00 monday 08:00-24:00 tuesday 08:00-24:00 wednesday 08:00-24:00 thursday 08:00-24:00 friday 08:00-24:00 saturday 08:00-24:00 }
$NAGIOS_HOME/etc/services.cfg
define service{ ~ check_period wakeuphours check_command check_file_age!86400!86400!/var/tmp/swatch-rd-x3-mail.alive ~ }
ファイルは、1日3回しか更新されないので、86,400秒、つまり24時間更新されていなければ、アラートがあがるようにしました。
本当はもう少し短くしようと思ったのですが、何故か AM6:40 のメールチェックがこけることが多く、アラートがちょこちょこあがってきてしまったので、24時間にのばしました。
3日先のTV番組までを取得・検索して予約しているので、これで用は足りています。