Prometheus 指標の使用

このページでは、Cloud Monitoring で可用性とレイテンシ SLI に関する Prometheus 指標の基礎と、これらの指標を使用して SLO を作成する方法について説明します。

Prometheus の基礎

Prometheus は、指標とアラート用の主要なオープンソース モニタリング ソリューションの一つです。

Prometheus は、指標の Key-Value 識別子を持つディメンション データをサポートして、PromQL クエリ言語を提供し、他のプロダクトのエクスポーターを提供することで、多くの統合をサポートします。

Monitoring で Prometheus の使用を開始するには、Google Cloud Managed Service for Prometheus を使用することをおすすめします。

指標

Prometheus では、次のタイプの指標をサポートしています。

  • カウンタ: 単調に増加するか、再起動時に 0 にリセットできる単一の値。
  • ゲージ: 任意の値に設定可能な単一の数値。
  • ヒストグラム: 観測結果のサンプリングと範囲内の値を記録するための、構成可能なバケットのグループ。観測されたすべての値の合計値も提供します。
  • 概要: ヒストグラムに似ていますが、スライディング タイム ウィンドウに対して構成可能な分位数も計算されます。

詳細については、指標タイプをご覧ください。

SLI の指標の作成

アプリケーションで Prometheus 指標を出力する場合は、これらの指標を SLI に使用できます。

  • リクエスト数とエラー数に関する可用性 SLI については、Prometheus カウンタ指標から始めます。
  • レイテンシ SLI には、Prometheus ヒストグラムまたはサマリー指標を使用できます。

Google Cloud Managed Service for Prometheus を使用して Prometheus 指標を収集するには、マネージドまたはセルフデプロイの指標収集の設定に関するドキュメントをご覧ください。

Google Cloud コンソールで SLO を作成する場合、デフォルトの可用性とレイテンシの SLO タイプに Prometheus 指標は含まれません。Prometheus 指標を使用するには、カスタム SLO を作成し、SLI の Prometheus 指標を選択します。

Prometheus 指標は prometheus.googleapis.com/ で始まります。

GKE の指標

Google Cloud Managed Service for Prometheus による指標のマネージド コレクションは、GKE のデフォルトで有効になっています。マネージド コレクションをデフォルトで有効にしない GKE 環境で実行している場合は、マネージド コレクションを手動で有効にするをご覧ください。マネージド コレクションが有効になっている場合、クラスタ内コンポーネントは実行されますが、有効な指標エンドポイントをスクレイピングするか、マネージド指標パッケージのいずれかを有効にする PodMonitoring リソースをデプロイするまで、指標は生成されません。

コントロール プレーン指標パッケージには、システム正常性を示す便利な指標が含まれています。コントロール プレーンの指標の収集を有効にして、可用性、レイテンシ、その他の SLI にこれらの指標を使用します。

  • API サーバーの指標を使用して、API サーバーの負荷、エラーを返した API サーバー リクエストの割合、API サーバーが受信したリクエストのレスポンス レイテンシを追跡します。
  • スケジューラの指標を使用すると、保留中の Pod に十分なリソースがない場合に発生するスケジュール設定の問題に事前に対応できます。

可用性 SLI の指標

Cloud Monitoring API でリクエスト ベースの可用性 SLI を表現するには、TimeSeriesRatio 構造体を使用し、リクエスト全体に対する「良い」リクエストと「悪い」リクエストの比率を設定します。この比率は、RequestBasedSli 構造体の goodTotalRatio フィールドで使用されます。

アプリケーションでは、この比率の構成に使用できる Prometheus 指標を出力する必要があります。アプリケーションは、次のうち少なくとも 2 つを出力する必要があります。

  1. 合計イベントをカウントする指標。この指標は、比率の totalServiceFilter で使用します。

    Prometheus カウンタを使用できます。このカウンタはイベントごとに増加します。

  2. 「悪い」イベントをカウントする指標。この指標は、比率の badServiceFilter で使用します。

    Prometheus カウンタは、エラーやその他の「悪い」イベントごとにインクリメントできます。

  3. 「良好」イベントをカウントする指標。この指標は、比率の goodServiceFilter で使用します。

    成功または他の「良好」なイベントごとに増加する Prometheus カウンタを使用できます。

レイテンシ SLI の指標

Cloud Monitoring API でリクエスト ベースのレイテンシ SLI を表現するには、DistributionCut 構造体を作成します。この構造体は、RequestBasedSli 構造体の distributionCut フィールドで使用されます。

アプリケーションでは、分布カット値の作成に使用できる Prometheus 指標を出力する必要があります。この目的には、Prometheus のヒストグラムまたはサマリーを使用できます。レスポンスが SLO 内にあるかどうかを正確に測定できるようにバケットを定義する方法については、Prometheus ドキュメントの指標タイプをご覧ください。

次の JSON の例では、GKE コントロール プレーンの指標 prometheus.googleapis.com/apiserver_request_duration_seconds 指標を使用して、サービスのレイテンシ SLO を作成します。SLO では、1 か月間のレスポンス レイテンシの 98% が 50 秒未満である必要があります。

{
 "displayName": "98% Calendar month - Request Duration Under 50s",
 "goal": 0.98,
 "calendarPeriod": "MONTH",
 "serviceLevelIndicator": {
   "requestBased": {
     "distributionCut": {
       "distributionFilter": "metric.type=\"prometheus.googleapis.com/apiserver_request_duration_seconds/histogram\" resource.type=\"prometheus_target\"",
       "range": {
         "min": "-Infinity",
         "max": 50
       }
     }
   }
 }
}

次のステップ