こんにちは、サーバチームの尾宇江です。 今回は、Zapierで「チームのアラート対応集計」を自動化してみました。Zapierは機能が充実しているので思いついてから30分くらいで集計できる状態になりました。
これまでの運用 と やりたかったこと
これまでの運用
- サービスのアラートが通知されるSlackチャンネルがある
- 通知に気づいたチームメンバーがアラートの内容を調査する
- 発生頻度や対応頻度は数値化して把握できていなかった
やりたかったこと
- アラートの発生頻度を可視化したい
- アラート対応頻度の偏りを可視化したい
※ 誰かが特定のアラート見ているなら、ナレッジ共有して誰でもアラート対応できるようにしたい
Zapierの設定
ということで、Zapierを用意。 やりたかったことを実現するには、たった3つのステップだけでOKでした。
Slackの「New Reaction Added in Slack」で特定のチャンネルの投稿にスタンプ押したときにZapierを発火させる Reactionに、チームで決めたスタンプ( 例「見ます」とか「対応します」とか) を設定すればOKです。
「Date / Time in Formatter by Zapier」で現在時刻を加工する
アラート対応開始時刻をスプシに保存したいのですが、SlackのレスポンスにはYYYY-MM-DD HH:ii:ssのような簡単に加工できる日付データがありません。そのため、{{zap_meta_human_now}} というZapierに用意されている変数を利用してZapが動いた時刻を取得します。
今回はスプレッドシートに合わせて加工しましたが、そのまま使うことも可能です。Google Shees の「Create Spreadsheet Row in Google Sheets」で集めたデータをスプレッドシートに保存する 後は1・2で集めたデータを、スプレッドシートのどのカラムに保存するかを指定すれば設定は完了です。
スプレッドシートにデータが入ればピボットテーブルなどで簡単に集計することもできます。 ピボットテーブルは日時を「ピボット日付グループ」として年や月や四半期でまとめることができるのでとても便利です。
おまけ
おまけ1「ZapierのSlackテストがエラーになる場合」
Zapier で SlackのStepをテストしようとしたときに、↓のようなエラーが出ることがあります。
Unable to pull reactions Please reload the page. If the issue persists, troubleshoot error or contact Support. Error code: Error while retrieving: Could not find a message in public channel that selected user or you reacted to
これは、Triggers aren’t returning samples にもあるように、「New Reaction Added in Slack」などで指定する範囲が広すぎる場合などに発生します。その場合
- 一時的にZapierでチャンネルやユーザを指定する
- Zapierのテストが終わったらチャンネルやユーザの指定を外す
というような対応でエラーを回避できることがあります。
おまけ2「スプシで今Qの結果だけを表示したい場合」
今Qの結果だけを表示したい場合、スプシのピボットテーブルで登録日時のフィルタを「次の間にある 」「2024-01-01」および「2024-03-30」のように設定すると、Q毎に設定を変更しなきゃ駄目で少し面倒です。
その場合は、日付フィルタで「次の間にある 」「=DATE(YEAR(TODAY()), INT((MONTH(TODAY()) - 1) / 3) * 3 + 1, 1)
」および「=EOMONTH(DATE(YEAR(TODAY()), INT((MONTH(TODAY()) - 1) / 3) * 3 + 1, 1), 2)
」のように計算すれば今Qの結果だけを取得できます。
※ 3の部分を6に変えれば、半期単位でも取得できます。
まとめ
ちょっとした改善でしたが、やはり数値として見えるようになることで客観的に状況を把握することができ、次の改善につながりやすいと思いました。 また、SaaSを提供しているヤプリのエンジニアとしては、他社のSaaSサービスを利用することで気付きや発見を得ることも多く、とても良い刺激になっています。
最後に
ヤプリにご興味がある方いましたら是非カジュアル面談でヤプリ社員と話しませんか?
最後まで読んでいただきありがとうございました!