2015.12.10
アラートをチャットワークに送る
こんにちは、次世代システム研究室のN.O.です。
最近チャットワークを業務で使うことが増えてきました。チャットワークではAPIを公開しているのでメッセージを自動的に送信することも可能です。またiOS、Android用のクライアントアプリではプッシュ通知を受け取ることができるのでアラートメールの代わりにもなりそうです。そこで今回はAPIを利用してバッチ処理のアラートをチャットワークに送ってみます。
チャットワークAPIドキュメント
http://developer.chatwork.com/ja/index.html
なお注意事項としてチャットワークAPIは現在「プレビュー版」となっており、利用申請が必要となります。またビジネスプラン、KDDI ChatWorkの場合は自社のチャットワーク管理者から権限を付与される形になりますので、社内システム部門などにご相談ください。
今回のバッチ
今回の対象はjarのバッチです。本来はログ機構に手を入れてAPIをコールしたいところですが、このjar用のIDE環境を1から用意する必要があり、構築には時間がかかりそうです。
そこで手っ取り早くログ出力をfluentdで拾ってAPIを叩くようにします。
セットアップ
認証方法 – チャットワークAPIドキュメントを参考にAPIトークンを取得します。
fluentdではチャットワーク用のoutputプラグインを利用させて頂きました。
sue445/fluent-plugin-out_chatwork
https://github.com/sue445/fluent-plugin-out_chatwork
ログファイルのサンプル
jarのバッチのログ出力先は/var/log/scheduler/scheduler.logとします。ログは以下のような出力となります。
/var/log/scheduler/scheduler.log
2015-11-28T14:08:09.314 [main] INFO Main - Start 2015-11-28T14:08:09.320 [main] ERROR Main - Exception javax.management.RuntimeErrorException: null 2015-11-28T14:08:09.330 [main] INFO Main - End
fluentdの設定ファイル
API_TOKEN、ROOM_ID、USER_IDに適切な値を入れます。
<source> type tail path /var/log/scheduler/scheduler.log pos_file /var/log/td-agent/scheduler.log.pos tag scheduler format /^(?<time>[^\s]+) (?<thread>[^\s]+) (?<level>[^\s]+)(?<message>.*)/ time_format %FT%T.%L </source> <match scheduler> type rewrite_tag_filter rewriterule1 level ^(\w+) $1.${tag} </match> <match INFO.scheduler> type null </match> <match *.scheduler> type chatwork api_token API_TOKEN #API_TOKENに値を入れる room_id ROOM_ID #ROOM_IDに値を入れる message "[To:USER_ID] [info][title]scheduler batch[/title] <%= record['level'] %> <%= record['message'] %>[/info]" #USER_IDに値を入れる </match>
動作確認
実際にエラーログを投げ込んでみてメッセージが来ることが確認できました。
あとがき
今回は簡易的に作ってみましたが、メールに比べてスマートフォンのプッシュ通知の方がより気づきやすいと感じました。しかしながらこのままでは大量にERRORが発生した場合の考慮ができておりません。一般的なAPI同様、チャットワークのAPIにもレートリミットがあり「APIのリクエスト数は、5分あたり100回まで」となっております。短時間に大量のERRORが発生したとして、全てAPIをコールするような使い方は迷惑この上無いので、この点についてはカスタマイズのしやすいout_execプラグインの利用を検討したいと思います。
次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。インフラ設計、構築経験者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD