4.4. ユーザーワークロードモニタリングのメトリクスの設定
クラスターコンポーネントと独自のワークロードのパフォーマンスを監視するためのメトリクスのコレクションを設定します。
取り込んだメトリクスをリモートシステムに送信して長期保存したり、別のクラスターからのデータを識別するためにメトリクスにクラスター ID ラベルを追加したりできます。
4.4.1. リモート書き込みストレージの設定
リモート書き込みストレージを設定して、Prometheus が取り込んだメトリクスをリモートシステムに送信して長期保存できるようにします。これを行っても、Prometheus がメトリクスを保存する方法や期間には影響はありません。
前提条件
- 
							cluster-adminクラスターロールを持つユーザーとして、またはopenshift-user-workload-monitoringプロジェクトのuser-workload-monitoring-config-editロールを持つユーザーとして、クラスターにアクセスできる。
- クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
- 
							OpenShift CLI (oc) がインストールされている。
- リモート書き込み互換性のあるエンドポイント (Thanos) を設定し、エンドポイント URL を把握している。リモート書き込み機能と互換性のないエンドポイントの情報ては、Prometheus リモートエンドポイントおよびストレージに関するドキュメント を参照してください。 重要- Red Hat は、リモート書き込み送信側の設定に関する情報のみを提供し、受信側エンドポイントの設定に関するガイダンスは提供しません。お客様は、リモート書き込みと互換性のある独自のエンドポイントを設定する責任があります。エンドポイントレシーバー設定に関する問題は、Red Hat 製品サポートには含まれません。 
- リモート書き込みエンドポイントの - Secretオブジェクトに認証クレデンシャルを設定している。シークレットは- openshift-user-workload-monitoringnamespace に作成する必要があります。警告- セキュリティーリスクを軽減するには、HTTPS および認証を使用してメトリクスをエンドポイントに送信します。 
手順
- openshift-user-workload-monitoringプロジェクトで- user-workload-monitoring-configconfig map を編集します。- oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config - $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下の例のように、 - data/config.yaml/prometheusの下に- remoteWrite:セクションを追加します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 認証クレデンシャルの後に、書き込みの再ラベル設定値を追加します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- リモートエンドポイントに送信するメトリクスの設定を追加します。
 - my_metricという単一メトリクスを転送する例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - my_namespacenamespace に- my_metric_1および- my_metric_2というメトリクスを転送する例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 変更を適用するためにファイルを保存します。新しい設定は自動的に適用されます。
4.4.1.1. サポート対象のリモート書き込み認証設定
異なる方法を使用して、リモート書き込みエンドポイントとの認証を行うことができます。現時点でサポートされている認証方法は AWS 署名バージョン 4、Basic 認証、認可、OAuth 2.0、および TLS クライアントです。以下の表は、リモート書き込みで使用するサポート対象の認証方法の詳細を示しています。
| 認証方法 | config map フィールド | 説明 | 
|---|---|---|
| AWS 署名バージョン 4 | 
										 | この方法では、AWS Signature Version 4 認証を使用して要求を署名します。この方法は、認可、OAuth 2.0、または Basic 認証と同時に使用することはできません。 | 
| Basic 認証 | 
										 | Basic 認証は、設定されたユーザー名とパスワードを使用してすべてのリモート書き込み要求に承認ヘッダーを設定します。 | 
| 認可 | 
										 | 
										Authorization は、設定されたトークンを使用して、すべてのリモート書き込みリクエストに  | 
| OAuth 2.0 | 
										 | 
										OAuth 2.0 設定は、クライアントクレデンシャル付与タイプを使用します。Prometheus は、リモート書き込みエンドポイントにアクセスするために、指定されたクライアント ID およびクライアントシークレットを使用して  | 
| TLS クライアント | 
										 | TLS クライアント設定は、TLS を使用してリモート書き込みエンドポイントサーバーで認証するために使用される CA 証明書、クライアント証明書、およびクライアントキーファイル情報を指定します。設定例は、CA 証明書ファイル、クライアント証明書ファイル、およびクライアントキーファイルがすでに作成されていることを前提としています。 | 
