SREチームのアラート対応について
はじめまして!SREチームの高山です。
2020年5月にJOINし、ちょうど3ヶ月が経とうとしているので、そろそろ記事を書こうかと思います!
5月にJOINしたばかりですが、中々に濃密な3ヶ月でしたので、その中で取り組んだアラート整理について書いていければと思います。
もし、僕に興味があるようでしたら、Wantedlyのプロフィールを参照ください!
https://www.wantedly.com/projects/475948/staffings/1946316
アラートについての課題
一言でアラートと言っても、パトランプが鳴動するものから、ひっそりメールでお知らせしてくれるものまで色々ありますが、CAMPFIREではRollbarを用いてアラートの管理をしています。
前回、岩崎が書いた「SREチームのインシデント対応について」にあるインシデント対応も、まずはこのアラートから始まる事が多いです。
JOINした5月には「新型コロナウィルスサポートプログラム」を行っていた事もあり、アクセスは急増。それに伴いシステム障害が発生し、支援を受けたい方、支援したい方の妨げにならないよう、インスタンス台数やデータベースを増強、パフォーマンスチューニングなど、やれる手をどんどん打っていた時でした。
とは言え、ユーザ数増加に伴い、アプリケーションやインフラから上がるアラートの発生回数も増加して来ており(大小ありますが)、だんだん狼少年化することも危惧されてきていました。
アラート整理をする
JOIN当初から、「アラートの整理はしたい」という岩崎の話もあり、ここはとっかかり易いところもあり、少しづつですが、整理していくことにしました。
本来であれば
- システムに問題発生
- Slackのアラートチャンネルにアラート通知が来る
- 発生した事象に関係する担当が調査
- 解決!(やっほう)
が一番なのですが、前段でも書いたように「新型コロナサポートプログラム」の取組もあり、開発チームの作業量も増えて来ており、能動的にアラート対応に取り組むのは、工数的にも心理的にも困難な状況でした。
そこで、CAMPFIREでは週番制度のようなものがあり、週番の人はユーザーサポートの対応を行ったりするのですが、自分が週番の時に、サポート対応と合わせ、アラートの1次対応についても取組を地道にやってみる事にしました。
アラート対応とは
そもそも、アラート対応とはなんぞやという話もあるかと思います。
最初にも記述しましたが、CAMPFIREでは、アプリケーションが出力するアラートはRollbarを使って管理しています。また通知についてはRollbarからアラート専用のSlackチャンネルへ通知されるようになっています。
実際の通知はこんな感じですね。
このように通知されるエラーは最終何らかのアクションをとる必要がありますが、出力されたアラートが「現在、サービスがどのような状況になっている事を教えてくれているのか」を把握する必要があります。
この状況把握は割りと行間を読むスキルも必要ですが、ざくざく上げてもこんな感じかなと思います。
・即対応が必要
・ サービス停止やユーザデータロストに繋がるもの
・ ワンショットのアラート
→ 余裕でリカバリー可能、もしくはリトライなどで既にリカバリー済みのもの
・ 即対応ではなくて良いが、早めに修正しないといけないもの
・ 明らかなバグ
・ウォッチしておいた方がいいもの
・ 外部のSaaS障害によるもの(決済とかメールとか)
・ 再現性の低いもの
・ 無視していいもの
・ リリース作業後のテストで出たアラート
・ botが起因のもの
・ しょっちゅう出るけど、全くシステムに影響ないもの(これはこれでなのですが。。)
1週間で出たアラートを1つ1つ丁寧に、上記のような区分に基づき、仕分けするというアラート対応を行っていきました。
アラートへの対応アクション
とは言え、全部のアラート仕分けするぜ!はさすがに壮大すぎるので、週番の担当週に出力されたアラートについて、仕分けしていく事にしました。
ちょっと改めてなのですが、SREの定義として、オライリーの「SRE サイトリライアビリティエンジニアリング」では「ソフトウェアエンジニアに運用チームの設計を依頼した時に出来上がるもの」とされています。
CAMPFIREのSREチームについても、開発エンジニア経験のあるスキルセットなので、よくある運用チームのような「アラート出てますよ、よろしく」的な事はしたくなく、
・ アラート確認の上、コードを追う。
・ 即対応、修正必要なもの、ウォッチ必要なもの、無視(スルー)をざっくり仕分け。
・ 対応が必要なものに関しては各担当へ連絡して、修正依頼
・ウォッチ必要、無視していいものは、とりあえず、ステータスを記録
という形で対応していきました。
僕だけで属人化せず、かつ誰でも共通認識化できるように、ステータスの記録としてSlackのスタンプを利用しました。Slack上で仕分け結果をスタンプで残す事により、その他のメンバーもさくっと確認できますし、誰が付けたかも分かるので、ダブルチェックの効果も果たす事ができました。
*このSlackのスタンプ活用は、前職でめっちゃ使ってた部分でもあるので取り入れて見ました。
実際のSlackも載せておきます。各スタンプの意味はこんな感じですね。
✅:解決済み
👀:継続してウォッチ
🔕:無視(ミュート)
また、月末には、スタンプをキーに集計結果を出し、アラートの棚卸しをし易くしています。結果もSlackで共有しています。
アラート対応取り組みの結果
6月から取り組みを開始し、まだ2ヶ月なのですが、開発チームのみなさんのご協力もあり、アラートの件数は目に見えて減って来ています!
先月はCAMPFIREで定義しているエラーバジェット内に収める事ができました!
また、徐々にですが、アラートを確認する文化も浸透してきたように思います。
さいごに
CAMPFIREで取り組んでいる地味だけど大事なアラート対応についてまとめてみました。あんまりテクニカルな話ではないですが、どうしようかなぁと悩んでいる方も多い部分かと思います。
特にSREで特化した話ではないのですし、もっと上手にやってらっしゃる所もあるかとは思いますが、一例として参考頂けると嬉しいです。
また、CAMPFIREではSREチームで一緒に働いて頂けるメンバーを募集しています!まだまだ、世の中では新型コロナウィルスによる落ち着きは見えて来ていませんが、クラウドファンディングサービスであるCAMPFIREの重要性はますます高まっていると感じています。一緒に世界中の小さな火を灯すインフラを支えませんか?
ちょっと話を聞いてみたい、という方も大歓迎です。エントリーお待ちしています!
この記事が気に入ったらサポートをしてみませんか?