LoginSignup
7
2

More than 1 year has passed since last update.

障害通知をSlackでまとめてインシデント管理しちゃおう!

Last updated at Posted at 2021-06-27

あるある

Aくん「どのアラートが来たら、どう対応するみたいなのまとまってるドキュメントってありますか?」

B先輩「アプリのログもあるし、ケースバイケースで資料化までは・・」

Aくん「では過去の対応履歴はどうなってます?」

B先輩「各自思い立った時に残すメモ書きレベルで管理までは・・」

Aくん「・・ほぼ管理ゼロってことですね・・・」

半年後

Aくん「あー誰も履歴なんか残さないし残してもみねーし、適当にやって治ればヨシッ!」

B先輩「今日から中途さんがジョインしたのでヨロシクな」

Aくん「あ、どうも。早速障害対応をレクチャしたいと思うんですけんどーー」

「どのアラートが来たら対応するみたいなのまとまってるドキュメントってありますか?」

あれ?
あれれれ???

学習性無力感のなせる業よのう

善い行いも悪い行いも伝染するんだよなぁ。。
こういうのは元々出来てなかったサイドに転落していくケースが多い。
何故か。それは改善するには個人の努力でなくチーム全体の意識改革をする必要があり、
元々やってなかった人達の腰を上げさせるのはとんでもなく大変。

でも、めんどくさくなければワンチャンあるかもしれない。彼らもエンジニアだもの。

というのがなんとかなるかもしれないのが、このツール!

作ったわ!

詳しくはリポジトリで。バイナリをダウンロードして即使いたいならこっち

v0.2

  • ホットラインモード対応
    • 重要なメッセージを見逃さないようにメンション付きでリポストする機能をつけました
    • これで-reverseモードでも特定メッセージを重点的に監視できます。
  • メッセージをチェックするIDを指定できるように
    • 一般的なメッセージのやりとりもチェックしていたので、メッセージをポストするボットなりに絞ってチェックするようにしました。

v0.3

  • 名前解決モード対応
    • ユーザー名やチャンネル名にIDを調べて指定が必要だったけど、実名からIDを名前解決する機能を付けました。

v0.4

  • Reacji Channelerモードを追加しました
    • これでHTML形式のメッセージの転送とリンクで元メッセージに飛べるようになります

v0.5, 0.6

  • 文字のアラートと、Reacjiのアラート両方混在しててもレポートできるようにしました
    • これまではどちらか一方のみだったけど一つのチャンネルにまとめられるように!
  • 時間指定でリマインダーとして未対応のアラート残件を定期的にレポートする機能を追加しました
    • チャットOPSで起こりがちな対応漏れにリマインダーを追加してさらにインシデント管理を強力に!

Reacji Channelerとは?

Slack 用リアク字チャンネラー

特定のリアクションを付けると任意のチャンネルにメッセージを丸コピーしてくれる機能です!
これを使うと、

image.png

こんなかんじでアラートが入ってきたのにReacji用のマークが付き、

image.png

インシデント管理用のチャンネルにコピーされます

image.png

レポートもリンク付きで見れるようになり、どのアラートか追いやすくなりました!

image.png
image.png

もち、ルール反転モードにも対応しています。

つかいかたは?

前提としてSlackにアラートメッセージが既に飛ばされている事が必要です。
そこにインシデント管理用レポート用の2つのチャンネルを作って管理していきます。

ルール決め

検出、または無視するルールを書いていきます。
メッセージの文字列と、日時・曜日指定正規表現を使って絞れます。

[Rules]
.*Fault.* .*/.*/.* 1[0-2]:.*:.* .*	[RuleX]	CHANNEL1

これならFaultが含まれるメッセージで午前10時~12時までが対象となります。
検出したメッセージは[RuleX]というラベルがつけられ、CHANNNEL1の定義にポストされます。

インシデント管理チャンネル

image.png

[Rules]で書いたチャンネルラベルの定義です。チャンネルIDを遡って管理するメッセージ数を定義します。

[Incidents]
CHANNEL1	C025FKF3QJV	20

-reverseのモードでルールに全部ひっかからなかったものを管理対象にする場合はデフォルトでポストするチャンネルを定義します。
このモードは何のメッセージが来るかわからない、既知になったメッセージのフィルターを足していく運用時に有効です

DEFAULT	C025FKF3QJV	[Alert]

解決済みラベル

対応したインシデントを解決済みとして扱うためにリアクションマークを定義します。
このマークがついたメッセージは解決済みになるのでレポートに乗ってこなくなります

[Label]
white_check_mark

レポート用チャンネル

周期的(デフォは一日一回)にレポートメッセージをポストするチャンネルを定義します。

[Report]
C0256BTKP54

でどう運用すんの?

  • slackにアラートメッセージを飛ばしているチャンネルにこのボットを招待します
  • インシデントチャンネルにアラートが溜まっていきますので対応した人はスレッドに履歴を書き、解決マーク付けます
  • 毎日の朝会などでレポートチャンネルを見て残ってるインシデントが無いか棚卸します
  • 検出したい、または無視して良いいメッセージをルールに追記します

これにより、未対応かつ履歴が無いものが管理されていきます
また無視すべきものは自動的に対応済みとなるためアラートのマネジメント状態が改善されます

あとがき

プロダクトを批判するわけじゃないけどインシデント管理出来てないから例えばPagerDutyみたいなSaaS導入しまっす!で
元々管理出来てなかったものが、更新意欲となるモチベの源泉が、改善されるとは思えないんだ。
なら、せめて公の場感がつよい、見せしめチーム周知も出来るSlackにまとめた方が良いと思ってる。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2