Linuxを使っていれば、ログファイルのようにどんどん増え続けるファイルの内容を視認するために、「tail」コマンド「-f」オプションを使用して監視する場面が多いと思います。
「tail -f」コマンドは監視対象のファイルのサイズが小さくなっても自動末尾を検知し、そこから読み込みを再開します。
さらに、「--retry」オプションを使用すれば、監視対象のファイルが削除・リネームされても同じ名前のファイルが作成されると再び監視を開始するので、ログのローテーションにも対応できるというわけです。
この「tail」を利用すれば、簡単なスクリプトを使って、検知したメッセージをメールで通知ということも可能になります。
サンプルのように、「alert」という名前でシェルスクリプトを作りました。
下のように実行すると「test.log」の監視を開始します。
$ ./alert test.log
「test.log」に「ERROR」という文字が追記されると「test@example.com」宛てに、追記された内容がメールで通知されます。 特別なツールの導入の必要なしにログ監視ができます。
【サンプル:alert】
#!/bin/sh mail_alert() { while read i do echo $i | grep -q ERROR if [ $? = "0" ];then echo $i | mail -s ERROR test@example.com fi done } tail -n 0 --follow=name --retry $1 | mail_alert
Leave a comment