1.6. 可観測性の高度な設定
可観測性を有効にしたら、環境の特定のニーズに合わせて可観測性設定をさらにカスタマイズできます。可観測性サービスが収集するクラスターフリートデータを管理および表示します。
必要なアクセス権: クラスター管理者
以下のアプリケーション詳細設定のトピックを確認してください。
1.6.1. カスタムメトリクスの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes を使用してリモートクラスターからのメトリクスを監視するには、そのメトリクスがプラットフォームまたはユーザーワークロードメトリクスとしてエクスポートされているかどうかを確認します。メトリクスタイプを確認するには、次の 3 つの方法のいずれかを使用します。
- 監視対象とするソリューションのドキュメントでメトリクスタイプを確認します。
- 製品のサポートに問い合わせてメトリクスタイプを確認します。
監視対象リソースの
ServiceMonitorが使用するアノテーションを確認して、メトリクスタイプを確認します。-
プラットフォームメトリクスは、
operator.prometheus.io/controller-id: openshift-platform-monitoring/prometheus-operatorを使用します。 -
ユーザーワークロードメトリクスは、
operator.prometheus.io/controller-id: openshift-user-workload-monitoring/prometheus-operatorを使用します。
-
プラットフォームメトリクスは、
また、コンソールで Observe > Targets に移動し、右上の Source フィルターから Platform または User を選択することで、ServiceMonitor を見つけることもできます。
注記: Source フィルターは、メトリクスのリストではなく、サービスモニターまたはターゲットの情報を提供します。
メトリクスがプラットフォームの場合は、プラットフォームメトリクスの追加 に進んでください。メトリクスがユーザーワークロードの場合は、ユーザーワークロードメトリクスの追加 に進んでください。
必要なアクセス権: クラスター管理者
1.6.1.1. プラットフォームメトリクスの追加 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターの open-cluster-management-observability namespace 内に ConfigMap を作成することで、プラットフォームメトリクスを監視できます。名前として observability-metrics-custom-allowlist を使用します。プラットフォームメトリクスを監視するために使用できる次の ConfigMap の例を参照してください。
収集するメトリクスの名前は、マネージドクラスターの record パラメーターで定義した名前と同じです。クエリー式を実行すると、メトリクス値の結果が得られます。1 つのセクションまたは両方のセクションを使用できます。これは、モニタリングが有効なすべてのクラスターに当てはまります。
1 つのマネージドクラスターからのみカスタムメトリクスを収集する場合は、次の例を使用して、マネージドクラスターの open-cluster-management-addon-observability namespace 内で config map を適用します。
収集するメトリクスの名前は、マネージドクラスターの record パラメーターで定義した名前と同じです。クエリー式を実行すると、メトリクス値の結果が得られます。1 つのセクションまたは両方のセクションを使用できます。
1.6.1.2. ユーザーワークロードメトリクスの追加 リンクのコピーリンクがクリップボードにコピーされました!
メトリクスの取得対象とする namespace 内のマネージドクラスターで設定を指定することで、ユーザーワークロードメトリクスを監視できます。名前は observability-metrics-custom-allowlist である必要があります。形式は次の例と同じである必要があります。
前の例では、namespace monitored_namespace からのユーザーワークロードメトリクス sample_metrics を監視します。代わりに、open-cluster-management-addon-observability namespace で設定を作成すると、マネージドクラスターのすべての namespace からメトリクスが収集されます。
1.6.1.3. デフォルトメトリクスの削除 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターから特定のメトリクスのデータを収集したくない場合は、observability-metrics-custom-allowlist.yaml ファイルからメトリクスを削除します。メトリクスを削除すると、マネージドクラスターからメトリクスデータが収集されなくなります。デフォルトのメトリクスを削除するには、次の手順を実行します。
以下のコマンドを使用して、
mco observabilityが有効になっていることを確認します。oc get mco observability -o yaml
oc get mco observability -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow metrics_list.yamlパラメーターにデフォルトのメトリクスの名前を追加します。メトリクス名の先頭にハイフン-を付けます。次のメトリクスの例を参照してください。-cluster_infrastructure_provider
-cluster_infrastructure_providerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドで、
open-cluster-management-observabilitynamespace にobservability-metrics-custom-allowlistconfig map を作成します。oc apply -n open-cluster-management-observability -f observability-metrics-custom-allowlist.yaml
oc apply -n open-cluster-management-observability -f observability-metrics-custom-allowlist.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 可観測性サービスがマネージドクラスターから特定のメトリクスを収集していないことを確認します。Grafana ダッシュボードからメトリクスをクエリーしても、メトリクスは表示されません。
1.6.1.4. シングルノード OpenShift クラスターの動的メトリクス リンクのコピーリンクがクリップボードにコピーされました!
動的メトリクス収集では、特定の条件に基づいて自動的にメトリクスを収集できます。デフォルトでは、シングルノードの OpenShift クラスターは Pod およびコンテナーのリソースメトリクスを収集しません。シングルノードの OpenShift クラスターが特定のレベルのリソース消費に達すると、定義された詳細なメトリクスが動的に収集されます。一定期間にわたってクラスターリソースの消費量が常にしきい値を下回ると、詳細なメトリクスの収集が停止します。
メトリクスは、収集ルールによって指定されたマネージドクラスターの条件に基づいて動的に収集されます。これらのメトリクスは動的に収集されるため、次の Red Hat Advanced Cluster Management Grafana ダッシュボードにはデータが表示されません。収集ルールがアクティブ化され、対応するメトリクスが収集されると、収集ルールが起動している期間のデータが次のパネルに表示されます。
- Kubernetes/コンピューティングリソース/namespace (Pod)
- Kubernetes/コンピューティングリソース/namespace (ワークロード)
- Kubernetes/コンピューティングリソース/ノード (Pod)
- Kubernetes/コンピューティングリソース/Pod
- Kubernetes/コンピューティングリソース/ワークロード
コレクションルールには、以下の条件が含まれます。
- 動的に収集するメトリックのセット。
- PromQL 式として記述された条件。
-
コレクションの間隔。
trueに設定する必要があります。 - 収集ルールを評価する必要のあるクラスターを選択するための一致式。
デフォルトでは、コレクションルールは、30 秒ごとにマネージドクラスターで継続的に評価されるか、特定の間隔で評価されます。コレクションの間隔と時間間隔の最小値が優先されます。
収集ルールの条件が for 属性で指定された期間持続すると、収集ルールが開始され、ルールで指定されたメトリクスがマネージドクラスターに自動的に収集されます。メトリクスの収集は、収集ルールの条件がマネージドクラスターに存在しなくなった後、開始してから少なくとも 15 分後に自動的に停止します。
収集ルールは、collect_rules という名前のパラメーターセクションとしてグループ化され、グループとして有効または無効にできます。Red Hat Advanced Cluster Management インストールには、コレクションルールグループ (HighCPUUsage および HighMemoryUsage) のデフォルトコレクションルール SNOResourceUsage が含まれます。HighCPUUsage コレクションルールは、ノードの CPU 使用率が 70% を超えると開始されます。
HighMemoryUsage 収集ルールは、シングルノード OpenShift クラスターの全体的なメモリー使用率が使用可能なノードメモリーの 70% を超えると開始されます。現在、上記のしきい値は固定されており、変更できません。収集ルールが for 属性で指定された間隔を超えて開始すると、システムが dynamic_metrics セクションで指定されたメトリクスの収集を自動的に開始します。
次の YAML ファイルに含まれる collect_rules セクションの動的メトリクスのリストを参照してください。
以下の例のように、collect_rules.group は custom-allowlist で無効にできます。collect_rules.group を無効にすると、メトリクスの収集が以前の動作に戻ります。これらのメトリクスは、指定された間隔で定期的に収集されます。
collect_rules: - group: -SNOResourceUsage
collect_rules:
- group: -SNOResourceUsage
データは、ルールの開始時のみ Grafana に表示されます。
1.6.1.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 外部エンドポイントへのメトリクスのエクスポート を参照してください。
1.6.2. 可観測性アドオンのプロキシー設定 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターからの通信が HTTP および HTTPS プロキシーサーバー経由でハブクラスターにアクセスできるようにプロキシー設定を指定します。通常、アドオンでは、ハブクラスターとマネージドクラスターの間で HTTP および HTTPS プロキシーサーバーをサポートする特別な設定は必要ありません。ただし、可観測性アドオンを有効にしている場合は、プロキシー設定を完了する必要があります。
1.6.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- ハブクラスターがある。
- ハブクラスターとマネージドクラスター間のプロキシー設定が有効にしている。
1.6.2.2. プロキシー設定 リンクのコピーリンクがクリップボードにコピーされました!
可観測性アドオンのプロキシー設定を指定するには、以下の手順を実行します。
- ハブクラスターのクラスター namespace に移動します。
spec.proxyConfigパラメーターを追加して、プロキシー設定を使用してAddOnDeploymentConfigリソースを作成します。以下は、YAML の例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターで IP アドレスを取得するには、以下のコマンドを実行します。
oc -n default describe svc kubernetes | grep IP:
oc -n default describe svc kubernetes | grep IP:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ManagedClusterAddOnリソースに移動し、作成したAddOnDeploymentConfigリソースを参照して更新します。以下は、YAML の例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロキシー設定を検証します。プロキシー設定が正常に設定されている場合、マネージドクラスター上の可観測性アドオンエージェントによってデプロイされたメトリクスコレクターが、データをハブクラスターに送信します。以下の手順を実行します。
- ハブクラスターに移動し、Grafana ダッシュボードでマネージドクラスターに移動します。
- プロキシー設定のメトリクスを表示します。
1.6.2.3. 可観測性アドオンのプロキシー設定の無効化 リンクのコピーリンクがクリップボードにコピーされました!
開発に必要な変更がある場合は、ハブクラスターとマネージドクラスターに設定した可観測性アドオンのプロキシー設定を無効にすることが必要な場合があります。可観測性アドオンのプロキシー設定はいつでも無効にできます。以下の手順を実行します。
-
ManagedClusterAddOnリソースに移動します。 -
参照される
AddOnDeploymentConfigリソースを削除します。
1.6.3. ルート証明書のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform ルート認証をカスタマイズする場合は、ルートを alt_names セクションに追加する必要があります。OpenShift Container Platform ルートにアクセスできるようにするには、alertmanager.apps.<domainname>、observatorium-api.apps.<domainname>、rbac-query-proxy.apps.<domainname> の情報を追加します。
注記: ユーザーは証明書のローテーションおよび更新を行います。
1.6.3.1. オブジェクトストアにアクセスするための証明書のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
認証局を含む Secret リソースを作成し、MultiClusterObservability カスタムリソースを設定することで、監視オブジェクトストアとの安全な接続を設定できます。以下の手順を実行します。
オブジェクトストア接続を検証するには、次のコマンドを使用して、認証局を含むファイルに
Secretオブジェクトを作成します。oc create secret generic <tls_secret_name> --from-file=ca.crt=<path_to_file> -n open-cluster-management-observability
oc create secret generic <tls_secret_name> --from-file=ca.crt=<path_to_file> -n open-cluster-management-observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow - あるいは、次の YAML を適用してシークレットを作成することもできます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 相互 TLS を有効にする場合は、前のシークレットに
public.crtキーとprivate.keyキーを追加する必要があります。次のコマンドを使用して、
metricObjectStorageセクションに TLS シークレットの詳細を追加します。oc edit mco observability -o yaml
oc edit mco observability -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルは次の YAML のようになります。
metricObjectStorage: key: thanos.yaml name: thanos-object-storage tlsSecretName: tls-certs-secret tlsSecretMountPath: /etc/<s3-directory>/certs
metricObjectStorage: key: thanos.yaml name: thanos-object-storage tlsSecretName: tls-certs-secret1 tlsSecretMountPath: /etc/<s3-directory>/certs2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書の詳細を含む
http_config.tls_configセクションを追加して、thanos-object-storageシークレットのthanos.yaml定義を更新します。以下の例を参照してください。必要に応じて値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 相互 TLS を有効にする場合は、
tls_configセクションにcert_fileキーとkey_fileキーを追加する必要があります。以下の例を参照してください。必要に応じて値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ca_file、cert_file、およびkey_fileのパスは、MultiClusterObservabilityカスタムリソースのtlsSecretMountPathと一致させる必要があります。ca.crt、public.crt、private.crtは、tls_secret_name>Secretリソース内のそれぞれのキーと一致させる必要があります。
オブジェクトストアにアクセスできることを確認するには、Pod がデプロイされていることを確認します。以下のコマンドを実行します。
oc -n open-cluster-management-observability get pods -l app.kubernetes.io/name=thanos-store
oc -n open-cluster-management-observability get pods -l app.kubernetes.io/name=thanos-storeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.3.2. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Alertmanager ルートの証明書の更新に関する詳細は、Alertmanager の証明書の置き換え を参照してください。
1.6.4. カスタムルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
可観測性リソースに、Prometheus レコードルール および アラートルール を追加して、可観測性インストールのカスタムルールを作成します。
高価な式を事前計算するには、Prometheus の記録ルール機能を使用してアラート条件を作成し、外部サービスにアラートを送信する方法に基づいて通知を送信します。結果は新たな時系列のセットとして保存されます。
thanos-ruler-custom-rules config map 内にカスタムアラートルールを作成するには、次の手順を実行します。
CPU 使用率が定義した値を超えたときに通知を受け取るには、次のカスタムアラートルールを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
-
カスタムルールを更新すると、
observability-thanos-rulePod が自動的に再起動します。 - 設定には、複数のルールを作成できます。
-
デフォルトのアラートルールは、
open-cluster-management-observabilitynamespace のobservability-thanos-rule-default-rulesconfig map にあります。
-
カスタムルールを更新すると、
Pod のコンテナーメモリーキャッシュの合計を取得するためのカスタム記録ルールを作成します。以下の例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: config map に変更を加えた後、設定は自動的に再読み込みされます。この設定は、
observability-thanos-ruleサイドカー内のconfig-reloadにより、設定が再読み込みされます。
アラートルールが正しく機能していることを確認するには、Grafana ダッシュボードに移動し、Explore ページを選択して、ALERTS にクエリーを実行します。アラートを作成した場合、アラートは Grafana でのみ使用できます。
1.6.4.1. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 詳細は、Prometheus の設定 を参照してください。
- 記録ルールとアラートルールの詳細は、Prometheus ドキュメント の記録ルールとアラートルールを参照してください。
1.6.5. コンソールからの MultiClusterObservability カスタムリソースレプリカの更新 リンクのコピーリンクがクリップボードにコピーされました!
ワークロードが増加する場合は、可観測性 Pod のレプリカ数を増やします。ハブクラスターからコンソールに移動します。MultiClusterObservability カスタムリソースを見つけて、レプリカを変更するコンポーネントの replicas パラメーター値を更新します。更新した YAML は以下のようになります。
spec:
advanced:
receive:
replicas: 6
spec:
advanced:
receive:
replicas: 6
mco observability カスタムリソース内のパラメーターの詳細は、可観測性 API ドキュメントを参照してください。
1.6.6. 永続ボリュームおよび永続ボリューム要求の増減 リンクのコピーリンクがクリップボードにコピーされました!
永続ボリュームと永続ボリューム要求を増減して、ストレージクラス内のストレージの量を変更します。以下の手順を実行します。
-
ストレージクラスがボリュームの拡張をサポートしている場合は、
MultiClusterObservabilityカスタムリソースを更新して、永続ボリュームのサイズを増やします。 永続ボリュームのサイズを小さくするには、永続ボリュームを使用している Pod を削除し、永続ボリュームを削除して再作成します。永続ボリュームでデータが失われる可能性があります。以下の手順を実行します。
-
MultiClusterObservabilityカスタムリソースにアノテーションmco-pause: "true"を追加して、MultiClusterObservabilityOperator を一時停止します。 目的のコンポーネントのステートフルセットまたはデプロイメントを探します。レプリカ数を
0に変更します。これによりシャットダウンが開始され、データの損失を避けるために、該当する場合はローカルデータがアップロードされます。たとえば、ThanosReceiveステートフルセットの名前はobservability-thanos-receive-defaultで、デフォルトでは 3 つのレプリカがあります。したがって、次の永続ボリューム要求を探します。-
data-observability-thanos-receive-default-0 -
data-observability-thanos-receive-default-1 -
data-observability-thanos-receive-default-2
-
- 必要なコンポーネントによって使用される永続ボリュームおよび永続ボリューム要求を削除します。
-
MultiClusterObservabilityカスタムリソースで、コンポーネントの設定のストレージサイズを、ストレージサイズフィールドで必要な量に編集します。接頭辞にはコンポーネントの名前が付いています。 -
以前に追加したアノテーションを削除して
MultiClusterObservabilityOperator の一時停止を解除します。 -
Operator を一時停止した後に調整を開始するには、
multicluster-observability-operatorおよびobservatorium-operatorPod を削除します。Pod はすぐに再作成され、調整されます。
-
-
MultiClusterObservabilityカスタムリソースをチェックして、永続ボリュームとボリューム要求が更新されていることを確認します。
1.6.7. マネージドクラスター Observatorium API と Alertmanager URL のカスタマイズ (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
ロードバランサーまたはリザーブプロキシーを使用するときに、マネージドクラスターがハブクラスターとの通信に使用する Observatorium API および Alertmanager URL をカスタマイズして、すべての Red Hat Advanced Cluster Management 機能を維持できます。URL をカスタマイズするには、次の手順を実行します。
-
MultiClusterObservabilityspecのadvancedセクションに URL を追加します。以下の例を参照してください。
spec:
advanced:
customObservabilityHubURL: <yourURL>
customAlertmanagerHubURL: <yourURL>
spec:
advanced:
customObservabilityHubURL: <yourURL>
customAlertmanagerHubURL: <yourURL>
注記:
-
HTTPS URL のみがサポートされます。URL に
https://を追加しない場合、スキームは自動的に追加されます。 -
customObservabilityHubURLspecに、リモート書き込み API の標準パス/api/metrics/v1/default/api/v1/receiveを含めることができます。パスを含めない場合、Observability サービスは実行時にパスを自動的に追加します。 カスタム Observability ハブクラスター URL に使用する中間コンポーネントは MTLS 認証に依存しているため、TLS 終端を使用できません。カスタム Alertmanager ハブクラスター URL は、独自の既存の証明書手順を使用して中間コンポーネントの TLS 終端をサポートします。
-
customObservabilityHubURLを使用している場合は、次のテンプレートを使用してルートオブジェクトを作成します。<intermediate_component_url>を中間コンポーネントの URL に置き換えます。
-
-
customAlertmanagerHubURLを使用している場合は、次のテンプレートを使用してルートオブジェクトを作成します。<intermediate_component_url>を中間コンポーネントの URL に置き換えます。
1.6.7.1. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 可観測性アラートの詳細は、可観測性アラート を参照してください。
- アラート転送の詳細は、Prometheus Alertmanager ドキュメント を参照してください。
- 詳細は、可観測性アラート を参照してください。
1.6.8. 詳細な RBAC の設定 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
クラスター内の特定 namespace へのメトリクスアクセスを制限するには、詳細なロールベースアクセス制御 (RBAC) を使用します。詳細な RBAC を使用すると、アクセス権が付与された namespace のメトリクスのみの表示をアプリケーションチームに許可することができます。
ハブクラスターのユーザーのメトリクスアクセス制御は、ハブクラスター上で設定する必要があります。このハブクラスターでは、ManagedCluster カスタムリソースによってすべてのマネージドクラスターが表されます。RBAC を設定し、許可する namespace を選択するには、ManagedCluster カスタムリソースで指定されているルールとアクション動詞を使用します。
たとえば、my-awesome-app という名前のアプリケーションがあり、このアプリケーションが devcluster1 と devcluster2 という 2 つの異なるマネージドクラスター上にあるとします。どちらのクラスターも AwesomeAppNS namespace にあります。my-awesome-app-admins という名前の admin ユーザーグループがあり、このユーザーグループが、ハブクラスター上のこれら 2 つの namespace からのメトリクスにのみアクセスできるように制限するとします。
粒度の細かい RBAC を使用してユーザーグループのアクセスを制限するには、次の手順を実行します。
メトリクスにアクセスする権限を持つ
ClusterRoleリソースを定義します。リソースは次の YAML のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow グループ
my-awesome-app-adminsをawesome-app-metrics-roleのClusterRoleリソースにバインドするClusterRoleBindingリソースを定義します。リソースは次の YAML のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これらの手順を完了すると、my-awesome-app-admins のユーザーが Grafana コンソールにログインするときに、次の制限が適用されます。
- フリートレベルのデータを要約したダッシュボードのデータがユーザーに表示されません。
-
ユーザーは、
ClusterRoleリソースで指定されているマネージドクラスターと namespace のみを選択できます。
異なるタイプのユーザーアクセスを設定するには、namespace 内の異なるマネージドクラスターを表す個別の ClusterRoles および ClusterRoleBindings リソースを定義します。