3.3. コアプラットフォームモニタリングのデータの保存と記録
メトリクスとアラートデータの保存および記録、ログの設定と記録するアクティビティーの指定、Prometheus が保存されたデータを保持する期間の制御、データの最大ディスク領域の設定を行います。これらのアクションは、データを保護し、データをトラブルシューティングに使用するのに役立ちます。
3.3.1. 永続ストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
永続ストレージを使用してクラスターモニタリングを実行すると、次の利点が得られます。
- メトリクスとアラートデータを永続ボリューム (PV) に保存することで、データ損失から保護します。その結果、Pod が再起動または再作成されても存続できます。
- Alertmanager Pod が再起動したときに、重複した通知を受信したり、アラートのサイレンスが失われたりするのを回避します。
マルチノードクラスターでは、高可用性を確保するために、Prometheus と Alertmanager の永続ストレージを設定する必要があります。
実稼働環境では、永続ストレージを設定することを強く推奨します。
3.3.1.1. 永続ストレージの前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- ディスクが一杯にならないように十分な永続ストレージを確保します。
永続ボリュームを設定する際に、
volumeModeパラメーターのストレージタイプ値としてFilesystemを使用します。重要-
PersistentVolumeリソースでvolumeMode: Blockで記述されている生のブロックボリュームを使用しないでください。Prometheus は raw ブロックボリュームを使用できません。 - Prometheus は、POSIX に準拠していないファイルシステムをサポートしません。たとえば、一部の NFS ファイルシステム実装は POSIX に準拠していません。ストレージに NFS ファイルシステムを使用する場合は、NFS 実装が完全に POSIX に準拠していることをベンダーに確認してください。
-
3.3.1.2. 永続ボリューム要求の設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントの監視に永続ボリューム (PV) を使用するには、永続ボリューム要求 (PVC) を設定する必要があります。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-monitoringプロジェクトでcluster-monitoring-configconfig map を編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-configコンポーネントの PVC 設定を
data/config.yamlの下に追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | <component>:1 volumeClaimTemplate: spec: storageClassName: <storage_class>2 resources: requests: storage: <amount_of_storage>3 次の例では、Prometheus の永続ストレージを要求する PVC を設定します。
PVC 設定の例
apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: volumeClaimTemplate: spec: storageClassName: my-storage-class resources: requests: storage: 40Gi変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされ、新しいストレージ設定が適用されます。
警告PVC 設定で config map を更新すると、影響を受ける
StatefulSetオブジェクトが再作成され、一時的なサービス停止が発生します。
3.3.1.3. 永続ボリュームのサイズ変更 リンクのコピーリンクがクリップボードにコピーされました!
モニタリングコンポーネント (Prometheus や Alertmanager など) の永続ボリューム (PV) のサイズを変更できます。永続ボリューム要求 (PVC) を手動で拡張し、コンポーネントが設定されている config map を更新する必要があります。
PVC のサイズのみ拡張可能です。ストレージサイズを縮小することはできません。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。 - コア OpenShift Container Platform モニタリングコンポーネント用に少なくとも 1 つの PVC を設定しました。
-
OpenShift CLI (
oc) がインストールされている。
手順
- 更新されたストレージ要求を使用して PVC を手動で拡張します。詳細は、永続ボリュームの拡張 の「ファイルシステムを使用した永続ボリューム要求 (PVC) の拡張」を参照してください。
openshift-monitoringプロジェクトでcluster-monitoring-configconfig map を編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-configdata/config.yamlの下に、コンポーネントの PVC 設定用の新しいストレージサイズを追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | <component>:1 volumeClaimTemplate: spec: resources: requests: storage: <amount_of_storage>2 次の例では、Prometheus インスタンスの新しい PVC 要求を 100 ギガバイトに設定します。
prometheusK8sのストレージ設定例apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: volumeClaimTemplate: spec: resources: requests: storage: 100Gi変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
警告新しいストレージサイズで config map を更新すると、影響を受ける
StatefulSetオブジェクトが再作成され、サービスが一時的に停止します。
3.3.2. Prometheus メトリクスデータの保持期間およびサイズの変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Prometheus はコアプラットフォームモニタリングのメトリクスデータを 15 日間保持します。データの削除時に Prometheus インスタンスが変更する保持時間を変更できます。保持されるメトリクスデータが使用するディスク容量の最大量を設定することもできます。
データコンパクションは 2 時間ごとに実行されます。そのため、コンパクションが実行される前に永続ボリューム (PV) がいっぱいになり、retentionSize 制限を超える可能性があります。その場合、PV 上のスペースが retentionSize 制限を下回るまで、KubePersistentVolumeFillingUp アラートが発生します。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-monitoringプロジェクトでcluster-monitoring-configconfig map を編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config保持期間およびサイズ設定を
data/config.yamlに追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: retention: <time_specification>1 retentionSize: <size_specification>2 次の例では、Prometheus インスタンスの保持時間を 24 時間、保持サイズを 10 ギガバイトに設定します。
Prometheus の保持期間を設定する例
apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: retention: 24h retentionSize: 10GB- 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
3.3.3. Metrics Server の監査ログの設定 リンクのコピーリンクがクリップボードにコピーされました!
Metrics Server の監査ログを設定して、サーバー問題のトラブルシューティングに役立てることができます。監査ログには、クラスター内のアクションシーケンスが記録されます。ユーザー、アプリケーション、コントロールプレーンのアクティビティーも記録できます。
監査ログルールを設定して、特定のイベントと関連データのサブセットを記録できます。次の監査プロファイルは設定ルールを定義します。
-
Metadata(デフォルト): このプロファイルは、ユーザー、タイムスタンプ、リソース、動詞などのイベントメタデータを記録します。リクエストとレスポンスのボディーは記録されません。 -
Request: このプロファイルは、イベントメタデータとリクエストボディーをログに記録しますが、レスポンスボディーは記録しません。この設定は、リソースリクエスト以外には適用されません。 -
RequestResponse: このプロファイルは、イベントメタデータ、リクエストボディー、およびレスポンスボディーをログに記録します。この設定は、リソースリクエスト以外には適用されません。 -
None: 前述のイベントはいずれも記録されません。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-monitoringプロジェクトでcluster-monitoring-configconfig map を編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-configdata/config.yamlの下に Metrics Server の監査ログ設定を追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | metricsServer: audit: profile: <audit_log_profile>1 - 1
- Metrics Server の監査プロファイルを指定します。
- 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
監査プロファイルが適用されていることを確認します。
$ oc -n openshift-monitoring get deploy metrics-server -o yaml | grep -- '--audit-policy-file=*'出力例
- --audit-policy-file=/etc/audit/request-profile.yaml
3.3.4. モニタリングコンポーネントのログレベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
Alertmanager、Prometheus Operator、Prometheus、および Thanos Querier のログレベルを設定できます。
cluster-monitoring-config ConfigMap オブジェクト内の関連コンポーネントには、次のログレベルを適用できます。
-
debug:デバッグ、情報、警告、およびエラーメッセージをログに記録します。 -
info:情報、警告およびエラーメッセージをログに記録します。 -
warn:警告およびエラーメッセージのみをログに記録します。 -
error:エラーメッセージのみをログに記録します。
デフォルトのログレベルは info です。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-monitoringプロジェクトでcluster-monitoring-configconfig map を編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-configコンポーネントの
logLevel: <log_level>をdata/config.yamlの下に追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | <component>:1 logLevel: <log_level>2 - 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
関連するプロジェクトでデプロイメントまたは Pod 設定を確認し、ログレベルが適用されていることを確認します。以下の例では、
prometheus-operatorデプロイメントのログレベルを確認します。$ oc -n openshift-monitoring get deploy prometheus-operator -o yaml | grep "log-level"出力例
- --log-level=debugコンポーネントの Pod が実行中であることを確認します。次の例では、Pod のステータスをリスト表示します。
$ oc -n openshift-monitoring get pods注記認識されない
logLevel値がConfigMapオブジェクトに含まれる場合は、コンポーネントの Pod が正常に再起動しない可能性があります。
3.3.5. Prometheus のクエリーログファイルの有効化 リンクのコピーリンクがクリップボードにコピーされました!
エンジンによって実行されたすべてのクエリーをログファイルに書き込むように Prometheus を設定できます。
ログローテーションはサポートされていないため、問題のトラブルシューティングが必要な場合にのみ、この機能を一時的に有効にします。トラブルシューティングが終了したら、ConfigMap オブジェクトに加えた変更を元に戻してクエリーログを無効にし、機能を有効にします。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-monitoringプロジェクトでcluster-monitoring-configconfig map を編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-configPrometheus の
queryLogFileパラメーターをdata/config.yamlの下に追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: queryLogFile: <path>1 - 1
- クエリーが記録されるファイルへの完全なパスを追加します。
- 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
コンポーネントの Pod が実行中であることを確認します。次のコマンド例は、Pod のステータスを表示します。
$ oc -n openshift-monitoring get pods出力例
... prometheus-operator-567c9bc75c-96wkj 2/2 Running 0 62m prometheus-k8s-0 6/6 Running 1 57m prometheus-k8s-1 6/6 Running 1 57m thanos-querier-56c76d7df4-2xkpc 6/6 Running 0 57m thanos-querier-56c76d7df4-j5p29 6/6 Running 0 57m ...クエリーログを読みます。
$ oc -n openshift-monitoring exec prometheus-k8s-0 -- cat <path>重要ログに記録されたクエリー情報を確認した後、config map の設定を元に戻します。
3.3.6. Thanos Querier のクエリーロギングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
openshift-monitoring プロジェクトのデフォルトのプラットフォームモニタリングの場合、Cluster Monitoring Operator (CMO) を有効にして Thanos Querier によって実行されるすべてのクエリーをログに記録できます。
ログローテーションはサポートされていないため、問題のトラブルシューティングが必要な場合にのみ、この機能を一時的に有効にします。トラブルシューティングが終了したら、ConfigMap オブジェクトに加えた変更を元に戻してクエリーログを無効にし、機能を有効にします。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。
手順
openshift-monitoring プロジェクトで Thanos Querier のクエリーロギングを有効にすることができます。
openshift-monitoringプロジェクトでcluster-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config以下の例のように
thanosQuerierセクションをdata/config.yamlに追加し、値を追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | thanosQuerier: enableRequestLogging: <value>1 logLevel: <value>2 - 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
検証
Thanos Querier Pod が実行されていることを確認します。次のコマンドの例は、
openshift-monitoringプロジェクトの Pod のステータスを一覧表示します。$ oc -n openshift-monitoring get pods以下のサンプルコマンドをモデルとして使用して、テストクエリーを実行します。
$ token=`oc create token prometheus-k8s -n openshift-monitoring`$ oc -n openshift-monitoring exec -c prometheus prometheus-k8s-0 -- curl -k -H "Authorization: Bearer $token" 'https://thanos-querier.openshift-monitoring.svc:9091/api/v1/query?query=cluster_version'以下のコマンドを実行してクエリーログを読み取ります。
$ oc -n openshift-monitoring logs <thanos_querier_pod_name> -c thanos-query注記thanos-querierPod は高可用性 (HA) Pod であるため、1 つの Pod でのみログを表示できる可能性があります。-
ログに記録されたクエリー情報を確認したら、config map で
enableRequestLoggingの値をfalseに変更してクエリーロギングを無効にします。