2012/07/06
前回、『FuelPHP のエラー通知をメールで受け取るアイディア』という記事を書いたら、こんな反応をもらいました。
ちゃんとlog管理のサービスに任せるべき。アクセスが多いサイトだとまずい / “FuelPHP のエラー通知をメールで受け取るアイディア | A Small, Good Thing – blog” htn.to/a6Ksg3
— Masao Maedaさん (@brtriver) 6月 28, 2012
エラー時に毎回メールを送る方法は避けるべき…. / “FuelPHPにエラーメール通知機能を実装する: FuelPHPニュース” htn.to/AYHZrg
— Masao Maedaさん (@brtriver) 7月 3, 2012
この指摘はまったくその通りで、僕自身もまずまずアクセスの多いサイトを運用していますが、利用しているオレオレフレームワークが、エラーの度にメールを送る実装をしているために、おっしゃる通りのことがたまに起きます。
↓ほれ。
これなんかまだマシで、前なんか、数分で数万通のメールを受け取ったこともあるんだぜ!って、どうして自慢しているのかわかりませんが。。
ではどうすれば良いか。
ちゃんとlog管理のサービスに任せるべき。アクセスが多いサイトだとまずい / “FuelPHP のエラー通知をメールで受け取るアイディア | A Small, Good Thing – blog” htn.to/a6Ksg3
— Masao Maedaさん (@brtriver) 6月 28, 2012
このアドバイスの「log管理のサービスに任せるべき」とのヒントから、ちょっといくつか考えてみました。
実装の時間がとれず「考えただけ」ですので、あまり説得力がないのですが、とりあえず書きます。
2つのアイディアです。
FuelPHP の core にはもともと Log クラスがあり、デフォルトでも、下記のようなエラーログが、APPPATH/logs/
以下に出力されるようになっています。
Error - 2012-06-27 10:52:16 --> 2048 - Non-static method Jpaddress\Jpaddress::getJushoFromGoogle() should not be called statically in /Users/omoon/Documents/www/u2014/fuel/packages/jpaddress/classes/jpaddress.php on line 59 Error - 2012-06-27 10:52:18 --> 2048 - Non-static method Jpaddress\Jpaddress::getJushoFromGoogle() should not be called statically in /Users/omoon/Documents/www/u2014/fuel/packages/jpaddress/classes/jpaddress.php on line 59 Error - 2012-06-27 10:52:19 --> 2048 - Non-static method Jpaddress\Jpaddress::getJushoFromGoogle() should not be called statically in /Users/omoon/Documents/www/u2014/fuel/packages/jpaddress/classes/jpaddress.php on line 59 Error - 2012-06-27 10:52:19 --> 2048 - Non-static method Jpaddress\Jpaddress::getJushoFromGoogle() should not be called statically in /Users/omoon/Documents/www/u2014/fuel/packages/jpaddress/classes/jpaddress.php on line 59
これを、swatch などのログ監視ツールを使って監視し、よしなに通知のしくみを実装する、という方法です。
swatch には、メール通知の機能はもちろんありますし、一度検出されたエラーの通知を抑制する機能もついているので、メール通知が爆発するという、
このような悲惨な状況を回避することができるはずです。
詳しくは↓このあたりを参照。僕も近いうちに実装してみようと思っています。
これが、第1のアイディア。勘違いがあったらご指摘願います。m(..)m
で、もうひとつのアイディア。
要は、前回 FuelPHP に独自実装した通知システムに、swatch が持っているような通知抑制機能をつける作戦です。
サーバを自分の思い通りに設定できる状況なんかでは、1つめのアイディアのように外部 log 監視ツールを使うのが良いんでしょうが、そのような環境でない場合などは、独自実装するのもひとつの手かなと。
こちらも挑戦しがいがありそうなので、そのうち実装できればなーと思っております。
ということで、みなさんも、メールでのエラー通知には気をつけましょう。
それにしても、ブログはやっぱり技術の勉強にとても適したツールですね。
今回は大変勉強になりました。引き続きがんばります!