exception_notification (rails) + jenkins + slack + Android Watchで快適監視

この記事は、newsdict.hatenablog.jp から移設しました。

newsdict を運用し始めて1年ほど経過したが、いろいろな障害などあって行き着いたところが表題のような構成の監視体制です。運用開発もフリーランスの傍らで行っているため、あまりコストを掛けられないのも現状でした。運用も開発も一人でやってるので・・・
各ツールを使った理由を運用経験を交えてまとめておきたいと思います。

■ Exception_notification

Railsでエラーが発生した時に通知してくれるgemライブラリです。newsdict 運用開始当初はメールでエラーを通知するようにしていましたが、エラーが大量に発生(DDOSなどのスパムアクセスが来た場合や単純なポカミスなど)した場合メールボックスがパンクする時が多々ありました。執筆当時の現行バージョン※1 ですとslackへの通知が可能でslackの場合大量に通知が来てもメールよりはさばけるだろうと思ってslackへの通知へ切り替えることにしました。

■ Jenkins

これも言わずと知れた継続的インテグレーションツールです。newsdict ではデプロイと簡単な監視(nagiosとかcloudwatch設定めんどくさくて・・・)に使っています。
これもFailureやnormalにステータスが戻った場合にslackに通知するようにしています。jenkinsでは、プラグインもweb上で簡単にインストールすることができて、設定も楽です。
また、想定外のエラーが発生した場合に備えてメンテナンス画面にするタスクも newsdict では用意しています。

■ Slack

エンジニア御用達のコミュニケーションツールです(エンジニア以外有用ですが)
exception_notification で slackのAPIを叩いて通知するわけですが、想定通りメールではパンクしていたものが、slackでは大量に処理することができました(もちろん大量に通知されるままにはしません。あくまでパンクして次のエラー通知が来なくなるなどの二次被害が起きなくなったということです)

■ Android Watch

障害解決の手段ではないのですが、Android Watchを使うことによってスマホで受けたslackの通知をすぐに見ることができます。障害の通知だけであれば android watchもいらないかもしれないですが、直ぐに対応が必要のないものかどうかを時計を見るだけでわかるのが特徴です。
なので
( exception_notification | jenkins ) -> slack -> Android Watch
という感じになりこの組み合わせがベストかなと今は思っています。

※1 Using exception_notification 4.1.1 from git://github.com/smartinez87/exception_notification.git (at master)

コメントを残す

メールアドレスが公開されることはありません。