GROUPエンジニアブログです。Networkというスマートフォンに特化したクリック課金型アドネットワークを担当しています。我々は今のところシステム監視にXymonという統合監視ツールを使っています。Client連携の他、カスタムスクリプトで定期的にAWSのリソースの状態を監視したり、Fluentdからfluent-plugin-xymon経由でXymonにメトリクスを取り込んだりという手を加えながら、より高いサービスレベルの達成に力を注いでいます。NetworkではXymonが問題を感知したときの通知として、これまでは伝統的なメール発報を行ってきました。利用実績の多さに加え、最近だと携帯にプッシュを受けれたり、ルールに基いてメールを転送したり、フィルタリングしたりと、伝統的とはいえまだまだ使い手のある手段ではあります。21世紀の今日、もっとカジュアルかつ即時性が高く、送られてきた通知を契機に迅速かつスムーズにコミュニケーションが取れる手段を使いたいなあと思っていました。そこで我々は"チーム開発にフォーカスした快適なグループチャット"idobataとXymonを組み合わせることで上記を実現しました。idobataはグループチャットとして動作がスムーズで謳い文句の通り快適に使うことができる他、WebHook機能によってGithub、PivotalTracker、Jenkinsなど日常的に使っているポピュラーな開発支援ツールからの通知をかんたんに取り込むことができます。WebHookに、Xymonサーバからアクセスする方法をとっています。下記2ステップをXymon側に設定するだけでかんたんに実現できるので、Xymonを使っている方は是非速攻でお試しください。他の監視ツールを使っている場合も考え方は同じなのでかんたんに適用できるでしょう。Fluentdにはfluent-plugin-idobataというプラグインがあるので、こちらも利用すると捗るかと思います。■ステップ1alerts.cfgに、条件に合致したらスクリプトをキックするように設定を追加します。いずれかのホストでCOLORがredの場合に/path/to/xymon2idobata.shをキックしてidobataに通知する場合、下記の様に記述します。SETTINGSをご覧ください。ご参照ください■ステップ2idobataに通知するためのxymon2idobata.shを実装します。スクリプトの中では、エラーの状況やメッセージなどが環境変数で渡されるので、それを元にhttpリクエストを作ってidobataにpostします。したハマりどころとしては、alerts.cfgで渡したrecipient情報(ステップ1では$ZGOK_IDOBATA_WEBHOOK_URL)は、コマンドライン引数ではなくRCPT環境変数に格納されます。HookでFAILUREとかSUCCESSを出すを大いに参考にして、エラーレベルごとにわかりやすくidobataに表示するようにしています。BBCOLORLEVELにredだのyellowだの、Xymonのエラーレベルのカラーが渡ってくるので、これでどのようなラベルにするか判断しています。Xymonからのメッセージをpreタグで囲むようにしましたが、これだとメッセージの最後についているURLがidobata上でクリッカブルになりません。URL部分をpre外にも出して、idobataに送り込んでいます。Licenseとしますので、ご自由にお使いください。他にも様々な技術的なアーキテクチャや工夫を行っています。AWSブースで講演した時の資料を公開していますので、こちらも是非ご参照ください。GROUPや広告配信に興味を持ちましたら、是非こちらもご検討ください。