4.4.1.2. リモート書き込み認証の設定例
						次のサンプルは、リモート書き込みエンドポイントに接続するために使用できるさまざまな認証設定を示しています。各サンプルでは、認証情報やその他の関連設定を含む対応する Secret オブジェクトを設定する方法も示しています。各サンプルは openshift-user-workload-monitoring namespace 内のユーザー定義プロジェクトのモニタリングで使用する認証を設定します。
					
4.4.1.2.1. AWS 署名バージョン 4 認証のサンプル YAML
							以下は、openshift-user-workload-monitoring namespace の sigv4-credentials という名前の sigv4 シークレットの設定を示しています。
						
							以下は、openshift-user-workload-monitoring namespace の sigv4-credentials という名前の Secret オブジェクトを使用する AWS Signature Version 4 リモート書き込み認証のサンプルを示しています。
						
4.4.1.2.2. Basic 認証用のサンプル YAML
							以下は、openshift-user-workload-monitoring namespace の rw-basic-auth という名前の Secret オブジェクトの Basic 認証設定の例を示しています。
						
							以下の例は、openshift-user-workload-monitoring namespace の rw-basic-auth という名前の Secret オブジェクトを使用する basicAuth リモート書き込み設定を示しています。これは、エンドポイントの認証認証情報がすでに設定されていることを前提としています。
						
4.4.1.2.3. Secret オブジェクトを使用したベアラートークンによる認証のサンプル YAML
							以下は、openshift-user-workload-monitoring namespace の rw-bearer-auth という名前の Secret オブジェクトのベアラートークン設定を示しています。
						
- 1
- 認証トークン。
							以下は、openshift-user-workload-monitoring namespace の rw-bearer-auth という名前の Secret オブジェクトを使用するベアラートークン設定マップの設定例を示しています。
						
4.4.1.2.4. OAuth 2.0 認証のサンプル YAML
							以下は、openshift-user-workload-monitoring namespace の oauth2-credentials という名前の Secret オブジェクトの OAuth 2.0 設定のサンプルを示しています。
						
							以下は、openshift-user-workload-monitoring namespace の oauth2-credentials という Secret オブジェクトを使用した oauth2 リモート書き込み認証のサンプル設定です。
						
- 1 3
- 対応するSecretオブジェクトの名前。ClientIdはConfigMapオブジェクトを参照することもできますが、clientSecretはSecretオブジェクトを参照する必要があることに注意してください。
- 2 4
- 指定されたSecretオブジェクトの OAuth 2.0 認証情報が含まれるキー。
- 5
- 指定されたclientIdおよびclientSecretでトークンを取得するために使用される URL。
- 6
- 認可要求の OAuth 2.0 スコープ。これらのスコープは、トークンがアクセスできるデータを制限します。
- 7
- 認可サーバーに必要な OAuth 2.0 認可要求パラメーター。
4.4.1.2.5. TLS クライアント認証のサンプル YAML
							以下は、openshift-user-workload-monitoring namespace 内の mtls-bundle という名前の tls Secret オブジェクトに対する TLS クライアント設定のサンプルです。
						
							以下の例は、mtls-bundle という名前の TLS Secret オブジェクトを使用する tlsConfig リモート書き込み認証設定を示しています。
						
4.4.1.3. リモート書き込みキューの設定例
						リモート書き込み用の queueConfig オブジェクトを使用して、リモート書き込みキューパラメーターを調整できます。以下の例は、キューパラメーターと、openshift-user-workload-monitoring namespace のユーザー定義プロジェクトのモニタリング用のデフォルト値を示しています。
					
デフォルト値を使用したリモート書き込みパラメーターの設定例
4.4.1.4. リモート書き込みメトリクスの表
次の表に、リモート書き込みおよびリモート書き込み関連のメトリクスと、リモート書き込みの設定時に発生する問題を解決するのに役立つ詳細な説明を記載します。
| メトリクス | 説明 | 
|---|---|
| 
										 | 任意のサンプルについて、Prometheus が先行書き込みログ (WAL) に保存した最新のタイムスタンプを表示します。 | 
| 
										 | リモート書き込みキューが正常に送信した最新のタイムスタンプを表示します。 | 
| 
										 | リモート書き込みが送信に失敗し、リモートストレージに再送信する必要があったサンプルの数。このメトリクスの値が一定して高い場合は、ネットワークまたはリモートストレージエンドポイントに問題があります。 | 
