アラートをまとめるシステム "poloxy" の v0.2 をリリースしました
前回の記事で紹介した poloxy をその後リリースして、本稿の執筆時点で v0.2.1 までバージョンが進みました。
※5/8 v0.3.1 になったので追記しました。
目次:
- "poloxy" とは
- Motivation
- Current Status (※5/8 追記アリ)
- Milestone
- (余談) Another Approach 〜 Fluentd との相似について
- 5/8 追記: AdminLTE という UI テンプレートについて
"poloxy" とは
繰り返しになるので詳しい説明は割愛しますが、スライドや README に載せている図を再掲しておきます。
こんな感じで、アラートをまとめて通知してくれるものです。
まとめられたアラートの内容は Web Dashboard で確認できます。
Motivation
サーバサイドアプリケーションの開発・運用従事者の方は何かやらかしてアラートを大量に飛ばした経験はあるでしょうか。
私は、あります^^;
アラートがたくさん届くと心臓に悪いですね。
たくさんアラートが発火したとしても、1通にまとまって届いてくれたら安心ですね。
…というわけで、それをやってくれるものを作ってみた、というものです。
4/28 の西日暮里.rb で、発表スライドの3ページ目に「1時間に1000件以上アラートを受信したことがある人」という質問を入れていました。
発表中に聞いてみたところ、若干名いらっしゃったので、多少はニーズがあるかなと思っています。
Current Status (※5/8 追記アリ)
できた:
- Web Dashboard
- HTTP API
- Worker
- 送信
- SMTP
- Slack
- まとめる
- 単位時間(1分程度。configで変更可能)に受信したアラートの品目単位
- 単位時間に受信したアラートのグループ単位
- 単位時間に受信したアラートの宛先(と送信タイプ)単位
- (5/8 追加) アラートのスヌーズ ... 単位時間じゃなくて一定時間アラートを飛ばさなくする
- 該当アラートと同じ (品目、グループ、深刻度) のアラートを
message.default_snooze
で設定した秒数(デフォルト30分)スヌーズします。
- 該当アラートと同じ (品目、グループ、深刻度) のアラートを
まだできてない:
- SMTP 受信/中継
- 古いデータのパージ機能
- WebUI でのページング等
その他スライド発表時点から変更した点:
- 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 プラグイン化はやりすぎですかね。。
5/8 追記: AdminLTE という UI テンプレートについて
追記ついでに、AdminLTE について触れておきます。
自分にはフロントエンドをイチから作り込めるほどスキルも余裕もないので、Bootstrap ベースのテンプレートを使って、必要な部分だけカスタマイズする、という方針にしています。
"poloxy" の WebUI では、管理画面向けで多機能なテンプレートである AdminLTE を使ってみました。
その豊富な機能を使いこなすところまでは全然至っていませんが、作りたかった UI を割といい感じに整えることができたかなと思います。
いろいろパーツも揃っているので、便利です。