このページでは、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 つを出力する必要があります。
合計イベントをカウントする指標。この指標は、比率の
totalServiceFilter
で使用します。Prometheus カウンタを使用できます。このカウンタはイベントごとに増加します。
「悪い」イベントをカウントする指標。この指標は、比率の
badServiceFilter
で使用します。Prometheus カウンタは、エラーやその他の「悪い」イベントごとにインクリメントできます。
「良好」イベントをカウントする指標。この指標は、比率の
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
}
}
}
}
}
次のステップ
- SLO を作成する
- Google Cloud Managed Service for Prometheus の詳細を確認する
- コントロール プレーンの指標の詳細を確認する。