monitoringとは何か? CI/CDとdeploymentの解説
monitoringは、システムからシグナルを収集し、それを期待値と照らして観察する実践で、理想的にはユーザーより先に、何かが間違っているときに気づけるようにします。
monitoringは、システムの健全性を常に把握する運用上の規律です。オブザーバビリティという言葉より数十年前から存在し、その最も具体的な日常的表現であり続けています。dashboard、しきい値、アラートです。デリバリーにおいて、monitoringは稼働中のアプリケーションと、それをbuildして出荷するpipelineの両方にわたります。
monitoringが対象とするもの
monitoringはシステムを計装し、測定値を収集し、既知の正常範囲と比較します。測定値がしきい値を超えると、アラートが発火します。古典的な対象はいわゆるgolden signalsです。レイテンシ、トラフィック、エラー、飽和。monitoringは本質的に、あらかじめ定義した期待値に関するものです。
black-boxとwhite-boxのmonitoring
- black-box: ユーザーがするようにシステムを外部から探る、例えばURLにアクセスするuptime check。症状を教えてくれます。
- white-box: キューの深さやメモリ使用量など、システムが公開する内部シグナルを読む。原因を教えてくれます。
- 成熟した構成は両方を使います。ユーザーに見える問題を検出するblack-box、それを説明するwhite-box。
monitoringとオブザーバビリティ
これらは重なりますが、同じではありません。monitoringはあらかじめ定義したシグナルを観察し、それについてアラートする行為です。オブザーバビリティは、深く計画外の調査を可能にする根底の性質です。心配すべきと分かっているものをmonitoringし、決して観察しようと思わなかった障害のときに救ってくれるのがオブザーバビリティです。
pipelineとdeployのmonitoring
CI/CDをmonitoringする価値のある本番システムとして扱いましょう。buildの成功率、キュー時間、所要時間の傾向を観察し、失敗率が急増したりpipelineが通常よりはるかに長く実行されたりしたときにアラートします。deploy中および後は、不正なreleaseが数時間後の顧客報告ではなく迅速で自動化された対応を引き起こすよう、アプリケーションの健全性をmonitoringします。
ノイズを避ける
monitoringの失敗モードはアラートの過多です。あらゆる些細な揺らぎが誰かを呼び出すと、本当のシグナルが埋もれ、on-callが疲弊します。優れたmonitoringは、ユーザーが感じる症状についてアラートし、各アラートを明確なアクションに結びつけ、S/N比が高く保たれるようにしきい値を調整します。
重要なポイント
- monitoringはシグナルを収集し、期待値と比較して問題を検出します。
- black-boxのmonitoringは症状を示し、white-boxは原因を説明します。
- オブザーバビリティを置き換えるのではなく補完します。
- 稼働中のappだけでなく、pipelineやdeployもmonitoringする価値があります。