前回の記事で紹介した poloxy をその後リリースして、本稿の執筆時点で v0.2.1 までバージョンが進みました。
"poloxy" とは
繰り返しになるので詳しい説明は割愛しますが、スライドや README に載せている図を再掲しておきます。
こんな感じで、アラートをまとめて通知してくれるものです。
まとめられたアラートの内容は Web Dashboard で確認できます。
Motivation
サーバサイドアプリケーションの開発・運用従事者の方は何かやらかしてアラートを大量に飛ばした経験はあるでしょうか。
私は、あります^^;
アラートがたくさん届くと心臓に悪いですね。
たくさんアラートが発火したとしても、1通にまとまって届いてくれたら安心ですね。
…というわけで、それをやってくれるものを作ってみた、というものです。
4/28 の西日暮里.rb で、発表スライドの3ページ目に「1時間に1000件以上アラートを受信したことがある人」という質問を入れていました。
発表中に聞いてみたところ、若干名いらっしゃったので、多少はニーズがあるかなと思っています。
Current Status
できた:
- Web Dashboard
- HTTP API
- Worker
- 送信
- SMTP
- Slack
- まとめる
- 単位時間(1分程度。configで変更可能)に受信したアラートの品目単位
- 単位時間に受信したアラートのグループ単位
- 単位時間に受信したアラートの宛先(と送信タイプ)単位
まだできてない:
その他スライド発表時点から変更した点:
- Redis キューを使わなくして、DB に統合しました
ドキュメントは今のところ README にざっと書いています。
config や curl のサンプルも載せているので、一応お試しいただけるかな、と思います。
Milestone
上の「まだできてない」に挙げていることは v1.0 リリースまでにはやろうと思っていることです。
趣味でやっていることもあり、いついつまでというのは特に決めてませんが。
試してみて「困った」など、何かフィードバックがありましたら、GitHub 等でお知らせ頂ければ幸いです。
(余談) Another Approach 〜 Fluentd との相似について
受信はさておき、送信は今後種類が増えるかもしれないので、Pluggable にしておいた方がよさそうです。
一応、それを見越して動的に各送信タイプの class をロードするようにしています。
そんなことを考えていたら、ふと「あれ、送信と受信があってなんだか Fluentd っぽい」と思った瞬間がありました。
ひょっとしたら、Daioikachan *1みたいに Fluentd の仕組みに乗っかった方が筋がよかっただろうか、とちょっと悩んでいたりします。
Fluentd の既存のプラグインでも、ログを間引いたり*2、suppression を入れたりできるもの*3はあるようなので、そっちのアプローチもアリだったかもしれません。
とはいえ、"poloxy" には Dashboard や DB が付いていたり、アラートのグルーピングなど独自な概念もあるので、Fluentd プラグイン化はやりすぎですかね。。