なんちゃって PHP − サンプルプログラム (ログファイル監視)

<概要>
サーバ内のログファイルを監視し 特定キーワードを発見した場合に メールの送信を行う

<ファイル一覧>

/LOCAL/kansi.php ・・・ 実行プログラム本体
/LOCAL/kansi_date.log ・・・ 監視ログファイルの管理情報 ※1
/var/log/kansi.log ・・・ 監視対象ログファイル
/usr/local/bin/php ・・・ 利用する php のパス


<メール送信について>
SMTPサーバの設定は下記の部分で行う

define(HOST, "11.11.11.11"); // ホスト
define(PORT, 25);// ポート番号

メールの 送信元 と 送信先 の設定は下記の部分で行う

$from = "logkansi@system.co.jp";// メール送信元
$from_str = "ログファイル監視システム";// メール送信元名
$to = "kanri@system.co.jp";// メール送信先 (カンマ区切りで複数指定可)
$to_str = "ログファイル監視システム管理者";// メール送信先名


<特記事項>
cron に設定された情報により 5分間隔でログファイルの監視を行う

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /LOCAL/kansi.php > /dev/null 2>&1

※1 セミコロン区切りで 前回処理時のログファイル更新日時と最終処理位置を保持する
例:2004/11/11 15:18:28;5027

メール送信でエラーが発生した場合は /LOCAL/kansi_date.log を更新しないことにより 次回の実行の際に再処理が行われる

ログファイル内をキーワード ()で文字列検出を行い 発見した場合はメール送信を行う

発生日時はログファイルの先頭の [ ] で囲まれた数字 (Unix時刻 :1970年 1月 1日からの経過秒)を変換して出力する

<ログファイル内容>

[1099615548] <error> server01;Connection Error;
[1099615608] <error> server01;Connection Error;
[1099615668] <error> server01;Connection Error;
[1099615668] <error> server01;Connection Error;