| 
										 | 各リモートエンドポイントで現在実行されているシャードの数を示します。 | 
| 
										 | 現在の書き込みスループットと、受信サンプルと送信サンプルの比率に基づいて計算された必要なシャードの数を示します。 | 
| 
										 | 現在の設定に基づくシャードの最大数を示します。 | 
| 
										 | 現在の設定に基づくシャードの最小数を示します。 | 
| 
										 | Prometheus が現在新しいデータを書き込んでいる WAL セグメントファイル。 | 
| 
										 | 各リモート書き込みインスタンスが現在読み取っている WAL セグメントファイル。 | 
4.4.2. メトリクスのクラスター ID ラベルの作成
					openshift-user-workload-monitoring namespace の user-workload-monitoring-config config map にリモート書き込みストレージの write_relabel 設定を追加することで、メトリクスのクラスター ID ラベルを作成できます。
				
						Prometheus が namespace ラベルを公開するユーザーワークロードターゲットをスクレイプすると、システムはこのラベルを exported_namespace として保存します。この動作により、最終的な namespace ラベル値がターゲット Pod の namespace と等しくなります。このデフォルトは、PodMonitor または ServiceMonitor オブジェクトの honorLabels フィールドの値を true に設定してオーバーライドすることはできません。
					
前提条件
- 
							cluster-adminクラスターロールを持つユーザーとして、またはopenshift-user-workload-monitoringプロジェクトのuser-workload-monitoring-config-editロールを持つユーザーとして、クラスターにアクセスできる。
- クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
- 
							OpenShift CLI (oc) がインストールされている。
- リモート書き込みストレージを設定している。
手順
- openshift-user-workload-monitoringプロジェクトで- user-workload-monitoring-configconfig map を編集します。- oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config - $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- data/config.yaml/prometheus/remoteWriteの下にある- writeRelabelConfigs:セクションで、クラスター ID の再ラベル付け設定値を追加します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 次のサンプルは、クラスター ID ラベル - cluster_idを使用してメトリクスを転送する方法を示しています。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- システムは最初に__tmp_openshift_cluster_id__という名前の一時的なクラスター ID ソースラベルを適用します。この一時的なラベルは、指定するクラスター ID ラベル名に置き換えられます。
- 2
- リモート書き込みストレージに送信されるメトリクスのクラスター ID ラベルの名前を指定します。メトリクスにすでに存在するラベル名を使用する場合、その値はこのクラスター ID ラベルの名前で上書きされます。ラベル名には__tmp_openshift_cluster_id__は使用しないでください。最後の再ラベル手順では、この名前を使用するラベルを削除します。
- 3
- replace置き換えラベルの再設定アクションは、一時ラベルを送信メトリクスのターゲットラベルに置き換えます。このアクションはデフォルトであり、アクションが指定されていない場合に適用されます。
 
- 変更を適用するためにファイルを保存します。新しい設定は自動的に適用されます。
4.4.3. ユーザー定義プロジェクトのメトリクス収集の設定
					ServiceMonitor リソースを作成して、ユーザー定義プロジェクトのサービスエンドポイントからメトリクスを収集できます。これは、アプリケーションが Prometheus クライアントライブラリーを使用してメトリクスを /metrics の正規の名前に公開していることを前提としています。
				
					このセクションでは、ユーザー定義のプロジェクトでサンプルサービスをデプロイし、次にサービスのモニター方法を定義する ServiceMonitor リソースを作成する方法を説明します。
				
4.4.3.1. サンプルサービスのデプロイ
ユーザー定義のプロジェクトでサービスのモニタリングをテストするには、サンプルサービスをデプロイできます。
前提条件
- 
								cluster-adminクラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。
手順
- 
								サービス設定の YAML ファイルを作成します。この例では、prometheus-example-app.yamlという名前です。
