0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SREを読んでみたAdvent Calendar 2020

Day 16

アドベントカレンダー13日目:SREを読んでみた「分散システムのモニタリング」編③

Posted at

前回の内容を振り返ると、モニタリングシステムは、ユーザーに対して、何が、なぜ壊れたのかに答える必要がありました。その手法には、ホワイトボックスとブラックボックスあり、4大シグナル(レイテンシ、トラフィック、エラー、サチュレーション)に焦点を当てる必要があるということを学びました。
今回は、モニタリングシステムを構築する際の観点について、学びます。

0から作るモニタリングシステム

モニタリングシステムを0から構築するとしたら、何を考えるべきでしょうか?
前回の内容を踏まえると、4大シグナルをモニタリングする必要がまずありそうです。
レイテンシに注目した時、レイテンシの定義は、リクエストを処理して、レスポンスを返すまでの時間なので、その値を測定して、そのまま返せばとりあえずユーザーがレイテンシを観察することはできます。しかし、モニタリングシステムならば、何かしらの値をトリガーとして、通知しないといけないです。通知の基準はどのように設定すべきでしょうか?
最終的に以下のような機能をもつシステムになるかもしれません。

  • さまざまなメトリクス、レイテンシの閾値、パーセントタイルによるアラート
  • 考えられる原因を検出して知らせるための追加コード
  • 考えられる原因のそれぞれに関連するダッシュボード1

適切な粒度の選択

メトリクスやレイテンシ、パーセントタイルの計測にあたって、適切な粒度を選択する必要があります。
以下に過剰となりうる粒度で設定された例が挙げられます。

  • 1分ごとのCPUの負荷を観察しても、高いテイルレイテンシを生じさせるスパイクは、それが長時間であっても、見つけられないかもしれません。
  • 一方、年間で合計9時間未満の停止時間(年間稼働率99.9%)をターゲットとするWebサーバーの場合、200(成功)のステータスの確認頻度を1分間に1回か2回以上にするのは、やり過ぎでしょう。
  • 同様に、99.9%の可用性をターゲットとするサービスのハードドライブの空き容量のチェックは、1分から2分に1回以上にする必要はありません。1

このように、モニタリングしたい値により、適した粒度は異なります。
CPUの負荷を毎秒計測することは、収集、保存、分析のコストが大きくなります。
それほど細かい粒度でなくてもかまわないのなら、粒度を大きくすることでコストを抑えることができます。

シンプルにする、ただしやり過ぎない

モニタリングシステムに限ったことではないですが、システムの要件を積み上げていくと、とても複雑なシステムが出来上がります。
複雑すぎるシステムは、脆く、変更するには複雑で、メンテナンスコストが高くなっていきます。
そのため、モニタリング対象は以下のガイドラインが参考になります。

  • 本当のインシデントを最も頻繁に捉えるルールは、可能な限りシンプルで、予想しやすく、信頼できるものであるべきです。
  • ほとんど実施されない(例えば、SREチームによっては、四半期に1回未満が目安です)データの収集、集計、アラートの設定は削除すべきです。
  • 収集されてはいても、事前に作成されたダッシュボードのいずれにも表示されず、どのアラートにも使われていないシグナルは、削除の候補です。1

##まとめ

  • モニタリングの粒度は適切に選択する
  • モニタイングシステムは、シンプルに保つ

参考文献

  1. Betsy Seyerほか SRE サイトリライアビリティエンジニアリング オライリー 63-66
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?