no-image

PHPでFatal Errorやsintax errorがあったときにSwatchでメールで通知する

kusanagi環境下でPHPエラーがあったときにメールで通知するようにする。
Wordpressのプラグインにもメール通知できるものがありますが、PHP純正プログラムは監視できないのでサーバに設定する必要があります。

Swatchを使って監視

基本インストールされていることが多いですが。
以下のコマンドでインストール可能
$ yum install swatch

swatchでチェックする対象と送信先アドレスを設定

etc配下に記載するのが一般的っぽいです。
/etc/swatchディレクトリが存在していないときはmkdir /etc/swatchで作成。

viを使って以下のファイル内容を作成
/etc/swatch/swatch.conf

watchfor
/PHP Parse error|PHP Fatal error|recv\(\) failed/
# echo red #メール送信する前に、挙動を確認するときにチェックする
mail=hogehoge@hoge.com,subject="[servername] PHP error Notice From Swatch" #送信先メールアドレスとメール件名。サーバ名を件名に入れておかないとサーバの特定が困難
# threshold track_by=$1, type=both, count=3, seconds=600 #連続3回が5分以内に起こったら通知する場合に使用
#watchfor /.*/ #チェックに引っ掛からなかったものをチェックする用
# echo

daemonに設定して、サーバが起動したら動くようにする

/etc/init.d/swatch

#!/bin/bash

#chkconfig: 345 80 20
#source function library.
. /etc/rc.d/init.d/functions

start(){
echo -n "starting Swatch: "
/usr/bin/swatch -c /etc/swatch/swatch.conf -t /home/kusanagi/hogehoge/log/nginx/error.log & # -t 以降はログファイルの場所を設定
/usr/bin/swatch -c /etc/swatch/swatch.conf -t /home/kusanagi/hogehoge2log/nginx/error.log & #複数サイトの時は併記してOK
return 0
}
stop(){
killproc swatch
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
esac

実行権限を与える

chmod 700 /etc/init.d/swatch

自動起動設定

$ sudo /etc/init.d/swatch start #daemonにswatchを追加
$ sudo chkconfig –-add swatch #chkconfigにswatchを追加
$ sudo chkconfig swatch on #chkconfigでswatchをonにする
$ sudo chkconfig --list #chkconfigでswatchが動いてるか確認する

これで完了です。

参考記事

https://blog.e2info.co.jp/2015/02/03/%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E3%83%AD%E3%82%B0%E7%9B%A3%E8%A6%96%E3%83%84%E3%83%BC%E3%83%ABswatch%E3%81%A7php-fatal-error%E7%99%BA%E7%94%9F%E6%99%82%E3%81%AB%E3%83%A1%E3%83%BC%E3%83%AB/ https://oxynotes.com/?p=7517
http://blog.livedoor.jp/nipotan/archives/5902838.html

pocketlinehatebuimagegalleryaudiovideocategorytagchatquotegoogleplusfacebookinstagramtwitterrsssearchenvelopeheartstaruserclosesearch-plushomeclockupdateeditshare-squarechevron-leftchevron-rightleafexclamation-trianglecalendarcommentthumb-tacklinknaviconasideangle-double-upangle-double-downangle-upangle-downstar-halfstatus