サイトアイコン Tech Inside Drecom

WEBサービス監視を設計する際に決めること

はじめに


これはドリコム Advent Calendar 2020 の18日目です。 17日目は 橘田隼一さんによる「CI、CD、そしてPDにて」です。
こんにちは。SRE部のひらしーです。 今回はWEBサービスの監視システムを設計する際にどのようなことを決めておいたほうが良いかを紹介します。

我々は何を監視すべきか

 サービスが健全な状態とはどういう状態か 
全てはこちらを決めるのがスタートとなります。
人間が把握するためには数値の指標を決めなければなりません。メジャーな指標としてSLO/SLI/SLAがあります。 特にSLOはサービス利用者に具体的に何を提供すれば価値があるのかを決めることになるので、とりあえずこれだけを決めることだけでもメリットはあると思います。
サービスが健全であるために何に気付きたいのか
SLI/SLO/SLAは主にサービスやシステムの状態を数字として把握するためのものですが、これのサブセットとして気付きたい変化も多岐に渡ると思います。以下に一部例を挙げます。

不健全の定義

サービスが健全な状態を定義するには、サービスが不健全であったり異常である状態を定義することが近道です。以下に具体例を挙げます。

不健全の際に何をするのかを決める

不健全の定義はその際に何を行動するのかをセットで決めて下さい。
また、この2つは定期的に見直し、積極的に廃止・更新しましょう。

監視システム

何を監視すべきか決まったら手段について検討しましょう。
監視システムとしては大きく分けて外部のSaaS採用、OSSでの構築、SaaS/PaaS上に自分のコードを置くパターンがあります。 選択するポイントは以下があります

通知方法

不健全な状態に迅速に対応するために以下のような通知方法を検討しましょう。
後述するエスカレーションと組み合わせることがお薦めです。

エスカレーション

アラートの重要度(severity)とアクションのパターンを事前に決めておくことで休暇中の人への連絡や重要なアラートに気付かなかったケースを減らすことができます。
監視システムによっては明示的にエスカレーション機能がないケースがあるので、その際は通知先グループにて代替えして下さい。
以下に、エスカレーションする際のパターンのサンプルをいくつか挙げます。

オンコール担当

オンコールとはエスカレーションが発生した際に担当者を呼び出すことです。オンコール担当とは一般的には時間外に問題を解決するための担当です。特定の人がいつもオンコール担当になってしまうと、その人の疲弊や問題解決自体の品質劣化を招くので以下の観点で決める様にしましょう。

インシデントの管理

サービスが不健全な状態を解決するまで複雑なエスカレーションを経由したり、時間が掛かるケースもあります。一般的には PagerDutyのようなインシデント管理ツールを採用するのがお薦めです。以下前回私が書いた記事も参考にして下さい。 PagerDutyでアラート管理を改善した話

ポストモーテム

ポストモーテムは事後検証と訳されます。特に重大な障害が発生した際には同じことを繰り返さないためと根本原因の分析から多くの学びを得るために積極的に実施するようにしましょう。
一般的にはチームで決めたドキュメントのフォーマットを定義し、発生したサービス障害単位で作成します。弊社SREチームでは以下の項目に沿って作成しているので参考になればと思います。

まとめ

WEBサービスの監視システムを設計する際に決めておきたいことを早足で紹介させて頂きました。 昨今では監視システムもSaaS、OSS含めて充実していますが、だからこそサービスやチームを軸足にした最適な運用を設計しましょう。
明日の記事は Egliss さんの「WPFでノードエディタを作ってみる」です。 
ドリコムでは一緒に働くメンバーを募集しています!
募集一覧はコチラを御覧ください!
モバイルバージョンを終了