監視設計どうするか
システムの健全性を評価する指標として SLI を定義し、SLI に基づいて必要な監視項目を定めていく
多くの場合、健全性は可用性
さらに、SLI を定めるにあたって、そのプロダクトが提供する価値は何か、ユーザが期待することは何か、といったことを分析する
サービスの中で特に重要な振る舞いは何か、その振る舞いをどのように計測し評価するか
一方で、ユーザが気にかけることを、直接的に計測するのは難しいこともある
計測しやすい指標から考えてしまうと、役に立たないSLI/SLOになってしまうことがある
監視設計
Design Doc に落とし込むと良いかもしれない
他のメンバーや後任のメンバーが、全体像を把握できる。変更や拡張を行う際に大元の設計思想を理解する。
社内の他のプロダクトへ展開がしやすい。
このシステムは何か、システムに期待される機能・振る舞い、システムの重要なコンポーネント(構成図)、それらを踏まえたSLI/SLO、監視構成(ツール等)
SLI
重要な少数の指標
可用性、レイテンシ、エラーレート、スループット
可用性は、伝統的には時間ベース(稼働時間)で考えることが多いが、現実的には、サービス全体が落ちている、というよりは一部に異常が起きている、というケースの方が多いように思う
ユーザの観点に立って考えると、そのような状況ももちろん受け入れがたいので、エラーレート・レイテンシといったリクエストの応答状況をベースに考える方が自然のように思える
ユーザーは内部的な振る舞いは気にしない
低レベルのメトリクス(CPU使用率)は SLI にはなり得ない
参照