- 以下のデプロイメントおよびサービス設定の詳細をファイルに追加します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - この設定は、 - prometheus-example-appという名前のサービスをユーザー定義の- ns1プロジェクトにデプロイします。このサービスは、カスタム- versionメトリクスを公開します。
- 設定をクラスターに適用します。 - oc apply -f prometheus-example-app.yaml - $ oc apply -f prometheus-example-app.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - サービスをデプロイするには多少時間がかかります。 
- Pod が実行中であることを確認できます。 - oc -n ns1 get pod - $ oc -n ns1 get pod- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m - NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.4.3.2. サービスのモニター方法の指定
						サービスが公開するメトリクスを使用するには、OpenShift Container モニタリングを、/metrics エンドポイントからメトリクスを収集できるように設定する必要があります。これは、サービスのモニタリング方法を指定する ServiceMonitor カスタムリソース定義、または Pod のモニタリング方法を指定する PodMonitor CRD を使用して実行できます。前者の場合は Service オブジェクトが必要ですが、後者の場合は不要です。これにより、Prometheus は Pod によって公開されるメトリクスエンドポイントからメトリクスを直接収集することができます。
					
						この手順では、ユーザー定義プロジェクトでサービスの ServiceMonitor リソースを作成する方法を説明します。
					
前提条件
- 
								cluster-adminクラスターロールまたはmonitoring-editクラスターロールのあるユーザーとしてクラスターにアクセスできる。
- ユーザー定義プロジェクトのモニタリングが有効化されている。
- この例では、 - prometheus-example-appサンプルサービスを- ns1プロジェクトにデプロイしている。注記- prometheus-example-appサンプルサービスは TLS 認証をサポートしません。
手順
- 
								example-app-service-monitor.yamlという名前の新しい YAML 設定ファイルを作成します。
- ServiceMonitorリソースを YAML ファイルに追加します。以下の例では、- prometheus-example-monitorという名前のサービスモニターを作成し、- ns1namespace の- prometheus-example-appサービスによって公開されるメトリクスを収集します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- ユーザー定義の namespace の - ServiceMonitorリソースは、同じ namespace のサービスのみを検出できます。つまり、- ServiceMonitorリソースの- namespaceSelectorフィールドは常に無視されます。
- 設定をクラスターに適用します。 - oc apply -f example-app-service-monitor.yaml - $ oc apply -f example-app-service-monitor.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ServiceMonitorをデプロイするのに多少時間がかかります。
- ServiceMonitorリソースが実行されていることを確認します。- oc -n <namespace> get servicemonitor - $ oc -n <namespace> get servicemonitor- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME AGE prometheus-example-monitor 81m - NAME AGE prometheus-example-monitor 81m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.4.3.3. サービスエンドポイント認証設定の例
						ServiceMonitor および PodMonitor カスタムリソース定義 (CRD) を使用して、ユーザー定義のプロジェクト監視用のサービスエンドポイントの認証を設定できます。
					
						次のサンプルは、ServiceMonitor リソースのさまざまな認証設定を示しています。各サンプルでは、認証認証情報やその他の関連設定を含む対応する Secret オブジェクトを設定する方法を示します。
					
4.4.3.3.1. ベアラートークンを使用した YAML 認証の例
							以下の例は、ns1 namespace の example-bearer-auth という名前の Secret オブジェクトのベアラートークン設定を示しています。
						
ベアラートークンシークレットの例
- 1
- 認証トークンを指定します。
							以下の例は、ServiceMonitor CRD のベアラートークン認証設定を示しています。この例では、example-bearer-auth という名前の Secret オブジェクトを使用しています。
						
ベアラートークンの認証設定の例
								bearerTokenFile を使用してベアラートークンを設定しないでください。bearerTokenFile 設定を使用する場合、ServiceMonitor リソースは拒否されます。
							
4.4.3.3.2. Basic 認証用のサンプル YAML
							次のサンプルは、ns1 の example-basic-auth という名前の Secret オブジェクトの Basic 認証設定を示しています。
						
Basic 認証シークレットの例
							以下の例は、ServiceMonitor CRD の Basic 認証設定を示しています。この例では、example-basic-auth という名前の Secret オブジェクトを使用しています。
						
Basic 認証の設定例
4.4.3.3.3. OAuth 2.0 を使用した YAML 認証のサンプル
							以下の例は、ns1 namespace の example-oauth2 という名前の Secret オブジェクトの OAuth 2.0 設定を示しています。
						
OAuth 2.0 シークレットの例
							以下の例は、ServiceMonitor CRD の OAuth 2.0 認証設定を示しています。この例では、example-oauth2 という名前の Secret オブジェクトを使用します。
						
OAuth 2.0 認証の設定例