21 Aug 2021

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 によって、各 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

Retention and latency of metric data

Retention and latency of metric data  |  Cloud Monitoring  |  Google Cloud

PR

Kubernetesで実践するクラウドネイティブDevOps
John Arundel (著), Justin Domingus (著), 須田 一輝 (監修), 渡邉 了介 (翻訳)