Cloud Monitoring のメトリクスの基本的なコンセプトをざっと理解する
GCP 上に構築されたシステムを運用していると日々 Monitoring Dashbord や Metrics Explorer を見ることになると思う。Metrics の設定項目は結構複雑で、いつもなんとなくやりたいことはできているのだが、理解が曖昧で不安だった。
そんな中 Cloud Monitoring のドキュメントに Concept > Metrics, time series, and resources という項目があることに気づいた。読んでみると Metrics の基礎的な概念をざっと理解できてよかった。またその概念の GCP 上での呼び名もわかり、コンソールのこの項目はこのことだったのかという紐付けができ、それも良かった。以下は読んだメモ。
Metrics, time series, and resources
Metrics, time series, and resources | Cloud Monitoring | Google Cloud
Cloud Monitoring に登場する概念はハイレベルから見ると以下の 3 つ。
- Monitored-resource types
- モニタリング対象のリソース
- 例えば
gcs_bucket
など
- Metric types
- 対象のリソースから取得できる指標
- 例えば gcs_bucket ごとのリクエスト数など
- 時系列データの種別や各値の型のバリエーションがある
- Time series
- そのメトリクスの時系列データ
- 時系列データは timestamp と値のペア
Filtering and aggregation: manipulating time series
Filtering and aggregation: manipulating time series | Cloud Monitoring
時系列データはそのままだと膨大な量なので、通常は加工して用いる。加工は大きく Filtering と Aggrigation の 2 ステップで行う。
- Filtering
- 不要なデータを取り除く
- 集計期間の指定や、しきい値で外れ値を取り除いたり
- Aggregation
- 複数のデータをそれより少数の代表値に集約する
特に Aggrigation は多種・複雑な設定ができるので覚えることが多い。今回理解を整理したかったのは主にここ。
Aggregation (あるいは Summarization) には 2 つの側面がある。
- Alignment
- ひとつの時系列のなかでデータを整列させる
- Reduction
- 複数の時系列を統合する
- 事前に Alignment されている必要がある
Alignment
あるいは 1 つの時系列内での正則化。ある時系列内のデータポイントはばらばらの間隔で記録されているが、それを一定間隔ごとに整列させる。次のステップで行う。
- 整列の間隔を指定する
- 間隔は interval, period, alignment period, alignment window などと呼ばれる
- 指定した interval 内での代表値を計算する
- 例えば平均値、最大値、最小値など、たくさんの関数がある
- Aligner と呼ばれる
- 例えば平均値、最大値、最小値など、たくさんの関数がある
Aligner によって、各 interval ごとにひとつの代表値が計算される。結果として interval ごとに等間隔で値が並んだ系列が生成される。
Reduction
複数の時系列を一つにまとめるステップ。例えば Memorystore redis の redis/stats/cpu_utilization という metrics は user, sys それぞれの cpu 使用率を記録している。この両方を含めた全体の cpu 使用率を見たいときなどがユースケースだと思う。前提として Alignemt された時系列でないと Reduction できない。
数値をまとめる関数は Reducer と呼ばれる。内容は Aligner と対になっている。(同じ関数が別名で二度登場するので、Metrics Explorer の初見で混乱するポイントだと思う)
複数の系列をまとめる際、Grouping で指定した軸ごとにまとめることができる。指定しなければすべての系列が一つにまとめられる。例えば複数の Pod のメトリクスの系列を production cluster と staging cluster でグルーピングし 2 系列にまとめる、といったユースケースが考えられる。
Value types and metric kinds
Value types and metric kinds | Cloud Monitoring | Google Cloud
- Value types (各データの値の型)
- BOOL, INT64, DOUBLE, STRING などの基本的な型と Distribution がある
- Metric kind (指標の種別)
- gauge
- 単純な値
- delta
- 前の値からの差分
- cumulative
- 累積
- gauge
- 有効な組み合わせとそうでないものがある
- 例えば BOOL の delta はありえない
Retention and latency of metric data
Retention and latency of metric data | Cloud Monitoring | Google Cloud
- Data retension (保持期間) は以下で定義されている
- Quotas and limits | Cloud Monitoring | Google Cloud
- たいていのものは 6 週間
- Latency (イベントが発生してから参照可能になるまでの時間)
- 各指標のドキュメント に
Sampled every 60 seconds. After sampling, data is not visible for up to 240 seconds.
と言った説明がある
- 各指標のドキュメント に