Observability
Observability により、クラスターの健全性と使用率、およびクラスター群全体のワークロードを把握する方法を説明します。
概要
第1章 オブザーバビリティーサービス リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーにより、追加のテストやサポートなしでパフォーマンスの問題を特定して評価できます。Red Hat Advanced Cluster Management for Kubernetes のオブザーバビリティーコンポーネントは、クラスターの健全性と使用率、およびクラスター全体のワークロードを把握するために使用できるサービスです。オブザーバビリティーサービスを使用することで、オブザーバビリティーの範囲内のコンポーネントを自動化および管理できるようになります。
オブザーバビリティーサービスでは、オープンソースコミュニティーの既存の広く採用されているオブザーバビリティーツールを使用します。デフォルトでは、multicluster observability operator は Red Hat Advanced Cluster Management のインストール中に有効になります。Thanos は、長期的にメトリクスを格納するためにハブクラスター内にデプロイされます。observability-endpoint-operator は、インポートまたは作成された各マネージドクラスターに自動的にデプロイされます。このコントローラーは、Red Hat OpenShift Container Platform Prometheus からデータを収集するメトリクスコレクターを起動し、そのデータを Red Hat Advanced Cluster Management ハブクラスターに送信します。
オブザーバビリティーコンポーネントの詳細は、次のドキュメントを参照してください。
1.1. オブザーバビリティーアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
multiclusterhub-operator は、デフォルトで multicluster-observability-operator Pod を有効にします。multicluster-observability-operator Pod を設定する必要があります。
1.1.1. オブザーバビリティーオープンソースコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーサービスは、コミュニティーからのオープンソースのオブザーバビリティーツールを使用します。製品オブザーバビリティーサービスに含まれるツールの説明を以下に示します。
- Thanos
- 複数の Prometheus インスタンスにわたってグローバルクエリーを実行するために使用できるコンポーネントのツールキット。Prometheus データを長期保存するには、S3 互換のストレージに保存します。可用性が高くスケーラブルなメトリクスシステムを設定することもできます。
- Prometheus
- アプリケーションからメトリクスを収集し、それらのメトリクスを時系列データとして保存するために使用できる監視およびアラートツール。スクレイピングされたすべてのサンプルをローカルに保存し、ルールを実行して既存のデータから新しい時系列を集計および記録し、アラートを生成します。
- Alertmanager
- Prometheus からのアラートを管理および受信するためのツール。アラートを重複排除、グループ化し、メール、Slack、PagerDuty などのインテグレーションにルーティングします。特定のアラートの通知をオフ、および抑制するように Alertmanager を設定します。
1.1.2. オブザーバビリティーコンポーネントのバージョン リンクのコピーリンクがクリップボードにコピーされました!
Oberservability が Red Hat Advanced Cluster Management for Kubernetes 2.16 で使用するコンポーネントバージョンは、次のリストを参照してください。
| コンポーネント | Version |
|---|---|
| Grafana | 12.2.0 |
| Thanos | 0.39.2 |
| Prometheus Alertmanager | 0.28.1 |
| Prometheus | 3.5.0 |
| Prometheus operator | 0.85.0 |
| Kube State Metrics | 2.17.0 |
| Node Exporter | 1.9.1 |
| Memcached Exporter | 0.15.3 |
1.1.3. オブザーバビリティーアーキテクチャーの図 リンクのコピーリンクがクリップボードにコピーされました!
次の図は、オブザーバビリティーのコンポーネントを示しています。
オブザーバビリティーアーキテクチャーのコンポーネントには次の項目が含まれます。
-
マルチクラスターハブオペレーター (
multiclusterhub-operatorPod とも呼ばれます) は、multicluster-observability-operatorPod をデプロイします。これは、ManifestWorksリソースの生成を通じて、ハブクラスター上のメトリクスストアやマネージドクラスター上のコレクターなど、Red Hat Advanced Cluster Management のオブザーバビリティーサービス用のリソースをデプロイするルートコンポーネントです。 - オブザーバビリティーアドオンコントローラー は、マネージドクラスターのログを自動的に更新する API サーバーです。
Thanos インフラストラクチャーには、
multicluster-observability-operatorPod によってデプロイされる Thanos Compactor が含まれます。Thanos Compactor は、保持設定とストレージ内のデータの圧縮を使用して、クエリーが適切に実行されることを保証します。Thanos Compactor でいつ問題が発生しているかを特定するには、その正常性を監視する 4 つのデフォルトのアラートを使用します。次のデフォルトアラートの表を確認してください。
Expand 表1.2 デフォルトの Thanos アラートの表 アラート Severity 説明 ACMThanosCompactHaltedcritical
コンパクターが停止するとアラートが送信されます。
ACMThanosCompactHighCompactionFailureswarning
圧縮失敗率が 5% を超えると、アラートが送信されます。
ACMThanosCompactBucketHighOperationFailures警告
バケット操作の失敗率が 5 パーセントを超えると、アラートが送信されます。
ACMThanosCompactHasNotRunwarning
コンパクターが過去 24 時間以内に何もアップロードしなかった場合、アラートが送信されます。
- オブザーバビリティーコンポーネントは、Grafana のインスタンスをデプロイして、ダッシュボード (静的) またはデータ探索によるデータの視覚化を可能にします。Grafana ダッシュボードを設計することもできます。詳細は、関連情報セクションの Grafana ダッシュボードの使用 を参照してください。
- Prometheus Alertmanager を使用すると、サードパーティーアプリケーションでアラートを転送できます。カスタムのレコーディングルールまたはアラートルールを作成して、オブザーバビリティーサービスをカスタマイズできます。
1.1.4. オブザーバビリティーサービスで使用される永続ストア リンクのコピーリンクがクリップボードにコピーされました!
重要: 永続ストレージにローカルボリュームを使用するローカルストレージ Operator またはストレージクラスを使用しないでください。再起動後に Pod が別のノードで再起動されると、データが失われる可能性があります。これが発生すると、Pod はノード上のローカルストレージにアクセスできなくなります。データの損失を回避するために、receive Pod および rules Pod の永続ボリュームにアクセスできることを確認してください。
Red Hat Advanced Cluster Management をインストールするときは、次の永続ボリューム (PV) を作成して、Persistent Volume Claims (PVC) を自動的にアタッチできるようにする必要があります。デフォルトのストレージクラスが指定されていない場合、またはデフォルト以外のストレージクラスを使用して PV をホストする場合は、MultiClusterObservability カスタムリソースでストレージクラスを定義する必要があります。Prometheus が使用するものと同様の、ブロックストレージを使用することを推奨します。また、alertmanager、thanos-compactor、thanos-ruler、thanos-receive-default、および thanos-store-shard の各レプリカには、独自の PV が必要です。次の表を参照します。
| コンポーネント名 | 目的 |
| alertmanager |
alertmanager は |
| observability-thanos-compactor | コンパクターは、処理の中間データとバケット状態キャッシュの保存にローカルのディスク領域が必要です。必要な領域は、下層にあるブロックサイズにより異なります。コンパクターには、すべてのソースブロックをダウンロードして、ディスクで圧縮ブロックを構築するのに十分な領域が必要です。ディスク上のデータは再起動の合間に安全に削除できるため、クラッシュループに陥ったコンパクターを復旧させるための最初の手順として試みるべきです。ただし、複数回の再起動を経ても、バケットの状態キャッシュを効果的に使用できるように、コンパクターには永続ディスクを割り当てることが推奨されます。 |
| observability-thanos-rule |
thanos ruler は、固定の間隔でクエリーを発行して、選択したクエリー API に対して Prometheus 記録およびアラートルールを評価します。ルールの結果は、Prometheus 2.0 ストレージ形式でディスクに書き込まれます。このステートフルセットで保持されるデータの期間 (時間または日) は、API バージョンの |
| observability-thanos-receive-default |
Thanos receiver は、受信データ (Prometheus remote-write リクエスト) を受け入れて Prometheus TSDB のローカルインスタンスに書き込みます。TSDB ブロックは定期的 (2 時間) に、長期的に保存および圧縮するためにオブジェクトストレージにアップロードされます。ローカルキャッシュを実行するこのステートフルセットで保持される期間 (時間または日) は、API バージョン |
| observability-thanos-store-shard | これは、主に API ゲートウェイとして機能するため、大量のローカルディスク容量は必要ありません。これは、起動時に Thanos クラスターに参加して、アクセスできるデータを広告します。ローカルディスク上のすべてのリモートブロックに関する情報のサイズを小さく保ち、バケットと同期させます。このデータは、再起動時に削除しても通常は安全ですが、代償として起動時間が長くなります。 |
注記: 時系列の履歴データはオブジェクトストアに保存されます。Thanos は、オブジェクトストレージをメトリクスおよび関連するメタデータのプライマリーストレージとして使用します。オブジェクトストレージおよび downsampling 機能の詳細は、オブザーバビリティーサービスの有効化 を参照してください。
1.1.5. オブザーバビリティーのサポート リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Advanced Cluster Management は、Red Hat OpenShift Data Foundation (以前の Red Hat OpenShift Container Platform) によってテストされ、完全にサポートされています。
- Red Hat Advanced Cluster Management は、S3 API と互換性のあるユーザー提供のオブジェクトストレージにおける Multicluster observability Operator の機能をサポートします。オブザーバビリティーサービスは、Thanos がサポートする安定したオブジェクトストアを使用します。
- Red Hat Advanced Cluster Management のサポートにおける取り組みには、根本原因を特定するための妥当なレベルでの対応が含まれます。サポートチケットを開いて、その根本原因が提供した S3 互換オブジェクトストレージにある場合は、カスタマーサポートチャネルを使用して問題を起票する必要があります。
1.1.6. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーとインテグレーションコンポーネントの詳細は、次のトピックを参照してください。
- 本サービスの概要は、オブザーバビリティーサービス を参照してください。
- サービスの設定、メトリクスタイプのラベル付け、および Pod の容量は、オブザーバビリティーの設定 を参照してください。
- オブザーバビリティーサービスを有効にするには、オブザーバビリティーサービスの有効化 を参照してください。
- Grafana からハブクラスターとマネージドクラスターのメトリクスを表示する方法の詳細は、Grafana ダッシュボードの使用 を参照してください。
- オブザーバビリティーサービスのバックアップと復元方法に説明します。オブザーバビリティーサービスのバックアップと復元 を参照してください。
- サノスに関する詳細は、サノスのドキュメント を参照してください。
- Prometheus の概要については、Prometheus 概要 を参照してください。
- Alertmanager を使用してアラートを送受信する方法は、Alertmanager のドキュメント を参照してください。
1.2. オブザーバビリティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーサービスが有効になっている場合、disableHubSelfManagement が true (有効) に設定されているか false (無効) に設定されているかに関係なく、ハブクラスターは常にメトリクスを収集して設定された Thanos インスタンスに送信するように構成されます。ハブクラスターが local-cluster として自己管理されている場合、disableHubSelfManagement パラメーターは false に設定され、これがデフォルト設定になります。multiclusterhub-operator は、デフォルトで multicluster-observability-operator Pod を有効にします。multicluster-observability-operator Pod を設定する必要があります。
ハブクラスターのメトリクスとアラートは、<your-local-cluster-name> namespace に表示されます。ローカルクラスターは、disableHubSelfManagement が有効になっている場合にのみ使用できます。Grafana エクスプローラーで <your-local-cluster-name> メトリクスをクエリーできます。オブザーバビリティーコンポーネントで収集できるメトリクスと、オブザーバビリティー Pod の容量に関する情報を理解するには、次のセクションも確認してください。
1.2.1. メトリクスのタイプ リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、OpenShift Container Platform は Telemetry サービスを使用してメトリクスを Red Hat に送信します。acm_managed_cluster_info は、Red Hat Advanced Cluster Management で利用でき、Telemetry に含まれていますが、Red Hat Advanced Cluster Management Observe 環境の概要 ダッシュボードには表示され ません。
フレームワークでサポートされているメトリクスタイプは、次の表を参照してください。
| メトリクス名 | メトリクスのタイプ | ラベル/タグ | ステータス |
|---|---|---|---|
|
| ゲージ |
| Stable |
|
| ヒストグラム | なし | Stable。詳細は、ガバナンスメトリクス を参照してください。 |
|
| ヒストグラム | なし | Stable。詳細は、ガバナンスメトリクス を参照してください。 |
|
| ヒストグラム | なし | Stable。詳細は、ガバナンスメトリクス を参照してください。 |
|
| ゲージ |
| Stable。詳細は、ガバナンスメトリクス を参照してください。 |
|
| ゲージ |
| Stable。詳細は、ガバナンスメトリクス を参照してください。 |
|
| ゲージ |
| Stable。詳細は、insight _PolicyReports_ の管理 を参照してください。 |
|
| カウンター | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
|
| ヒストグラム | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
|
| ヒストグラム | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
|
| カウンター | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
|
| ヒストグラム | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
|
| ゲージ | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
|
| ヒストグラム | なし | Stable。コンソールでの検索 ドキュメントの 検索コンポーネント のセクションを参照してください。 |
1.2.2. デフォルトのメトリクス リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのメトリクスを表示するには、次のコマンドを実行して observability-metrics-allowlist を確認します。
oc -n open-cluster-management-observability get cm observability-metrics-allowlist -o yaml
注記: 許可リスト内のデフォルトのメトリクスを変更することはできません。
1.2.3. オブザーバビリティー Pod の容量要求 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーサービスをインストールするには、オブザーバビリティーコンポーネントで 2701mCPU および 11972Mi のメモリーが必要です。以下の表は、observability-addons が有効なマネージドクラスター 5 台の Pod 容量要求のリストです。
| デプロイメントまたは StatefulSet | コンテナー名 | CPU (mCPU) | メモリー (Mi) | レプリカ | Pod の合計 CPU | Pod の合計メモリー |
|---|---|---|---|---|---|---|
| observability-alertmanager | alertmanager | 4 | 200 | 3 | 12 | 600 |
| config-reloader | 4 | 25 | 3 | 12 | 75 | |
| alertmanager-proxy | 1 | 20 | 3 | 3 | 60 | |
| observability-grafana | grafana | 4 | 100 | 2 | 8 | 200 |
| grafana-dashboard-loader | 4 | 50 | 2 | 8 | 100 | |
| observability-observatorium-api | observatorium-api | 20 | 128 | 2 | 40 | 256 |
| observability-observatorium-operator | observatorium-operator | 100 | 100 | 1 | 10 | 50 |
| observability-rbac-query-proxy | rbac-query-proxy | 20 | 100 | 2 | 40 | 200 |
| oauth-proxy | 1 | 20 | 2 | 2 | 40 | |
| observability-thanos-compact | thanos-compact | 500 | 1024 | 1 | 100 | 512 |
| observability-thanos-query | thanos-query | 300 | 1024 | 2 | 600 | 2048 |
| observability-thanos-query-frontend | thanos-query-frontend | 100 | 256 | 2 | 200 | 512 |
| observability-thanos-query-frontend-memcached | memcached | 45 | 128 | 3 | 135 | 384 |
| exporter | 5 | 50 | 3 | 15 | 150 | |
| observability-thanos-receive-controller | thanos-receive-controller | 4 | 32 | 1 | 4 | 32 |
| observability-thanos-receive-default | thanos-receive | 300 | 512 | 3 | 900 | 1536 |
| observability-thanos-rule | thanos-rule | 50 | 512 | 3 | 150 | 1536 |
| configmap-reloader | 4 | 25 | 3 | 12 | 75 | |
| observability-thanos-store-memcached | memcached | 45 | 128 | 3 | 135 | 384 |
| exporter | 5 | 50 | 3 | 15 | 150 | |
| observability-thanos-store-shard | thanos-store | 100 | 1024 | 3 | 300 | 3072 |
1.2.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- オブザーバビリティーの有効化に関する詳細は、オブザーバビリティサービスの有効化 を参照してください。
- メトリクスのカスタマイズ方法は、カスタムメトリクスの追加 を参照してください。
- Grafana ダッシュボードの使用 を参照してください。
- OpenShift Container Platform ドキュメントで、Telemetry を使用して収集されて送信されるメトリクスのタイプを確認します。詳細は、Telemetry で収集される情報 を参照してください。
- 詳細は、ガバナンスメトリクス を参照してください。
- Prometheus 記録ルール を参照してください。
- Prometheus アラートルール も参照してください。
1.3. オブザーバビリティーの高度な設定 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーを有効にしたら、環境の特定のニーズに合わせてオブザーバビリティー設定をさらにカスタマイズできます。オブザーバビリティーサービスが収集するクラスターフリートデータを管理および表示します。
必要なアクセス権: クラスター管理者
以下のアプリケーション詳細設定のトピックを確認してください。
1.3.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 を選択することで、ServiceMonitors を見つけることもできます。
注記: Source フィルターは、メトリクスのリストではなく、サービスモニターまたはターゲットの情報を提供します。
メトリクスがプラットフォームの場合は、プラットフォームメトリクスの追加 に進んでください。メトリクスがユーザーワークロードの場合は、ユーザーワークロードメトリクスの追加 に進んでください。
必要なアクセス権: クラスター管理者
1.3.1.1. プラットフォームメトリクスの追加 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターの open-cluster-management-observability namespace 内に ConfigMap を作成することで、プラットフォームメトリクスを監視できます。名前として observability-metrics-custom-allowlist を使用します。プラットフォームメトリクスを監視するために使用できる次の ConfigMap の例を参照してください。
kind: ConfigMap
apiVersion: v1
metadata:
name: observability-metrics-custom-allowlist
namespace: open-cluster-management-observability
data:
metrics_list.yaml: |
names:
- node_memory_MemTotal_bytes
recording_rules:
- record: apiserver_request_duration_seconds:histogram_quantile_90
expr: histogram_quantile(0.90,sum(rate(apiserver_request_duration_seconds_bucket {job=\"apiserver\", verb!=\"WATCH\"}[5m])) by (verb,le))
1 つのマネージドクラスターからのみカスタムメトリクスを収集する場合は、次の例を使用して、マネージドクラスターの open-cluster-management-addon-observability namespace 内で config map を適用します。
kind: ConfigMap
apiVersion: v1
metadata:
name: observability-metrics-custom-allowlist
namespace: open-cluster-management-addon-observability
data:
metrics_list.yaml: |
names:
- node_memory_MemTotal_bytes
recording_rules:
- record: apiserver_request_duration_seconds:histogram_quantile_90
expr: histogram_quantile(0.90,sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver", verb!="WATCH"}[5m])) by (verb,le))
1.3.1.2. ユーザーワークロードメトリクスの追加 リンクのコピーリンクがクリップボードにコピーされました!
メトリクスの取得対象とする namespace 内のマネージドクラスターで設定を指定することで、ユーザーワークロードメトリクスを監視できます。名前は observability-metrics-custom-allowlist にする必要があります。
次の例では、namespace monitored_namespace からユーザーワークロードメトリクス sample_metrics を監視します。代わりに、open-cluster-management-addon-observability namespace で設定を作成すると、マネージドクラスターのすべての namespace からメトリクスが収集されます。以下の例を参照してください。
kind: ConfigMap
apiVersion: v1
metadata:
name: observability-metrics-custom-allowlist
namespace: <monitored_namespace>
data:
uwl_metrics_list.yaml:
names:
- <sample_metrics>
1.3.1.3. デフォルトメトリクスの削除 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターから特定のメトリクスのデータを収集したくない場合は、observability-metrics-custom-allowlist.yaml ファイルからメトリクスを削除します。メトリクスを削除すると、マネージドクラスターからメトリクスデータが収集されなくなります。デフォルトのメトリクスを削除するには、次の手順を実行します。
以下のコマンドを使用して、
mco observabilityが有効になっていることを確認します。oc get mco observability -o yamlmetrics_list.yamlパラメーターにデフォルトのメトリクスの名前を追加します。メトリクス名の先頭にハイフン-を付けます。次のメトリクスの例を参照してください。-cluster_infrastructure_provider以下のコマンドで、
open-cluster-management-observabilitynamespace にobservability-metrics-custom-allowlistconfig map を作成します。oc apply -n open-cluster-management-observability -f observability-metrics-custom-allowlist.yaml- オブザーバビリティーサービスがマネージドクラスターから特定のメトリクスを収集していないことを確認します。Grafana ダッシュボードからメトリクスをクエリーしても、メトリクスは表示されません。
1.3.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 という 2 つのデフォルトのコレクションルールを含む、コレクションルールグループ SNOResourceUsage が含まれています。HighCPUUsage コレクションルールは、ノードの CPU 使用率が 70% を超えると開始されます。
HighMemoryUsage 収集ルールは、シングルノード OpenShift クラスターの全体的なメモリー使用率が使用可能なノードメモリーの 70% を超えると開始されます。現在、上記のしきい値は固定されており、変更できません。収集ルールが for 属性で指定された間隔を超えて開始すると、システムが dynamic_metrics セクションで指定されたメトリクスの収集を自動的に開始します。
次の YAML ファイルに含まれる collect_rules セクションの動的メトリクスのリストを参照してください。
collect_rules:
- group: SNOResourceUsage
annotations:
description: >
By default, a {sno} cluster does not collect pod and container resource metrics. Once a {sno} cluster
reaches a level of resource consumption, these granular metrics are collected dynamically.
When the cluster resource consumption is consistently less than the threshold for a period of time,
collection of the granular metrics stops.
selector:
matchExpressions:
- key: clusterType
operator: In
values: ["{sno}"]
rules:
- collect: SNOHighCPUUsage
annotations:
description: >
Collects the dynamic metrics specified if the cluster cpu usage is constantly more than 70% for 2 minutes
expr: (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\"}[5m]))) * 100 > 70
for: 2m
dynamic_metrics:
names:
- container_cpu_cfs_periods_total
- container_cpu_cfs_throttled_periods_total
- kube_pod_container_resource_limits
- kube_pod_container_resource_requests
- namespace_workload_pod:kube_pod_owner:relabel
- node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate
- node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate
- collect: SNOHighMemoryUsage
annotations:
description: >
Collects the dynamic metrics specified if the cluster memory usage is constantly more than 70% for 2 minutes
expr: (1 - sum(:node_memory_MemAvailable_bytes:sum) / sum(kube_node_status_allocatable{resource=\"memory\"})) * 100 > 70
for: 2m
dynamic_metrics:
names:
- kube_pod_container_resource_limits
- kube_pod_container_resource_requests
- namespace_workload_pod:kube_pod_owner:relabel
matches:
- __name__="container_memory_cache",container!=""
- __name__="container_memory_rss",container!=""
- __name__="container_memory_swap",container!=""
- __name__="container_memory_working_set_bytes",container!=""
以下の例のように、collect_rules.group は custom-allowlist で無効にできます。collect_rules.group を無効にすると、メトリクスの収集が以前の動作に戻ります。これらのメトリクスは、指定された間隔で定期的に収集されます。
collect_rules:
- group: -SNOResourceUsage
データは、ルールの開始時のみ Grafana に表示されます。
1.3.1.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 外部エンドポイントへのメトリクスのエクスポート を参照してください。
1.3.2. メトリクス収集のスケーリング (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
大規模なデプロイメントでのパフォーマンスを向上させるには、複数のワーカーで並行してメトリクスを収集するように metrics-collector を設定できます。デフォルト設定では、単一のワーカーを使用してメトリクスをフェデレートします。メトリクス収集プロセスのワーカー数を増やすと、内部ワーカーが、マネージドクラスター上の Prometheus に対するエンドポイントリクエストを、シャーディング /federate できるようになります。
必要なアクセス権: クラスター管理者
前提条件
- ハブおよびマネージドクラスターでオブザーバビリティーサービスが有効化されている。オブザーバビリティーサービスの有効化 を参照してください。
1.3.2.1. メトリクス収集の増加と減少 リンクのコピーリンクがクリップボードにコピーされました!
クラスター上のメトリクス収集を増減するには、multicluster-observability-operator リソースの workers パラメーターを編集します。以下の手順を実行します。
マネージドクラスターごとに同じ
workers値を使用する場合は、MultiClusterObservabilityカスタムリソース定義で値を設定します。デフォルトでは、値は1に設定されています。たとえば、workersパラメーターの値を4に変更します。YAML ファイルは次のリソースのようになります。apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: observabilityAddonSpec: enableMetrics: true workers: 4オプション: 特定のクラスターの
workersパラメーターをオーバーライドする場合は、マネージドクラスターのObservabilityAddOn仕様にobservability.open-cluster-management.io/addon-source: "override"アノテーションを追加します。-
オーバーライドを元に戻すには、
observability.open-cluster-management.io/addon-source: "mco"アノテーションを使用します。
-
オーバーライドを元に戻すには、
-
workersパラメーターの値を確認するには、MultiClusterObservabilityカスタムリソースの値を確認します。
1.3.3. オブザーバビリティーアドオンのプロキシー設定 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターからの通信が HTTP および HTTPS プロキシーサーバー経由でハブクラスターにアクセスできるようにプロキシー設定を指定します。通常、アドオンでは、ハブクラスターとマネージドクラスターの間で HTTP および HTTPS プロキシーサーバーをサポートする特別な設定は必要ありません。ただし、オブザーバビリティーアドオンを有効にしている場合は、プロキシー設定を完了する必要があります。
1.3.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- ハブクラスターがある。
- ハブクラスターとマネージドクラスター間のプロキシー設定を有効にしている。
1.3.3.2. プロキシー設定 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーアドオンのプロキシー設定を指定するには、以下の手順を実行します。
- ハブクラスターのクラスター namespace に移動します。
spec.proxyConfigパラメーターを追加して、プロキシー設定を使用してAddOnDeploymentConfigリソースを作成します。以下は、YAML の例です。apiVersion: addon.open-cluster-management.io/v1alpha1 kind: AddOnDeploymentConfig metadata: name: <addon-deploy-config-name> namespace: <managed-cluster-name> spec: agentInstallNamespace: open-cluster-management-addon-observability proxyConfig: httpsProxy: "http://<username>:<password>@<ip>:<port>"1 noProxy: ".cluster.local,.svc,172.30.0.1"2 マネージドクラスターで IP アドレスを取得するには、以下のコマンドを実行します。
oc -n default describe svc kubernetes | grep IP:ManagedClusterAddOnリソースに移動し、作成したAddOnDeploymentConfigリソースを参照して更新します。以下は、YAML の例です。apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: observability-controller namespace: <managed-cluster-name> spec: installNamespace: open-cluster-management-addon-observability configs: - group: addon.open-cluster-management.io resource: addondeploymentconfigs name: <addon-deploy-config-name> namespace: <managed-cluster-name>注:
spec.installNamespaceフィールドは非推奨です。詳細は、製品の非推奨と削除 を参照してください。プロキシー設定を検証します。プロキシー設定が正常に設定されている場合、マネージドクラスター上のオブザーバビリティーアドオンエージェントによってデプロイされたメトリクスコレクターが、データをハブクラスターに送信します。以下の手順を実行します。
- ハブクラスターに移動し、Grafana ダッシュボードでマネージドクラスターに移動します。
- プロキシー設定のメトリクスを表示します。
1.3.3.3. オブザーバビリティーアドオンのプロキシー設定の無効化 リンクのコピーリンクがクリップボードにコピーされました!
開発に必要な変更がある場合は、ハブクラスターとマネージドクラスターに設定したオブザーバビリティーアドオンのプロキシー設定を無効にすることが必要な場合があります。オブザーバビリティーアドオンのプロキシー設定はいつでも無効にできます。以下の手順を実行します。
-
ManagedClusterAddOnリソースに移動します。 -
参照される
AddOnDeploymentConfigリソースを削除します。
1.3.4. ルート証明書のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform ルート認証をカスタマイズする場合は、ルートを alt_names セクションに追加する必要があります。OpenShift Container Platform ルートにアクセスできるようにするには、alertmanager.apps.<domainname>、observatorium-api.apps.<domainname>、rbac-query-proxy.apps.<domainname> の情報を追加します。
注記: ユーザーは証明書のローテーションおよび更新を行います。
1.3.4.1. オブジェクトストアにアクセスするための証明書のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
認証局を含む Secret リソースを作成し、MultiClusterObservability カスタムリソースを設定することで、監視オブジェクトストアとのセキュアな接続を設定できます。以下の手順を実行します。
オブジェクトストア接続を検証するには、次のコマンドを使用して、認証局を含むファイルに
Secretオブジェクトを作成します。oc create secret generic <tls_secret_name> --from-file=ca.crt=<path_to_file> -n open-cluster-management-observability- あるいは、次の YAML を適用してシークレットを作成することもできます。
apiVersion: v1 kind: Secret metadata: name: <tls_secret_name> namespace: open-cluster-management-observability type: Opaque data: ca.crt: <base64_encoded_ca_certificate>オプション: 相互 TLS を有効にする場合は、前のシークレットに
public.crtキーとprivate.keyキーを追加する必要があります。次のコマンドを使用して、
metricObjectStorageセクションに TLS シークレットの詳細を追加します。oc edit mco observability -o yamlファイルは次の YAML のようになります。
metricObjectStorage: key: thanos.yaml name: thanos-object-storage tlsSecretName: tls-certs-secret1 tlsSecretMountPath: /etc/<s3-directory>/certs2 証明書の詳細を含む
http_config.tls_configセクションを追加して、thanos-object-storageシークレットのthanos.yaml定義を更新します。以下の例を参照してください。必要に応じて値を置き換えます。thanos.yaml: | type: s3 config: bucket: <bucket-name> endpoint: <s3.port> insecure: false1 access_key: <s3-access> secret_key: <s3-secret> http_config: tls_config: ca_file: /etc/<s3-directory>/certs/ca.crt2 insecure_skip_verify: false- 1
- HTTPS を有効にするには、
insecureパラメーターをfalseに設定します。 - 2
ca_fileパラメーターのパスは、MultiClusterObservabilityカスタムリソースのtlsSecretMountPathと一致させる必要があります。ca.crtは、<tls_secret_name>Secretリソース内のキーと一致させる必要があります。オプション: 相互 TLS を有効にする場合は、
tls_configセクションにcert_fileキーとkey_fileキーを追加する必要があります。以下の例を参照してください。必要に応じて値を置き換えます。
thanos.yaml: | type: s3 config: bucket: <bucket-name> endpoint: <s3.port> insecure: false access_key: <s3-access> secret_key: <s3-secret> http_config: tls_config: ca_file: /etc/<s3-directory>/certs/ca.crt1 cert_file: /etc/<s3-directory>/certs/public.crt key_file: /etc/<s3-directory>/certs/private.key insecure_skip_verify: false- 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
1.3.4.2. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Alertmanager ルートの証明書の更新に関する詳細は、Alertmanager の証明書の置き換え を参照してください。
1.3.5. カスタムルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーリソースに、Prometheus レコードルール および アラートルール を追加して、オブザーバビリティーインストールのカスタムルールを作成します。
計算コストの高い式を事前計算するには、Prometheus の記録ルール機能を使用してアラート条件を作成し、外部サービスにアラートを送信する方法に基づいて通知を送信します。結果は新たな時系列のセットとして保存されます。
thanos-ruler-custom-rules config map 内にカスタムアラートルールを作成するには、次の手順を実行します。
CPU 使用率が定義した値を超えたときに通知を受け取るには、次のカスタムアラートルールを作成します。
data: custom_rules.yaml: | groups: - name: cluster-health rules: - alert: ClusterCPUHealth-jb annotations: summary: Notify when CPU utilization on a cluster is greater than the defined utilization limit description: "The cluster has a high CPU usage: {{ $value }} core for {{ $labels.cluster }} {{ $labels.clusterID }}." expr: | max(cluster:cpu_usage_cores:sum) by (clusterID, cluster, prometheus) > 0 for: 5s labels: cluster: "{{ $labels.cluster }}" prometheus: "{{ $labels.prometheus }}" severity: critical注記:
-
カスタムルールを更新すると、
observability-thanos-rulePod が自動的に再起動します。 - 設定には、複数のルールを作成できます。
-
デフォルトのアラートルールは、
open-cluster-management-observabilitynamespace のobservability-thanos-rule-default-rulesconfig map にあります。
-
カスタムルールを更新すると、
Pod のコンテナーメモリーキャッシュの合計を取得するためのカスタム記録ルールを作成します。以下の例を参照してください。
data: custom_rules.yaml: | groups: - name: container-memory rules: - record: pod:container_memory_cache:sum expr: sum(container_memory_cache{pod!=""}) BY (pod, container)注記: config map に変更を加えた後、設定は自動的に再読み込みされます。この設定は、
observability-thanos-ruleサイドカー内のconfig-reloadにより、設定が再読み込みされます。
アラートルールが正しく機能していることを確認するには、Grafana ダッシュボードに移動し、Explore ページを選択して、ALERTS にクエリーを実行します。アラートを作成した場合にのみ、Grafana でそのアラートを利用できます。
1.3.5.1. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 詳細は、Prometheus の設定 を参照してください。
- 記録ルールとアラートルールの詳細は、Prometheus ドキュメント の記録ルールとアラートルールを参照してください。
1.3.6. コンソールからの MultiClusterObservability カスタムリソースレプリカの更新 リンクのコピーリンクがクリップボードにコピーされました!
ワークロードが増加する場合は、オブザーバビリティー Pod のレプリカ数を増やします。ハブクラスターからコンソールに移動します。MultiClusterObservability カスタムリソースを見つけて、レプリカを変更するコンポーネントの replicas パラメーター値を更新します。更新した YAML は以下のようになります。
spec:
advanced:
receive:
replicas: 6
mco observability カスタムリソース内のパラメーターの詳細は、オブザーバビリティー API ドキュメントを参照してください。
1.3.7. 永続ボリュームおよび永続ボリューム要求の増減 リンクのコピーリンクがクリップボードにコピーされました!
永続ボリュームと永続ボリューム要求を増減して、ストレージクラス内のストレージの量を変更します。以下の手順を実行します。
-
ストレージクラスがボリュームの拡張をサポートしている場合は、
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.3.8. マネージドクラスター Observatorium API と Alertmanager URL のカスタマイズ (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
ロードバランサーまたはリバースプロキシーを使用するときに、マネージドクラスターがハブクラスターとの通信に使用する Observatorium API および Alertmanager URL をカスタマイズして、すべての Red Hat Advanced Cluster Management 機能を維持できます。URL をカスタマイズするには、次の手順を実行します。
-
MultiClusterObservabilityspecのadvancedセクションに URL を追加します。以下の例を参照してください。
spec:
advanced:
customObservabilityHubURL: <yourURL>
customAlertmanagerHubURL: <yourURL>
注記:
-
HTTPS URL のみがサポートされます。URL に
https://を追加しない場合、スキームは自動的に追加されます。 -
customObservabilityHubURLspecに、リモート書き込み API の標準パス/api/metrics/v1/default/api/v1/receiveを含めることができます。パスを指定しない場合、オブザーバビリティーサービスは実行時に自動的にパスを追加します。 カスタムオブザーバビリティーハブクラスター URL に使用する中間コンポーネントは、MTLS 認証に依存するため、TLS 終端を使用できません。カスタム Alertmanager ハブクラスター URL は、独自の既存の証明書手順を使用して中間コンポーネントの TLS 終端をサポートします。
-
customObservabilityHubURLを使用している場合は、次のテンプレートを使用してルートオブジェクトを作成します。<intermediate_component_url>を中間コンポーネントの URL に置き換えます。
-
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: proxy-observatorium-api
namespace: open-cluster-management-observability
spec:
host: <intermediate_component_url>
port:
targetPort: public
tls:
insecureEdgeTerminationPolicy: None
termination: passthrough
to:
kind: Service
name: observability-observatorium-api
weight: 100
wildcardPolicy: None
-
customAlertmanagerHubURLを使用している場合は、次のテンプレートを使用してルートオブジェクトを作成します。<intermediate_component_url>を中間コンポーネントの URL に置き換えます。
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: alertmanager-proxy
namespace: open-cluster-management-observability
spec:
host: <intermediate_component_url>
path: /api/v2
port:
targetPort: oauth-proxy
tls:
insecureEdgeTerminationPolicy: Redirect
termination: reencrypt
to:
kind: Service
name: alertmanager
weight: 100
wildcardPolicy: None
1.3.8.1. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- オブザーバビリティーアラートの詳細は、オブザーバビリティーアラート を参照してください。
- アラート転送の詳細は、Prometheus Alertmanager ドキュメント を参照してください。
- 詳細は、オブザーバビリティーアラート を参照してください。
1.3.9. 詳細な 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 のようになります。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: awesome-app-metrics-role rules: - apiGroups: - "cluster.open-cluster-management.io" resources: - managedclusters:1 resourceNames:2 - devcluster1 - devcluster2 verbs:3 - metrics/AwesomeAppNSグループ
my-awesome-app-adminsをawesome-app-metrics-roleのClusterRoleリソースにバインドするClusterRoleBindingリソースを定義します。リソースは次の YAML のようになります。kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: awesome-app-metrics-role-binding subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: my-awesome-app-admins roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: awesome-app-metrics-role
これらの手順を完了すると、my-awesome-app-admins のユーザーが Grafana コンソールにログインするときに、次の制限が適用されます。
- フリートレベルのデータを要約したダッシュボードのデータがユーザーに表示されません。
-
ユーザーは、
ClusterRoleリソースで指定されているマネージドクラスターと namespace のみを選択できます。
異なるタイプのユーザーアクセスを設定するには、namespace 内の異なるマネージドクラスターを表す個別の ClusterRoles および ClusterRoleBindings リソースを定義します。
1.4. オブザーバビリティーサービスの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターでオブザーバビリティーサービスを有効にすると、multicluster-observability-operator が新しいマネージドクラスターを監視し、メトリクスおよびアラート収集サービスをマネージドクラスターに自動的にデプロイします。メトリクスを使用して Grafana ダッシュボードを設定すると、クラスターのリソース情報を可視化し、コストを節約し、サービスの中断を防ぐことができます。
multicluster-observability-operator Pod とも呼ばれるオブザーバビリティーコンポーネントを使用して、マネージドクラスターのステータスを監視します。
必要なアクセス権: クラスター管理者、open-cluster-management:cluster-manager-admin ロール、または S3 管理者。
1.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Advanced Cluster Management for Kubernetes がインストールされている。詳細は、ネットワーク接続時のオンラインインストール を参照してください。
-
プラットフォームのデフォルトの
storageClassを使用しない場合は、MultiClusterObservabilityカスタムリソースでstorageConfig.storageClassフィールドを指定する必要があります。 - ハブクラスターへの直接的なネットワークアクセスが必要です。ロードバランサーおよびプロキシーへのネットワークアクセスはサポートされていません。詳細は、Networking を参照してください。
ストレージソリューションを作成するようにオブジェクトストアが設定されている。
重要:
- オブジェクトストアを設定する場合は、機密データを永続化する時に必要な暗号化要件を満たすようにしてください。オブザーバビリティーサービスは、Thanos がサポートする安定したオブジェクトストアを使用します。
- 各ハブクラスターごとに、個別のオブジェクトストレージバケットを使用する必要があります。オブザーバビリティーのインストールには、それぞれ専用の固有のバケットが必要です。同じストレージパスに同時に複数回書き込みを行うと、データ破損、履歴メトリクスの損失が発生し、Thanos Compactor が停止します。
Red Hat Advanced Cluster Management は、安定したオブジェクトストアで以下のクラウドプロバイダーをサポートします。
- Amazon Web Services S3 (AWS S3)
- Red Hat Ceph (S3 互換 API)
- Google Cloud Storage
- Azure ストレージ
- Red Hat OpenShift Data Foundation (旧称: Red Hat OpenShift Container Storage)
- Red Hat OpenShift on IBM Cloud
1.4.2. コマンドラインインターフェイスからのオブザーバビリティーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterObservability カスタムリソースを作成してオブザーバビリティーサービスを有効にします。オブザーバビリティーを有効にする前に、オブザーバビリティー Pod の容量要求 を参照してください。
注記:
-
Red Hat Advanced Cluster Management が管理する OpenShift Container Platform マネージドクラスターでオブザーバビリティーを有効または無効にすると、オブザーバビリティーエンドポイント Operator は、ローカル Prometheus を自動的に再起動する
alertmanager設定を追加してcluster-monitoring-configconfig map を更新します。 -
オブザーバビリティーエンドポイント Operator は、ローカル Prometheus を自動的に再起動する
alertmanager設定を別途追加して、cluster-monitoring-configconfig map を更新します。OpenShift Container Platform マネージドクラスターにalertmanager設定を挿入すると、Prometheus メトリクスの保持フィールドに関連する設定が削除されます。
オブザーバビリティーサービスを有効にするには、以下の手順を実行します。
- Red Hat Advanced Cluster Management ハブクラスターにログインします。
以下のコマンドを使用してオブザーバビリティーサービスの namespace を作成します。
oc create namespace open-cluster-management-observabilityプルシークレットを生成します。Red Hat Advanced Cluster Management が
open-cluster-managementnamespace にインストールされている場合は、以下のコマンドを実行します。DOCKER_CONFIG_JSON=`oc extract secret/multiclusterhub-operator-pull-secret -n open-cluster-management --to=-`multiclusterhub-operator-pull-secretが namespace で定義されていない場合は、次のコマンドを実行して、pull-secretをopenshift-confignamespace からopen-cluster-management-observabilitynamespace にコピーします。DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-`次のコマンドを実行して、
open-cluster-management-observabilitynamespace にプルシークレットを作成します。oc create secret generic multiclusterhub-operator-pull-secret \ -n open-cluster-management-observability \ --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \ --type=kubernetes.io/dockerconfigjson
重要: OpenShift Container Platform ドキュメントを使用してクラスターのグローバルプルシークレットを変更する場合は、必ずオブザーバビリティー namespace のグローバルプルシークレットも更新してください。詳細は、グローバルプルシークレットの更新 を参照してください。
お使いのクラウドプロバイダーのオブジェクトストレージのシークレットを作成します。シークレットには、ストレージソリューションへの認証情報を追加する必要があります。たとえば、以下のコマンドを実行します。
oc create -f thanos-object-storage.yaml -n open-cluster-management-observabilityサポートされるオブジェクトストアのシークレットの例を以下に示します。
Amazon S3 または S3 と互換性のある場合、シークレットは以下のファイルのようになります。
apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: s3 config: bucket: YOUR_S3_BUCKET endpoint: YOUR_S3_ENDPOINT1 insecure: true access_key: YOUR_ACCESS_KEY secret_key: YOUR_SECRET_KEY- 1
- プロトコルなしで URL を入力します。
s3.us-east-1.amazonaws.comの URL のような Amazon S3 エンドポイントの URL を入力します。詳細は、Amazon Simple Storage Service ユーザーガイド を参照してください。
Google Cloud Platform の場合は、以下のファイルのようになります。
apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: GCS config: bucket: YOUR_GCS_BUCKET service_account: YOUR_SERVICE_ACCOUNT詳細は、Google Cloud Storage とは を参照してください。
Azure の場合は、以下のファイルのようになります。
apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: AZURE config: storage_account: YOUR_STORAGE_ACCT storage_account_key: YOUR_STORAGE_KEY container: YOUR_CONTAINER endpoint: blob.core.windows.net1 max_retries: 0- 1
msi_resourceパスを使用する場合、エンドポイント認証はシステム割り当てのマネージド ID を使用して完了します。値はエンドポイントhttps://<storage-account-name>.blob.core.windows.netのようにする必要があります。user_assigned_idパスを使用する場合は、ユーザー割り当てマネージド ID を使用してエンドポイント認証が完了します。user_assigned_idを使用する場合、msi_resourceエンドポイントのデフォルト値はhttps:<storage_account>.<endpoint>です。詳細は、Azure Storage のドキュメント を参照してください。注記: Azure を Red Hat OpenShift Container Platform クラスターのオブジェクトストレージとして使用する場合には、クラスターに関連付けられたストレージアカウントはサポートされません。新規ストレージアカウントを作成する必要があります。
Red Hat OpenShift Data Foundation では、シークレットは以下のファイルのようになります。
apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: s3 config: bucket: YOUR_RH_DATA_FOUNDATION_BUCKET endpoint: YOUR_RH_DATA_FOUNDATION_ENDPOINT1 insecure: false access_key: YOUR_RH_DATA_FOUNDATION_ACCESS_KEY secret_key: YOUR_RH_DATA_FOUNDATION_SECRET_KEY- 1
- プロトコルなしで URL を入力します。次の URL のような Red Hat OpenShift Data Foundation エンドポイントの URL を入力します:
example.redhat.com:443。詳細は、Red Hat OpenShift Data Foundation を参照してください。
- Red Hat OpenShift on IBM (ROKS) では、シークレットは以下のファイルのようになります。
apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: s3 config: bucket: YOUR_ROKS_S3_BUCKET endpoint: YOUR_ROKS_S3_ENDPOINT1 insecure: true access_key: YOUR_ROKS_ACCESS_KEY secret_key: YOUR_ROKS_SECRET_KEY- 1
- プロトコルなしで URL を入力します。次の URL のような Red Hat OpenShift Data Foundation エンドポイントの URL を入力します:
example.redhat.com:443。詳細は、IBM Cloud のドキュメント Cloud Object Storage を参照してください。サービスの認証情報を使用してオブジェクトストレージに接続するようにしてください。詳細は、IBM Cloud のドキュメント、Cloud Object Store および Service Credentials を参照してください。
1.4.2.1. AWS Security Token Service のストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
Amazon S3 または S3 と互換性のあるストレージの場合、AWS Security Token Service (AWS STS) で生成された短期間の限定特権認証情報を使用することもできます。詳細は、AWS Security Token Service ドキュメント を参照してください。
AWS Security Service を使用してアクセスキーを生成するには、次の追加の手順が必要です。
- S3 バケットへのアクセスを制限する IAM ポリシーを作成します。
- OpenShift Container Platform サービスアカウントの JWT トークンを生成するための信頼ポリシーを持つ IAM ロールを作成します。
- S3 バケットへのアクセスが必要なオブザーバビリティーサービスアカウントのアノテーションを指定します。環境設定 ステップでは、Red Hat OpenShift Service on AWS (クラシック) (ROSA) クラスターのオブザーバビリティーを AWS STS トークンと連携するように設定する方法の例を見つけることができます。詳細は、Red Hat OpenShift Service on AWS (ROSA) を参照してください。また、STS トークンを使用するための要件とセットアップの詳細な説明は、ROSA with STS の説明 を参照してください。
1.4.2.2. AWS Security Service を使用したアクセスキーの生成 リンクのコピーリンクがクリップボードにコピーされました!
AWS Security Service を使用してアクセスキーを生成するには、次の手順を実行します。
AWS 環境をセットアップします。以下のコマンドを実行します。
export POLICY_VERSION=$(date +"%m-%d-%y") export TRUST_POLICY_VERSION=$(date +"%m-%d-%y") export CLUSTER_NAME=<my-cluster> export S3_BUCKET=$CLUSTER_NAME-acm-observability export REGION=us-east-2 export NAMESPACE=open-cluster-management-observability export SA=tbd export SCRATCH_DIR=/tmp/scratch export OIDC_PROVIDER=$(oc get authentication.config.openshift.io cluster -o json | jq -r .spec.serviceAccountIssuer| sed -e "s/^https:\/\///") export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) export AWS_PAGER="" rm -rf $SCRATCH_DIR mkdir -p $SCRATCH_DIR次のコマンドで S3 バケットを作成します。
aws s3 mb s3://$S3_BUCKETS3 バケットにアクセスするための
s3-policyJSON ファイルを作成します。以下のコマンドを実行します。{ "Version": "$POLICY_VERSION", "Statement": [ { "Sid": "Statement", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:DeleteObject", "s3:PutObject", "s3:PutObjectAcl", "s3:CreateBucket", "s3:DeleteBucket" ], "Resource": [ "arn:aws:s3:::$S3_BUCKET/*", "arn:aws:s3:::$S3_BUCKET" ] } ] }次のコマンドでポリシーを適用します。
S3_POLICY=$(aws iam create-policy --policy-name $CLUSTER_NAME-acm-obs \ --policy-document file://$SCRATCH_DIR/s3-policy.json \ --query 'Policy.Arn' --output text) echo $S3_POLICYTrustPolicyJSON ファイルを作成します。以下のコマンドを実行します。{ "Version": "$TRUST_POLICY_VERSION", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_PROVIDER}:sub": [ "system:serviceaccount:${NAMESPACE}:observability-thanos-query", "system:serviceaccount:${NAMESPACE}:observability-thanos-store-shard", "system:serviceaccount:${NAMESPACE}:observability-thanos-compact", "system:serviceaccount:${NAMESPACE}:observability-thanos-rule", "system:serviceaccount:${NAMESPACE}:observability-thanos-receive" ] } } } ] }次のコマンドを使用して、AWS Prometheus と CloudWatch のロールを作成します。
S3_ROLE=$(aws iam create-role \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --assume-role-policy-document file://$SCRATCH_DIR/TrustPolicy.json \ --query "Role.Arn" --output text) echo $S3_ROLEポリシーをロールにアタッチします。以下のコマンドを実行します。
aws iam attach-role-policy \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --policy-arn $S3_POLICYシークレットは、次のファイルのようになる場合があります。
configセクションではsignature_version2: falseが指定されており、access_keyとsecret_keyは指定されていません。apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: s3 config: bucket: $S3_BUCKET endpoint: s3.$REGION.amazonaws.com signature_version2: false-
MultiClusterObservability カスタムリソースの作成 セクションの説明に従って、
MultiClusterObservabilityカスタムリソースにサービスアカウントアノテーションを指定します。 以下のコマンドを使用して、クラウドプロバイダーの S3 アクセスキーおよび秘密鍵を取得します。シークレットの
base64文字列のデコード、編集、エンコードが必要です。クラウドプロバイダーの S3 アクセスキーを編集およびデコードするには、次のコマンドを実行します。
YOUR_CLOUD_PROVIDER_ACCESS_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep access_key | awk '{print $2}')クラウドプロバイダーのアクセスキーを表示するには、次のコマンドを実行します。
echo $YOUR_CLOUD_PROVIDER_ACCESS_KEYクラウドプロバイダーの秘密鍵を編集およびデコードするには、次のコマンドを実行します。
YOUR_CLOUD_PROVIDER_SECRET_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep secret_key | awk '{print $2}')- クラウドプロバイダーの秘密鍵を表示するには、次のコマンドを実行します。
echo $YOUR_CLOUD_PROVIDER_SECRET_KEY次のデプロイメントとステートフルセットの Pod をチェックして、オブザーバビリティーが有効になっていることを確認します。次の情報が表示される場合があります。
observability-thanos-query (deployment) observability-thanos-compact (statefulset) observability-thanos-receive-default (statefulset) observability-thanos-rule (statefulset) observability-thanos-store-shard-x (statefulsets)
1.4.2.3. MultiClusterObservability カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterObservability カスタムリソースを使用して、さまざまなコンポーネントの永続ボリュームのストレージサイズを指定します。MultiClusterObservability カスタムリソースの最初の作成時にストレージサイズを設定する必要があります。デプロイ後にストレージサイズ値を更新すると、ストレージクラスが動的ボリューム拡張をサポートしている場合にのみ変更が反映されます。詳細は、Red Hat OpenShift Container Platform のドキュメントにある永続ボリュームの拡張 を参照してください。
次の手順を実行して、ハブクラスターに MultiClusterObservability カスタムリソースを作成します。
multiclusterobservability_cr.yamlという名前のMultiClusterObservabilityカスタムリソースの YAML ファイルを作成します。オブザーバビリティーについては、以下のデフォルト YAML ファイルを確認してください。
apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: observabilityAddonSpec: {} storageConfig: metricObjectStorage: name: thanos-object-storage key: thanos.yamladvancedセクションでretentionConfigパラメーターの値を変更する必要がある場合があります。詳細は、Thanos Downsampling resolution and retention を参照してください。マネージドクラスターの数によっては、ステートフルセットのストレージの量を更新する必要がある場合があります。S3 バケットが STS トークンを使用するように設定されている場合は、S3 ロールで STS を使用するようにサービスアカウントにアノテーションを付けます。次の設定を表示します。spec: advanced: compact: serviceAccountAnnotations: eks.amazonaws.com/role-arn: $S3_ROLE store: serviceAccountAnnotations: eks.amazonaws.com/role-arn: $S3_ROLE rule: serviceAccountAnnotations: eks.amazonaws.com/role-arn: $S3_ROLE receive: serviceAccountAnnotations: eks.amazonaws.com/role-arn: $S3_ROLE query: serviceAccountAnnotations: eks.amazonaws.com/role-arn: $S3_ROLE詳細は、オブザーバビリティー API を参照してください。
インフラストラクチャーマシンセットにデプロイするには、
MultiClusterObservabilityYAML のnodeSelectorを更新して、セットのラベルを設定する必要があります。YAML の内容は以下のようになります。nodeSelector: node-role.kubernetes.io/infra: ""詳細は、インフラストラクチャーマシンセットの作成 を参照してください。
以下のコマンドを実行してオブザーバビリティー YAML をクラスターに適用します。
oc apply -f multiclusterobservability_cr.yaml注記: デフォルトでは、
MultiClusterObservabilityカスタムリソースでstorageConfig.storageClassフィールドを定義しない場合、MultiClusterObservabilityリソースのstorageConfigセクションのStorageClassフィールドにプラットフォームのデフォルト値が入力されます。たとえば、AWS のデフォルトのstorageClassはgp2に設定されます。次のコマンドを実行して、デフォルトの
storageClassを確認します。oc get storageClass以下の出力例を参照してください。
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 151m gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 151m- Grafana ダッシュボードを起動してオブザーバビリティーサービスが有効になっていることを検証し、データが入力されていることを確認します。
- コンソールの 概要 ページまたは クラスター ページから、コンソールヘッダーの近くにある Grafana リンク をクリックします。
multicluster-observability-operatorデプロイメントにアクセスして、multicluster-observability-operatorPod がmulticlusterhub-operatorデプロイメントによってデプロイされていることを確認します。以下のコマンドを実行します。oc get deploy multicluster-observability-operator -n open-cluster-management --show-labels次のような結果が表示される場合があります。
NAME READY UP-TO-DATE AVAILABLE AGE LABELS multicluster-observability-operator 1/1 1 1 35m installer.name=multiclusterhub,installer.namespace=open-cluster-managementリソースに関連付けられているラベルについて
multicluster-observability-operatorデプロイメントのlabelsセクションを表示します。labelsセクションには次の詳細が含まれる場合があります。labels: installer.name: multiclusterhub installer.namespace: open-cluster-management-
注記: オブザーバビリティーデータを収集しないように特定のマネージドクラスターを除外するには、クラスターに
observability: disabledクラスターラベルを追加します。
オブザーバビリティーサービスが有効になります。オブザーバビリティーサービスを有効にすると、次の機能が開始されます。
- マネージドクラスターからのアラートマネージャーはすべて、Red Hat Advanced Cluster Management ハブクラスターに転送されます。
Red Hat Advanced Cluster Management ハブクラスターに接続されたマネージドクラスターはすべて、アラートを Red Hat Advanced Cluster Management のオブザーバビリティーサービスに送信できます。Red Hat Advanced Cluster Management Alertmanager を設定して、重複を排除してグループ化し、アラートをメール、PagerDuty、または OpsGenie などの適切なレシーバー統合にルーティングすることができます。アラートの通知解除や抑制にも対応できます。
注記: Red Hat Advanced Cluster Management ハブクラスターへのアラート転送機能は、サポートされている OpenShift Container Platform バージョンのマネージドクラスターでのみサポートされます。オブザーバビリティーを有効にして Red Hat Advanced Cluster Management をインストールすると、アラートが自動的にハブクラスターに転送されます。詳細は、送信アラート を参照してください。
1.4.3. Red Hat OpenShift Container Platform コンソールからのオブザーバビリティーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
オプションで、Red Hat OpenShift Container Platform コンソールからオブザーバビリティーを有効にし、open-cluster-management-observability という名前のプロジェクトを作成します。以下の手順を実行します。
-
open-cluster-management-observabilityプロジェクトで、multiclusterhub-operator-pull-secretという名前のイメージプルシークレットを作成します。 -
open-cluster-management-observabilityプロジェクトにthanos-object-storageという名前のオブジェクトストレージシークレットを作成します。 - オブジェクトストレージシークレットの詳細を入力し、Create をクリックします。シークレットの例を表示するには、オブザーバビリティーの有効化 セクションの手順 4 を参照してください。
-
MultiClusterObservabilityカスタムリソースインスタンスを作成します。Observability components are deployed and runningのメッセージが表示されると、OpenShift Container Platform からオブザーバビリティーサービスが正常に有効化されています。
1.4.3.1. Thanos バージョンの検証 リンクのコピーリンクがクリップボードにコピーされました!
Thanos がクラスターにデプロイされたら、コマンドラインインターフェイス (CLI) から Thanos のバージョンを確認します。
ハブクラスターにログインした後、オブザーバビリティー Pod で次のコマンドを実行して Thanos バージョンを受け取ります。
thanos --version
Thanos のバージョンが表示されます。
1.4.4. オブザーバビリティーの無効化 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーを無効にして、Red Hat Advanced Cluster Management ハブクラスターでデータ収集を停止します。
1.4.4.1. すべてのクラスターでオブザーバビリティーを無効にする リンクのコピーリンクがクリップボードにコピーされました!
すべてのマネージドクラスターでオブザーバビリティーコンポーネントを削除して、オブザーバビリティーを無効にします。enableMetrics を false に設定して、multicluster-observability-operator リソースを更新します。更新されたリソースは、以下のような変更内容になります。
spec:
imagePullPolicy: Always
imagePullSecret: multiclusterhub-operator-pull-secret
observabilityAddonSpec:
enableMetrics: false
workers: 1
1.4.4.2. 単一クラスターでオブザーバビリティーを無効にする リンクのコピーリンクがクリップボードにコピーされました!
特定のマネージドクラスターのオブザーバビリティーコンポーネントを削除してオブザーバビリティーを無効にします。以下の手順を実行します。
-
managedclusters.cluster.open-cluster-management.ioのカスタムリソースにobservability: disabledラベルを追加します。 Red Hat Advanced Cluster Management コンソールの Clusters ページから、指定したクラスターに
observability=disabledラベルを追加します。注記: オブザーバビリティーコンポーネントが含まれるマネージドクラスターをデタッチすると、
metrics-collectorデプロイメントが削除されます。
1.4.5. オブザーバビリティーの削除 リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterObservability カスタムリソースを削除すると、オブザーバビリティーサービスが無効化され、アンインストールされます。OpenShift Container Platform コンソールナビゲーションから、Operators > Installed Operators > Advanced Cluster Manager for Kubernetes の順に選択します。MultiClusterObservability カスタムリソースを削除します。
1.4.6. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
オブジェクトストレージ情報に関するクラウドプロバイダーのドキュメントへのリンク:
- オブザーバビリティーの使用 を参照してください。
- オブザーバビリティーサービスのカスタマイズの詳細は、オブザーバビリティーの高度な設定 を参照してください。
- その他の関連トピックは、オブザーバビリティーサービス に戻ってください。
1.5. オブザーバビリティーの使用 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーサービスを使用して、フリート全体のクラスターの使用率を表示します。
必要なアクセス権: クラスター管理者
1.5.1. オブザーバビリティー API を使用したメトリクスのクエリー リンクのコピーリンクがクリップボードにコピーされました!
ネットワーク接続の双方のアイデンティティーを検証する相互 TLS を使用してエンドポイントにアクセスするには、外部オブザーバビリティー API を使用して Red Hat OpenShift Container Platform rbac-query-proxy ルート経由でメトリクスのクエリーを実行します。rbac-query-proxy ルートのクエリーを取得するには、次の手順を実行します。
以下のコマンドを使用して、ルートの詳細を取得できます。
export PROXY_ROUTE_URL=$(oc get route rbac-query-proxy -n open-cluster-management-observability -o jsonpath='{.spec.host}')OpenShift Container Platform OAuth アクセストークンを使用して
rbac-query-proxyルートにアクセスするには、次のコマンドを実行してトークンを取得します。トークンは、namespace を取得するパーミッションがあるユーザーまたはサービスアカウントと関連付ける必要があります。MY_TOKEN=$(oc whoami --show-token)openshift-ingressルートにアクセスするには、デフォルトの CA 証明書を取得し、tls.crtキーの内容をローカルファイルに保存します。以下のコマンドを実行します。oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt注意: ハブクラスターが OpenShift Service on AWS で実行している場合、
router-certs-defaultシークレットは存在しません。代わりに、デフォルトの Ingress コントローラーオブジェクトでspec.defaultCertificate.nameが指す CA 証明書を使用します。tls.crtキーの内容をローカルファイルに保存します。以下の手順を実行します。次のコマンドを実行して、
spec.defaultCertificate.nameの名前を取得します。SECRET_NAME=$(oc get ingresscontroller default -n openshift-ingress-operator -o jsonpath=" {.spec.defaultCertificate.name}")次のコマンドを実行して、シークレットから証明書を抽出します。
oc get secret $SECRET_NAME -n openshift-ingress -o jsonpath=" {.data.tls\.crt}" | base64 -d > ca.crt
API からメトリクスのクエリーを実行するには、次のコマンドを実行します。
curl --cacert ./ca.crt -H "Authorization: Bearer ${MY_TOKEN}" https://${PROXY_ROUTE_URL}/api/v1/query?query=${QUERY_EXPRESSION}注記:
QUERY_EXPRESSIONは標準の Prometheus クエリー式です。たとえば、前述のコマンドの URL をhttps://{PROXY_ROUTE_URL}/api/v1/query?query=cluster_infrastructure_providerに置き換えて、メトリクスcluster_infrastructure_providerのクエリーを実行します。詳細は、Prometheus のクエリー を参照してください。-
rbac-query-proxyルートにカスタム証明書を設定する場合は、rbac-query-proxy ルートの証明書の置き換え を参照してください。
1.5.1.1. 外部エンドポイントへのメトリクスのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムで Prometheus Remote-Write 仕様をサポートするには、メトリクスを外部エンドポイントにエクスポートします。メトリクスを外部エンドポイントにエクスポートするには、次の手順を実行します。
open-cluster-management-observabilitynamespace の外部エンドポイントのアクセス情報を使用して、外部エンドポイントの Kubernetes シークレットを作成します。次のシークレットの例を表示します。apiVersion: v1 kind: Secret metadata: name: victoriametrics namespace: open-cluster-management-observability type: Opaque stringData: ep.yaml: |1 url: http://victoriametrics:8428/api/v1/write2 http_client_config:3 basic_auth:4 username: test5 password: test6 tls_config:7 secret_name:8 ca_file_key:9 cert_file_key:10 key_file_key:11 insecure_skip_verify:12 - 1
ep.yamlパラメーターはコンテンツのキーであり、次のステップのMultiClusterObservabilityカスタムリソースで使用されます。現在、オブザーバビリティーでは、セキュリティーチェックなし、Basic 認証あり、またはtlsが有効なエンドポイントへのメトリクスのエクスポートをサポートしています。サポートされているパラメーターの完全なリストは、次の表を参照してください。- 2
urlパラメーターは、必須の、外部エンドポイント URL です。値を文字列として入力します。- 3
http_client_configパラメーターは、オプションの、HTTP クライアントの高度な設定です。- 4
basic_authパラメーターは、オプションの、Basic 認証用の HTTP クライアント設定です。- 5
usernameパラメーターは、オプションの、基本認可のユーザー名です。値を文字列として入力します。- 6
passwordは、オプションの、基本認可のパスワードです。値を文字列として入力します。- 7
tls_configパラメーターは、オプションの、TLS の HTTP クライアント設定です。- 8
secret_nameパラメーターは、必須の、証明書が含まれるシークレットの名前です。値を文字列として入力します。- 9
ca_file_keyパラメーターは、必須の、シークレット内の CA 証明書のキーです。このパラメーターは、insecure_skip_verifyパラメーターがtrueに設定されている場合に限りオプションとなります。値を文字列として入力します。- 10
cert_file_keyパラメーターは、必須の、シークレット内のクライアント証明書のキーです。値を文字列として入力します。- 11
key_file_keyパラメーターは、必須の、シークレット内のクライアントキーのキーです。値を文字列として入力します。- 12
insecure_skip_verifyパラメーターは、オプションであり、ターゲット証明書の検証をスキップするために使用されます。値をブール値として入力します。
エクスポートする外部エンドポイントのリストを追加するには、
MultiClusterObservabilityカスタムリソースにwriteStorageパラメーターを追加します。以下の例を参照してください。spec: storageConfig: writeStorage:1 - key: ep.yaml name: victoriametrics- 1
- 各アイテムには、name と key の 2 つの属性が含まれています。Name は、エンドポイントアクセス情報を含む Kubernetes シークレットの名前であり、key はシークレット内のコンテンツのキーです。リストに複数のアイテムを追加すると、メトリクスは複数の外部エンドポイントにエクスポートされます。
メトリクスのエクスポートが有効になった後、
acm_remote_write_requests_totalメトリクスを確認して、メトリクスのエクスポートのステータスを表示します。- ハブクラスターの OpenShift Container Platform コンソールから、Observe セクションの Metrics をクリックして Metrics ページに移動します。
-
次に、
acm_remote_write_requests_totalメトリクスにクエリーを実行します。このメトリクスの値は、1 つの Observatorium API インスタンス上の 1 つの外部エンドポイントに対する特定のレスポンスを持つリクエストの合計数です。nameラベルは、外部エンドポイントの名前です。codeラベルは、メトリクスエクスポートの HTTP リクエストのリターンコードです。
1.5.2. ダッシュボードを使用したデータの表示および調査 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターから Grafana にアクセスして、マネージドクラスターからデータを表示します。特定のアラートを照会して、そのクエリーのフィルターを追加できます。
たとえば、単一ノードの OpenShift クラスターから cluster_infrastructure_provider アラートを確認するには、cluster_infrastructure_provider{clusterType="SNO"} のクエリー式を使用します。
注記: シングルノードのマネージドクラスターでオブザーバビリティーが有効になっている場合は、ObservabilitySpec.resources.CPU.limits パラメーターを設定しないでください。CPU 制限を設定すると、オブザーバビリティー Pod がマネージドクラスターの容量にカウントされます。追加リソース セクションの 管理ワークロードのパーティショニング を参照してください。
1.5.2.1. 履歴データの表示 リンクのコピーリンクがクリップボードにコピーされました!
履歴データをクエリーする場合は、クエリーパラメーターオプションを手動で設定して、ダッシュボードから表示されるデータの量を制御します。以下の手順を実行します。
- ハブクラスターから、コンソールヘッダーにある Grafana link を選択します。
- Edit Panel を選択して、クラスターダッシュボードを編集します。
- Grafana のクエリーフロントエンドデータソースから、Query タブをクリックします。
-
$datasourceを選択します。 - より多くのデータを表示する場合は、Step パラメーターセクションの値を増やします。Step パラメーターセクションが空の場合は、自動的に計算されます。
-
Custom query parameters フィールドを見つけて、
max_source_resolution=autoを選択します。 - データが表示されていることを確認するには、Grafana ページを更新します。
Grafana ダッシュボードからクエリーデータが表示されます。
1.5.2.2. Red Hat Advanced Cluster Management ダッシュボードの表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management のオブザーバビリティーサービスを有効にすると、3 つのダッシュボードが利用可能になります。次に示すダッシュボードの説明を確認してください。
- Alert Analysis: マネージドクラスターフリート内で生成されているアラートの概要を示すダッシュボード。
- Clusters by Alert: アラート名でフィルタリングできるアラートダッシュボード。
- Alerts by Cluster: クラスターでフィルタリングし、クラスター環境内で発生したアラート、または保留中のアラートのリアルタイムデータを表示できるアラートダッシュボード。
1.5.2.3. etcd テーブルの表示 リンクのコピーリンクがクリップボードにコピーされました!
Grafana のハブクラスターダッシュボードから etcd テーブルを表示して、データストアとしての etcd の安定性を確認することもできます。ハブクラスターから Grafana リンクを選択して、ハブクラスターから収集された etcd テーブルデータを表示します。マネージドクラスターの Leader election changes が表示されます。
1.5.2.4. Kubernetes API サーバーダッシュボードの表示 リンクのコピーリンクがクリップボードにコピーされました!
過去 7 日間または 30 日間のターゲットとする サービスレベル目標 (SLO) 値を超過または達成しているクラスターの合計数、問題のあるクラスターと問題のないクラスター、および API サーバー要求期間を確認するには、次のオプションを使用して Kubernetes API サーバーダッシュボードを表示します。
Grafana のハブクラスターダッシュボードから、Kubernetes API サービスレベルの概要を表示します。
- Grafana ダッシュボードに移動します。
- Kubernetes > Service-Level Overview > API Server を選択して、管理ダッシュボードメニューにアクセスします。Fleet Overview および Top Cluster の詳細が表示されます。
Grafana のハブクラスターダッシュボードから Kubernetes API サービスレベルの概要テーブルを表示して、過去 7 日間または 30 日間のエラーバジェット、残りのダウンタイム、トレンドを確認します。
- ハブクラスターから Grafana ダッシュボードに移動します。
- Kubernetes > Service-Level Overview > API Server を選択して、管理ダッシュボードメニューにアクセスします。Fleet Overview および Top Cluster の詳細が表示されます。
1.5.2.5. OpenShift Virtualization ダッシュボードの表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Virtualization ダッシュボードを表示すると、OpenShift Virtualization Operator がインストールされている各クラスターの包括的な分析情報を確認できます。アクティブな OpenShift Virtualization アラートと Hyperconverged Cluster Operator の状態によって決定される Operator の状態が表示されます。さらに、実行中の仮想マシンの数と各クラスターの Operator のバージョンも表示されます。
ダッシュボードには、Operator の健全性に影響を与えるアラートもリスト表示されます。また、Operator の健全性に影響を与えないアラートも含め、すべての OpenShift Virtualization アラートが別途表示されます。ダッシュボードは、クラスター名、Operator の健全性アラート、健全性へのアラートの影響、アラートの重大度でフィルタリングできます。
1.5.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 詳細は、Prometheus Remote-Write 仕様 を参照してください。
- ユーザー所有の OAuth アクセストークンの管理 を参照してください。
- オブザーバビリティーサービスの有効化 を参照してください。
- その他のトピックは、オブザーバビリティーサービス を参照してください。
1.5.4. Grafana ダッシュボードの使用 リンクのコピーリンクがクリップボードにコピーされました!
Grafana ダッシュボードを使用して、ハブクラスターとマネージドクラスターのメトリクスを表示します。Grafana アラートダッシュボードに表示されるデータは、マネージドクラスターから発信される alerts メトリクスに依存します。alerts メトリクスは、ハブクラスター上の Red Hat Advanced Cluster Management アラートマネージャーにアラートを転送するマネージドクラスターには影響しません。したがって、メトリクスとアラートには異なる伝播メカニズムがあり、それぞれ別のコードパスに従います。
Grafana アラートダッシュボードにデータが表示されている場合でも、マネージドクラスターアラートが Red Hat Advanced Cluster Management ハブクラスターアラートマネージャーに正常に転送されているという保証はありません。メトリクスがマネージドクラスターから伝播されている場合は、Grafana アラートダッシュボードにデータが表示されます。
開発ニーズに合わせて Grafana ダッシュボードを使用するには、以下を実行します。
1.5.4.1. Grafana 開発者インスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
grafana-dev インスタンスを作成して、Grafana ダッシュボードを設計できます。必ず最新の grafana-dev インスタンスを使用してください。
Grafana 開発者インスタンスを設定するには、以下の手順を実行します。
-
open-cluster-management/multicluster-observability-operator/リポジトリーのクローンを作成し、toolsフォルダーにあるスクリプトを実行できるようにします。 setup-grafana-dev.shを実行して、Grafana インスタンスを設定します。スクリプトを実行すると、secret/grafana-dev-config、deployment.apps/grafana-dev、service/grafana-dev、ingress.extensions/grafana-dev、persistentvolumeclaim/grafana-devのリソースが作成されます。./setup-grafana-dev.sh --deploy secret/grafana-dev-config created deployment.apps/grafana-dev created service/grafana-dev created serviceaccount/grafana-dev created clusterrolebinding.rbac.authorization.k8s.io/open-cluster-management:grafana-crb-dev created route.route.openshift.io/grafana-dev created persistentvolumeclaim/grafana-dev created oauthclient.oauth.openshift.io/grafana-proxy-client-dev created deployment.apps/grafana-dev patched service/grafana-dev patched route.route.openshift.io/grafana-dev patched oauthclient.oauth.openshift.io/grafana-proxy-client-dev patched clusterrolebinding.rbac.authorization.k8s.io/open-cluster-management:grafana-crb-dev patchedswitch-to-grafana-admin.shスクリプトを使用して、ユーザーロールを Grafana 管理者に切り替えます。-
Grafana の URL
https:grafana-dev-open-cluster-management-observability.{OPENSHIFT_INGRESS_DOMAIN}を選択し、ログインします。 次に、以下のコマンドを実行して、切り替えユーザーを Grafana 管理者として追加します。たとえば、
kubeadminを使用してログインしたら、以下のコマンドを実行します。./switch-to-grafana-admin.sh kube:admin User <kube:admin> switched to be grafana admin
-
Grafana の URL
Grafana 開発者インスタンスが設定されます。
1.5.4.1.1. Grafana のバージョン検証 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) または Grafana ユーザーインターフェイスから Grafana のバージョンを検証します。
ハブクラスターにログインした後、observabilty-grafana Pod ターミナルにアクセスします。以下のコマンドを実行します。
grafana-cli
現在クラスター環境内にデプロイされている Grafana のバージョンが表示されます。
Grafana ダッシュボードの Manage タブに移動することもできます。ページの最後までスクロールすると、バージョンが記載されています。
1.5.4.2. Grafana ダッシュボードの設計 リンクのコピーリンクがクリップボードにコピーされました!
Grafana インスタンスを設定したら、ダッシュボードを設計できます。Grafana コンソールを更新し、ダッシュボードを設計するには、以下の手順を実行します。
- Grafana コンソールのナビゲーションパネルから Create アイコンを選択してダッシュボードを作成します。Dashboard を選択し、Add new panel をクリックします。
- New Dashboard/Edit Panel ビューで、Query タブを選択します。
-
データソースセレクターから
Observatoriumを選択し、PromQL クエリーを入力してクエリーを設定します。 - Grafana ダッシュボードヘッダーから、ダッシュボードヘッダーにある Save アイコンをクリックします。
- わかりやすい名前を追加し、Save をクリックします。
1.5.4.2.1. ConfigMap での Grafana ダッシュボードの設計 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap を使用して、Grafana ダッシュボードを設計します。generate-dashboard-configmap-yaml.sh スクリプトを使用してダッシュボードの ConfigMap を生成し、ローカルで ConfigMap を保存できます。
./generate-dashboard-configmap-yaml.sh "Your Dashboard Name"
Save dashboard <your-dashboard-name> to ./your-dashboard-name.yaml
前述のスクリプトを実行するパーミッションがない場合は、以下の手順を実行します。
- ダッシュボードを選択し、Dashboard 設定 アイコンをクリックします。
- ナビゲーションパネルから JSON Model アイコンをクリックします。
-
ダッシュボード JSON データをコピーし、
dataセクションに貼り付けます。 nameを、$your-dashboard-nameに置き換えます。data.$your-dashboard-name.json.$$your_dashboard_jsonのuidフィールドに Universally Unique Identifier (UUID) を入力します。uuidegen などのプログラムを使用して UUID を作成できます。ConfigMap は、以下のファイルのようになります。kind: ConfigMap apiVersion: v1 metadata: name: $your-dashboard-name namespace: open-cluster-management-observability labels: grafana-custom-dashboard: "true" data: $your-dashboard-name.json: |- $your_dashboard_json注記:
ダッシュボードが
grafana-devインスタンス内に作成されている場合は、ダッシュボードの名前を取得して、スクリプトで引数として渡すことができます。たとえば、Demo Dashboard という名前のダッシュボードがgrafana-devインスタンスに作成されます。CLI から、次のスクリプトを実行できます。./generate-dashboard-configmap-yaml.sh "Demo Dashboard"スクリプトを実行すると、次のメッセージが表示される場合があります。
Save dashboard <demo-dashboard> to ./demo-dashboard.yamlダッシュボードが General フォルダーにない場合は、この ConfigMap の
annotationsセクションでフォルダー名を指定できます。annotations: observability.open-cluster-management.io/dashboard-folder: CustomConfigMap の更新が完了したら、インストールしてダッシュボードを Grafana インスタンスにインポートできます。
CLI または OpenShift Container Platform コンソールから YAML を適用して、YAML ファイルが作成されていることを確認します。open-cluster-management-observability namespace 内に ConfigMap が作成されます。CLI から次のコマンドを実行します。
oc apply -f demo-dashboard.yaml
OpenShift Container Platform コンソールから、demo-dashboard.yaml ファイルを使用して、ConfigMap を作成します。ダッシュボードは Custom フォルダーにあります。
1.5.4.3. Grafana 開発者インスタンスのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
インスタンスをアンインストールすると、関連するリソースも削除されます。以下のコマンドを実行します。
./setup-grafana-dev.sh --clean
secret "grafana-dev-config" deleted
deployment.apps "grafana-dev" deleted
serviceaccount "grafana-dev" deleted
route.route.openshift.io "grafana-dev" deleted
persistentvolumeclaim "grafana-dev" deleted
oauthclient.oauth.openshift.io "grafana-proxy-client-dev" deleted
clusterrolebinding.rbac.authorization.k8s.io "open-cluster-management:grafana-crb-dev" deleted
1.5.4.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 外部エンドポイントへのメトリクスのエクスポート を参照してください。
- UUID の作成手順は、uuidegen を参照してください。
- 詳細は、Grafana でのマネージドクラスターラベルの使用 を参照してください。
- Grafana ダッシュボードの使用 ページの先頭に戻ります。
- トピックは、環境の監視の紹介 を参照してください。
1.5.5. Grafana でマネージドクラスターラベルを使用する リンクのコピーリンクがクリップボードにコピーされました!
Grafana ダッシュボードで使用するためにマネージドクラスターラベルを有効にします。ハブクラスターでオブザーバビリティーが有効になっている場合は、observability-managed-cluster-label-allowlist ConfigMap が open-cluster-management-observability namespace に作成されます。ConfigMap には、observabilty-rbac-query-proxy Pod によって維持されるマネージドクラスターラベルのリストが含まれており、ACM - Cluster Overview Grafana ダッシュボード内からフィルタリングするラベル名のリストを入力します。デフォルトでは、オブザーバビリティーは observability-managed-cluster-label-allowlist ConfigMap のラベルのサブセットを無視します。
クラスターがマネージドクラスターフリートにインポートされるか、変更されると、observability-rbac-query-proxy Pod は、マネージドクラスターラベルを参照して変更を監視し、observability-managed-cluster-label-allowlist ConfigMap を自動的に更新して、変更を反映させます。ConfigMap には、ignore_labels または labels リストに含まれる一意のラベル名のみが含まれます。observability-managed-cluster-label-allowlist ConfigMap は次の YAML ファイルのようになる場合があります。
data:
managed_cluster.yaml: |
ignore_labels:
- clusterID
- cluster.open-cluster-management.io/clusterset
- feature.open-cluster-management.io/addon-application-manager
- feature.open-cluster-management.io/addon-cert-policy-controller
- feature.open-cluster-management.io/addon-cluster-proxy
- feature.open-cluster-management.io/addon-config-policy-controller
- feature.open-cluster-management.io/addon-governance-policy-framework
- feature.open-cluster-management.io/addon-observability-controller
- feature.open-cluster-management.io/addon-search-collector
- feature.open-cluster-management.io/addon-work-manager
- installer.name
- installer.namespace
- local-cluster
- name
labels:
- cloud
- vendor
+ <1> ConfigMap の ignore_labels キーリストにリストされているラベルはすべて、ACM - Clusters Overview Grafana ダッシュボードのドロップダウンフィルターから削除されます。<2> 有効になっているラベルは ACM - Clusters Overview Grafana ダッシュボードのドロップダウンフィルターに表示されます。値は、選択した label キー値に応じて、acm_managed_cluster_labels メトリクスから取得されます。
引き続き Grafana でのマネージドクラスターラベルの使用方法を確認してください。
1.5.5.1. マネージドクラスターラベルの追加 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターラベルを observability-managed-cluster-label-allowlist ConfigMap に追加すると、そのラベルは Grafana のフィルターオプションとして使用できるようになります。ハブクラスター、またはマネージドクラスターフリートに関連付けられているマネージドクラスターオブジェクトに一意のラベルを追加します。たとえば、ラベル department=finance をマネージドクラスターに追加すると、ConfigMap が更新され、次のように変更されます。
data:
managed_cluster.yaml: |
ignore_labels:
- clusterID
- cluster.open-cluster-management.io/clusterset
- feature.open-cluster-management.io/addon-application-manager
- feature.open-cluster-management.io/addon-cert-policy-controller
- feature.open-cluster-management.io/addon-cluster-proxy
- feature.open-cluster-management.io/addon-config-policy-controller
- feature.open-cluster-management.io/addon-governance-policy-framework
- feature.open-cluster-management.io/addon-observability-controller
- feature.open-cluster-management.io/addon-search-collector
- feature.open-cluster-management.io/addon-work-manager
- installer.name
- installer.namespace
- local-cluster
- name
labels:
- cloud
- department
- vendor
1.5.5.2. マネージドクラスターラベルの有効化 リンクのコピーリンクがクリップボードにコピーされました!
observability-managed-cluster-label-allowlist ConfigMap の ignore_labels リストからラベルを削除することで、すでに無効になっているマネージドクラスターラベルを有効にします。
たとえば、local-cluster および name ラベルを有効にします。observability-managed-cluster-label-allowlist ConfigMap は、次の内容のようになる場合があります。
data:
managed_cluster.yaml: |
ignore_labels:
- clusterID
- installer.name
- installer.namespace
labels:
- cloud
- vendor
- local-cluster
- name
クラスターラベルが確実に更新されるように、ConfigMap は 30 秒後に再同期します。ConfigMap を更新した後、open-cluster-management-observability namespace の observability-rbac-query-proxy Pod ログをチェックして、ラベルがリストされている場所を確認します。次の情報が Pod ログに表示される場合があります。
enabled managedcluster labels: <label>
Grafana ダッシュボードから、ラベルが Label ドロップダウンメニューの値としてリストされていることを確認します。
1.5.5.3. マネージドクラスターラベルの無効化 リンクのコピーリンクがクリップボードにコピーされました!
Label ドロップダウンフィルターのリストからマネージドクラスターラベルを除外します。ラベル名を ignore_labels リストに追加します。たとえば、local-cluster と name を ignore_labels リストに戻すと、YAML は次のファイルのようになります。
data:
managed_cluster.yaml: |
ignore_labels:
- clusterID
- installer.name
- installer.namespace
- local-cluster
- name
labels:
- cloud
- vendor
open-cluster-management-observability namespace の observability-rbac-query-proxy Pod ログをチェックして、ラベルがどこにリストされているかを確認します。次の情報が Pod ログに表示される場合があります。
disabled managedcluster label: <label>
1.5.5.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Grafana ダッシュボードの使用 を参照してください。
- ページの最初の Grafana でのマネージドクラスターラベルの使用 に戻ります。
1.6. アラートの管理 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターとマネージドクラスターの両方のアクティビティーを監視し、プラットフォームとユーザーのワークロードアラートをハブクラスターの Alertmanager に転送して、Slack、メール、PagerDuty などの外部システムに通知をルーティングするように、オブザーバビリティーアラートを設定します。
詳細は、以下を参照してください。
1.6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
アラートを管理するには、次の認証情報を持ち、次のアクションを完了する必要があります。
- ハブクラスターでオブザーバビリティーを有効にする。
-
open-cluster-management-observabilitynamespace 内のSecretリソースに対する作成権限を保持する。 -
MultiClusterObservabilityリソースに対する編集権限を保持する。 - 再起動中にメトリクスが失われないように、マネージドクラスター上の Prometheus インスタンスを設定する。ヘルプは、OpenShift Container Platform ドキュメントの 永続ストレージの設定 を参照してください。
- マネージドクラスターでユーザーワークロードの監視とアラートを有効化する。ヘルプは、OpenShift Container Platform ドキュメントの ユーザーワークロード監視の設定 および アラートの管理 を参照してください。
-
Prometheus のユーザーワークロードの場合は、アラートルールにラベルを追加して、
openshift-user-workload-monitoringnamespace にデプロイされているユーザーワークロード Prometheus のみがアラートルールを評価するように強制し、Thanos Ruler インスタンスがそれらを処理しないようにする。ヘルプについては、OpenShift Container Platform のドキュメントにある ユーザー定義プロジェクトのアラートルーティングを有効にする を参照してください。
1.6.2. Alertmanager の設定 リンクのコピーリンクがクリップボードにコピーされました!
メール、Slack、PagerDuty などの外部メッセージングツールを統合し、Alertmanager から通知を受信します。open-cluster-management-observability namespace で alertmanager-config シークレットをオーバーライドして、統合を追加し、Alertmanager のルートを設定します。以下の手順を実行して、カスタムのレシーバールールを更新します。
alertmanager-configシークレットからデータを抽出します。以下のコマンドを実行します。oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yaml以下のコマンドを実行し、
alertmanager.yamlファイル設定を編集して保存します。oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml | oc -n open-cluster-management-observability replace secret --filename=-更新したシークレットは以下の内容のようになります。
global smtp_smarthost: 'localhost:25' smtp_from: 'alertmanager@example.org' smtp_auth_username: 'alertmanager' smtp_auth_password: 'password' templates: - '/etc/alertmanager/template/*.tmpl' route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 3h receiver: team-X-mails routes: - match_re: service: ^(foo1|foo2|baz)$ receiver: team-X-mails
シークレットを変更すると、変更はただちに適用されます。Alertmanager の例は、prometheus/alertmanager を参照してください。
1.6.3. Alertmanager からサードパーティーのエンドポイントへの通信を保護する リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes Secret リソースを通じて認証情報をセキュアかつ管理可能な状態に保つことで、Alertmanager から Slack、メール、PagerDuty などのサードパーティーのエンドポイントへのセキュアな外部通信を有効にします。認可認証情報にアクセスするには、alertmanager Pod 内にマウントできる任意のコンテンツを含む Secret リソースを作成できます。
Alertmanager 設定内のシークレットを参照するには、open-cluster-management-observability namespace 内に Secret リソースコンテンツを追加し、alertmanager Pod 内にコンテンツをマウントします。たとえば、tls シークレットを作成してマウントするには、次の手順を実行します。
TLS 証明書を使用して
tlsシークレットを作成するには、次のコマンドを実行します。oc create secret tls tls --cert=</path/to/cert.crt> --key=</path/to/cert.key> -n open-cluster-management-observabilitytlsシークレットをMultiClusterObservabilityリソースにマウントするには、それをadvancedセクションに追加します。リソースは以下の内容のようになります。... advanced: alertmanager: secrets: ['tls']Alertmanager 設定内に
tlsシークレットの参照を追加するには、シークレットのパスを設定に追加します。リソースは、以下の設定のようになります。tls_config: cert_file: '/etc/alertmanager/secrets/tls/tls.crt' key_file: '/etc/alertmanager/secrets/tls/tls.key'シークレットが
alertmanagerPod 内にあることを確認するには、次のコマンドを実行します。oc -n open-cluster-management-observability get secret alertmanager-config --template='{{ index .data "alertmanager.yaml" }}' |base64 -d > alertmanager.yamlYAML の内容は次のようになります。
"global": "http_config": "tls_config": "cert_file": "/etc/alertmanager/secrets/storyverify/tls.crt" "key_file": "/etc/alertmanager/secrets/storyverify/tls.key"alertmanager.yaml設定をalertmanager-configシークレットに保存するには、以下のコマンドを実行します。oc -n open-cluster-management-observability create secret generic alertmanager-config --from-file=alertmanager.yaml --dry-run -o=yaml以前のシークレットを新しいシークレットに置き換えるには、次のコマンドを実行します。
oc -n open-cluster-management-observability replace secret --filename=-
1.6.4. アラートの転送 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーを有効にすると、OpenShift Container Platform マネージドクラスターからのアラートは、ハブクラスターの Alertmanager に自動的に送信されます。デフォルトでは、すべてのプラットフォームアラートがハブクラスターの Alertmanager に送信されます。OpenShift Container Platform マネージドクラスターでユーザーワークロードアラートを有効にすると、ユーザーワークロードアラートもハブクラスターに送信されます。alertmanager-config YAML ファイルを使用して、外部通知システムでアラートを設定できます。
alertmanager-config YAML ファイルの例を以下に示します。
global:
slack_api_url: '<slack_webhook_url>'
route:
receiver: 'slack-notifications'
group_by: [alertname, datacenter, app]
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#alerts'
text: 'https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}'
アラート転送用のプロキシーを設定する場合は、alertmanager-config YAML ファイルに次の global エントリーを追加します。
global:
slack_api_url: '<slack_webhook_url>'
http_config:
proxy_url: http://****
ユーザーワークロードアラートを転送する場合、アラートは Thanos ルーラーではなく、ユーザーワークロード Prometheus インスタンスによって処理される必要があります。PrometheusRule リソースの次の例を参照してください。
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus
1.6.5. マネージドクラスターのアラート転送の無効化 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのアラート転送を無効にするには、MultiClusterObservability カスタムリソースに mco-disable-alerting: "true" アノテーションを追加します。mco-disable-alerting: "true" アノテーションを設定すると、プラットフォームおよびユーザーワークロードアラートは、いずれもハブクラスターの Alertmanager に転送されません。マネージドクラスターの転送設定は元に戻ります。
openshift-monitoring namespace の cluster-monitoring-config config map への設定の更新が元に戻されます。アノテーションを設定すると、cluster-monitoring-config config map が observability operator エンドポイントによって管理または更新されなくなります。設定を更新すると、マネージドクラスター上のプラットフォームおよびユーザーワークロードの Prometheus インスタンスが両方とも再起動します。以下の手順を実行します。
変更が元に戻ると、cluster-monitoring-reverted という名前の config map が open-cluster-management-addon-observability namespace に作成されます。手動で追加された新しいアラート転送設定は、config map から元に戻されません。
次のコマンドを実行して、
mco-disable-alertingアノテーションを"true"に設定します。oc annotate MultiClusterObservability observability mco-disable-alerting=true重要: マネージドクラスター上の Prometheus が永続ボリュームで設定されていないと、メトリクスが失われます。
- ハブクラスターアラートマネージャーがマネージドクラスターアラートをサードパーティーのメッセージングツールに伝達していないことを確認します。
1.6.6. マネージドクラスターのユーザーワークロードアラート転送の無効化 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターのユーザーワークロードアラート転送を無効にするには、MultiClusterObservability カスタムリソースに mco-disable-uwl-alerting: "true" アノテーションを追加します。アノテーションを設定すると、ハブクラスター上の Alertmanager へのユーザーワークロードアラートの転送は停止し、プラットフォームアラートは引き続き Alertmanager に転送されます。
アノテーションを設定すると、user-workload-monitoring-config config map は Observability Operator エンドポイントによって管理または更新されなくなります。設定を更新すると、マネージドクラスター上のユーザーワークロード Prometheus インスタンスが再起動されます。
次のコマンドを実行して、mco-disable-uwl-alerting アノテーションを "true" に設定します。
oc annotate MultiClusterObservability observability mco-disable-uwl-alerting=true
1.6.7. アラートをサイレントにする リンクのコピーリンクがクリップボードにコピーされました!
受信したくないアラートを追加します。アラート名、一致ラベル、または期間によってアラートをサイレントにすることができます。サイレントにしたいアラートを追加すると、ID が作成されます。サイレントにしたアラートの ID は、文字列 d839aca9-ed46-40be-84c4-dca8773671da のようになります。
アラートをサイレントにする方法は、引き続きお読みください。
Red Hat Advanced Cluster Management アラートをオフにするには、
open-cluster-management-observabilitynamespace のalertmanagerPod にアクセスできる必要があります。たとえば、SampleAlertをオフにするには、observability-alertmanager-0Pod ターミナルで次のコマンドを実行します。amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" alertname="SampleAlert"複数の一致ラベルを使用してアラートをサイレントにします。次のコマンドは
match-label-1とmatch-label-2を使用します。amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" <match-label-1>=<match-value-1> <match-label-2>=<match-value-2>特定の期間アラートをサイレントにする場合は、
--durationフラグを使用します。次のコマンドを実行して、SampleAlertを 1 時間サイレントにします。amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" --duration="1h" alertname="SampleAlert"消音アラートの開始時刻または終了時刻を指定することもできます。次のコマンドを入力して、特定の開始時刻に
SampleAlertをサイレントにします。amtool silence add --alertmanager.url="http://localhost:9093" --author="user" --comment="Silencing sample alert" --start="2023-04-14T15:04:05-07:00" alertname="SampleAlert"作成されたサイレント化されたアラートをすべて表示するには、次のコマンドを実行します。
amtool silence --alertmanager.url="http://localhost:9093"アラートをサイレントにしたくない場合は、次のコマンドを実行してアラートのサイレントを終了します。
amtool silence expire --alertmanager.url="http://localhost:9093" "d839aca9-ed46-40be-84c4-dca8773671da"すべてのアラートをサイレントにするのを終了するには、次のコマンドを実行します。
amtool silence expire --alertmanager.url="http://localhost:9093" $(amtool silence query --alertmanager.url="http://localhost:9093" -q)
1.6.8. オブザーバビリティーストレージの移行 リンクのコピーリンクがクリップボードにコピーされました!
アラートサイレンサーを使用する場合は、サイレンサーを以前の状態のまま保持しながら、オブザーバビリティーストレージを移行できます。これを行うには、選択した StorageClass リソースを使用する新しい StatefulSets および PersistentVolumes (PV) リソースを作成して、Red Hat Advanced Cluster Management のオブザーバビリティーストレージを移行します。
注記: PV のストレージは、クラスターから収集されたメトリクスを保存するために使用されるオブジェクトストレージとは異なります。
StatefulSets と PV を使用してオブザーバビリティーデータを新しいストレージに移行すると、次のデータコンポーネントが保存されます。
- Observatorium または Thanos: データを受信してオブジェクトストレージにアップロードします。一部のコンポーネントは PV にデータを保存します。このデータは、Observatorium または Thanos が起動時にオブジェクトストレージを自動的に再生成するため、このデータを失っても影響はありません。
- Alertmanager: サイレント化されたアラートのみを保存します。これらのサイレントアラートを保持する場合は、そのデータを新しい PV に移行する必要があります。
オブザーバビリティーストレージを移行するには、次の手順を実行します。
-
MultiClusterObservabilityで、.spec.storageConfig.storageClassフィールドを新しいストレージクラスに設定します。 -
PersistentVolumeClaimを削除しても以前のPersistentVolumesのデータが保持されるようにするために、既存のすべてのPersistentVolumesに移動します。 -
reclaimPolicyを"Retain": `oc patch pv <your-pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'に変更します。 - オプション: データの損失を回避するには、Migrate persistent data to another Storage Class in DG 8 Operator in OCP 4 を参照してください。
次の
StatefulSetの場合、StatefulSetとPersistentVolumeClaimの両方を削除します。-
alertmanager-db-observability-alertmanager-<REPLICA_NUMBER> -
data-observability-thanos-<COMPONENT_NAME> -
data-observability-thanos-receive-default -
data-observability-thanos-store-shard -
重要: 新しい
StatefulSetを作成するには、MultiClusterObservabilityOperator Pod を削除してから再作成する必要がある場合があります。
-
-
同じ名前で正しい
StorageClassを使用して新しいPersistentVolumeClaimを再作成します。 -
古い
PersistentVolumeを参照する新しいPersistentVolumeClaimを作成します。 -
新しい
StatefulSetとPersistentVolumesが、選択した新しいStorageClassを使用していることを確認します。
1.6.9. アラートの抑制 リンクのコピーリンクがクリップボードにコピーされました!
重大度の低い Red Hat Advanced Cluster Management アラートをクラスター全体でグローバルに抑制します。アラートを抑制するには、open-cluster-management-observability namespace の alertmanager-config で抑制ルールを定義します。
抑制ルールは、既存のマッチャーの別のセットと一致する一連のパラメーター一致がある場合にアラートをミュートします。ルールを有効にするには、ターゲットアラートとソースアラートの両方で、equal リスト内のラベル名のラベル値が同じである必要があります。inhibit_rules は次のようになります。
global:
resolve_timeout: 1h
inhibit_rules:
- equal:
- namespace
source_match:
severity: critical
target_match_re:
severity: warning|info
- 1 1
inhibit_rulesパラメーターセクションは、同じ namespace のアラートを検索するために定義されています。criticalアラートが namespace 内で発生し、その namespace に重大度レベルがwarningまたはinfoの他のアラートがある場合は、criticalアラートのみが Alertmanager レシーバーにルーティングされます。一致するものがあった場合、次のアラートが表示される場合があります。ALERTS{alertname="foo", namespace="ns-1", severity="critical"} ALERTS{alertname="foo", namespace="ns-1", severity="warning"}- 2 2
source_matchパラメーターとtarget_match_reパラメーターの値が一致しない場合、アラートはレシーバーにルーティングされます。ALERTS{alertname="foo", namespace="ns-1", severity="critical"} ALERTS{alertname="foo", namespace="ns-2", severity="warning"}- Red Hat Advanced Cluster Management で抑制されたアラートを表示するには、次のコマンドを入力します。
amtool alert --alertmanager.url="http://localhost:9093" --inhibited
1.6.10. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 詳細は、オブザーバビリティーの高度な設定 を参照してください。
- オブザーバビリティーに関するその他のトピックは、オブザーバビリティーサービス を参照してください。
1.7. RightSizingRecommendation ガイド リンクのコピーリンクがクリップボードにコピーされました!
RightSizingRecommendation 機能は、リアルタイムの CPU とメモリーの使用率を設定したリソース設定と比較し、namespace とクラスターレベルでワークロードを最適化するためのガイドを提供します。
RightSizingRecommendation により、マネージドクラスター全体で過剰にプロビジョニングされたリソースや十分に活用されていないリソースを特定し、インフラストラクチャーのより効率的な使用、コストの削減、ワークロード全体でのパフォーマンス向上を実現できます。
オブザーバビリティーサービスを有効にすると、namespace と仮想マシンに対して RightSizingRecommendation 機能がデフォルトで有効になります。RightSizingRecommendation に関する推奨事項オプションの説明を以下に示します。
- Namespace right-sizing
- Pod の CPU 使用量またはメモリー使用量に基づいて、namespace およびクラスターレベルでワークロードを最適化します。
- Virtualization right-sizing
- 仮想マシンの CPU 使用量またはメモリー使用量に基づいて、仮想マシンレベルおよびクラスターレベルでワークロードを最適化します。
注記:
- Prometheus ルールはクラスター ID ではなくクラスター名に基づいています。
- CPU とメモリーの要求、使用率、ガイドのメトリクスには、選択した最後の集計日数に基づいて最大値が表示されます。
-
履歴データポイントはバックフィルされません。
RightSizingRecommendation機能をインストールした後は、より長い集計期間を調査するまでしばらく待つ必要があります。 -
RightSizingRecommendation機能を有効にした後、ダッシュボードにデータが表示されるまで約 30 分かかる場合があります。Thanos によるメトリクスの収集と集計が遅延の原因です。
RightSizingRecommendation 仕様を使用してワークロードを最適化する方法は、以下のトピックを参照してください。
1.7.1. namespace の RightSizingRecommendation を使用したワークロードの最適化 リンクのコピーリンクがクリップボードにコピーされました!
RightSizingRecommendation を実装すると、設定したリソース設定とリアルタイムの CPU およびメモリー使用量との比較を表示できます。オブザーバビリティーサービスを有効にすると、namespace の RightSizingRecommendation 機能がデフォルトで有効になります。ハブクラスター上の MultiClusterObservability カスタムリソースを編集することで、この機能を無効にできます。
RightSizingRecommendation 機能は、以下のリソースを使用します。
rs-namespace-configConfigMap-
配置と
PrometheusRuleの設定を保存します。 rs-prom-rules-policyPolicy- リソースの使用状況を評価する Prometheus ルールが含まれています。
rs-placementPlacement- ラベルセレクターに基づいてターゲットクラスターを決定します。
rs-policyset-bindingPlacementBinding- ポリシーと配置を結合します。
必要なアクセス権限: 編集
前提条件
-
ハブクラスターで
MultiClusterObservabilityOperator が有効になっている。オブザーバビリティーを有効にする方法は、オブザーバビリティーサービスの有効化 を参照してください。
1.7.1.1. namespace の RightSizingRecommendation を無効にする リンクのコピーリンクがクリップボードにコピーされました!
namespace の RightSizingRecommendation を無効にするには、以下の手順を実行してください。
observabilityインスタンスの設定を開きます。以下のコマンドを実行します。oc edit multiclusterobservability observabilityMultiClusterObservabilityカスタムリソースのspecセクションに次の行を追加します。apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: capabilities: platform: analytics: namespaceRightSizingRecommendation: enabled: false . . .-
namespace の
RightSizingRecommendationを有効にするには、namespaceRightSizingRecommendation.enabled:をtrueに設定します。 -
Grafana ボードから
RightSizingRecommendationガイドを表示するには、RightSizing Recommendation > ACM Right-Sizing Namespace を選択します。 - Grafana で集計データを表示するには、ドロップダウン矢印をクリックしてダッシュボードを展開または折りたたみます。たとえば、ダッシュボードの名前をクリックしてメモリーデータを展開します。
1.7.2. namespace の RightSizingRecommendation の設定 リンクのコピーリンクがクリップボードにコピーされました!
RightSizingRecommendation をカスタマイズして、namespace の CPU およびメモリーリソースを最適化します。rs-namespace-config ConfigMap リソースを編集します。
必要なアクセス権限: 編集
前提条件
-
RightSizingRecommendation仕様を有効化する。詳細は、namespace の RightSizingRecommendation ガイドを使用したワークロードの最適化 を参照してください。
以下の手順を実行します。
rs-namespace-configConfigMapリソースの配置を設定します。environment=prodのラベルが指定されたクラスターにのみポリシーが適用される次の例を参照してください。placementConfiguration: | spec: . . . predicates: - requiredClusterSelector: labelSelector: matchLabels: environment: prod . . .以下のいずれかのステップで変更を加えて、
PrometheusRuleリソースを設定してください。-
namespaceFilterCriteria仕様で、含める、または除外する namespace を定義します。 -
inclusionCriteria仕様に含める namespace のリストを追加します。 除外する namespace のリストを
exclusionCriteria仕様に追加します。注:
inclusionCriteriaとexclusionCriteriaを同時に使用できません。CPU とメモリーの使用率を調整するには、使用率を定義します。
以下の例では、
inclusionCriteriaの仕様にprodが含まれており、exclusionCriteriaにopenshiftが除外されています。
. . . prometheusRuleConfig: | namespaceFilterCriteria: inclusionCriteria: - prod.* exclusionCriteria: - openshift.* labelFilterCriteria: - labelName: label_kubernetes_io_metadata_name inclusionCriteria: - prod - staging exclusionCriteria: - kube.* recommendationPercentage: 120 . . .-
namespace バインディングを設定します。デフォルトでは、
RightSizingRecommendation機能は、ポリシーをクラスターにバインドするためにopen-cluster-management-global-setnamespace を使用します。生成されたポリシーを別の namespace およびクラスターセットにバインドするには、namespace を
namespaceBinding仕様に追加します。重要: 変更を適用する前に、ターゲット namespace が有効なClusterSetに含まれていること確認してください。有効なバインディングがない場合、生成したポリシーはどのクラスターにも適用されない可能性があります。次の例を参照してください。
<your-namespace-binding>namespace はnamespaceBindingの値です。
apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: . . . capabilities: platform: analytics: namespaceRightSizingRecommendation: enabled: true namespaceBinding: <your-namespace-binding> . . .
1.7.3. 仮想化ワークロードに対する RightSizingRecommendation の無効化 リンクのコピーリンクがクリップボードにコピーされました!
仮想化に RightSizingRecommendation を使用すると、マネージドクラスター全体で過剰にプロビジョニングされている、または十分に活用されていない仮想マシンリソースを特定できます。オブザーバビリティーサービスを有効にすると、RightSizingRecommendation 機能がデフォルトで有効になります。ハブクラスター上の MultiClusterObservability カスタムリソースを編集することで、この機能を無効にできます。
RightSizingRecommendation 機能は、以下のリソースを使用します。
rs-virt-configConfigMap-
配置と
PrometheusRule用の仮想マシン設定を保存します。 rs-virt-prom-rules-policyPolicy- リソースの使用状況を評価する Prometheus ルールが含まれています。
rs-virt-placementPlacement- ラベルセレクターに基づいてターゲットクラスターを決定します。
rs-virt-policyset-bindingPlacementBinding- ポリシーと配置を結合します。
必要なアクセス権限: 編集
前提条件
-
ハブクラスターで
MultiClusterObservabilityOperator が有効になっている。オブザーバビリティーを有効にする方法は、オブザーバビリティーサービスの有効化 を参照してください。 - 関連するマネージドクラスターまたはハブクラスターに、Red Hat OpenShift Virtualization Operator がインストールされている。詳細は、OpenShift 仮想化のインストール を参照してください。
手順
仮想マシンの right-sizing を無効にするには、以下の手順を実行してください。
observabilityインスタンスの設定を開きます。以下のコマンドを実行します。oc edit multiclusterobservability observabilityMultiClusterObservabilityカスタムリソースのspecセクションに次の行を追加します。apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: capabilities: platform: analytics: virtualizationRightSizingRecommendation: enabled: false . . .-
仮想マシンで
RightSizingRecommendationを有効にするには、virtualizationRightSizingRecommendation.enabled:パラメーターをtrueに設定します。 Grafana ダッシュボードから
RightSizingRecommendationガイドを表示するには、RightSizing Recommendation > ACM Right-Sizing OpenShift Virtualization を選択します。注: クラスターレベルの CPU およびメモリー情報が表示されます。
- 仮想マシンの CPU とメモリーの詳細、および過去のリソース使用状況を表示するには、仮想マシンの名前を選択してください。
1.7.4. 仮想化のための RightSizingRecommendation の設定 リンクのコピーリンクがクリップボードにコピーされました!
RightSizingRecommendation 仕様をカスタマイズすることで、仮想マシンの CPU およびメモリーリソースを最適化できます。MultiClusterObservability リソースを編集します。
前提条件
-
RightSizingRecommendation仕様を有効化する。詳細は、仮想化ワークロードに対する RightSizingRecommendation の有効化 を参照してください。
手順
以下の手順を実行します。
rs-virt-configConfigMapリソースを編集し、placementConfigurationパラメーターを定義することで、仮想マシンの配置を設定します。次の例に示すように、環境ラベルがenvironment=prodのクラスターにのみポリシーが適用されるように配置をカスタマイズします。placementConfiguration: | spec: . . . predicates: - requiredClusterSelector: labelSelector: matchLabels: environment: prod . . .以下のいずれかの手順を実行して、仮想マシンに
PrometheusRuleを設定してください。namespaceFilterCriteria仕様で、含める、または除外する namespace を定義します。-
inclusionCriteria仕様に含める namespace のリストを追加します。 除外する namespace のリストを
exclusionCriteria仕様に追加します。注:
inclusionCriteriaとexclusionCriteriaを同時に使用できません。- CPU とメモリーの使用率を調整するには、使用率を定義します。
以下の例では、
inclusionCriteriaの仕様にprodが含まれており、exclusionCriteriaにopenshiftが除外されています。-
. . . prometheusRuleConfig: | namespaceFilterCriteria: inclusionCriteria: - prod.* exclusionCriteria: - openshift.* labelFilterCriteria: - labelName: label_kubernetes_io_metadata_name inclusionCriteria: - prod - staging exclusionCriteria: - kube.* recommendationPercentage: 120 . . .namespace バインディングを設定します。デフォルトでは、
RightSizingRecommendation機能は、ポリシーをクラスターにバインドするためにopen-cluster-management-global-setnamespace を使用します。生成されたポリシーを別の namespace とクラスターセットにバインドするには、
namespaceBindingプロパティーを使用します。重要: 変更を適用する前に、ターゲット namespace が有効なClusterSetに含まれていること確認してください。有効なバインディングがない場合、生成したポリシーはどのクラスターにも適用されない可能性があります。次の例を参照してください。
<your-namespace-binding>namespace はnamespaceBindingの値です。
apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: . . . capabilities: platform: analytics: virtualizationRightSizingRecommendation: enabled: true namespaceBinding: <your-namespace-binding> . . .重要: 変更を適用する前に、ターゲット namespace が有効な
ClusterSetに含まれていること確認してください。有効なバインディングがない場合、生成したポリシーはどのクラスターにも適用されない可能性があります。
1.8. オブザーバビリティーインスタンスのサイズ リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーインスタンスサイズ機能は、Red Hat Advanced Cluster Management for Kubernetes オブザーバビリティーのスケーリングプロセスを簡素化します。
サポートされているオブザーバビリティーインスタンスのサイズと要件については、以下の表を参照してください。
| インスタンスサイズ | 稼働中の時系列データの最大管理数 | CPU ユニット | メモリー |
|---|---|---|---|
| Default | 20 万未満 | 3 | 12 GiB |
| Minimal | 100 万未満 | 16 | 25 GiB |
| Small | 100 万 | 32 | 72 GiB |
| Medium | 500 万 | 55 | 137 GiB |
| Large | 1,000 万 | 103 | 293 GiB |
| Xlarge | 2000 万 | 163 | 590 GiB |
| 2xlarge | 5000 万 | 222 | 1019 GiB |
| 4xlarge | 1 億 | 337 | 2158 GiB |
- 稼働中の時系列データ
-
データを受信する、メトリクス名とその関連ラベルの固有の組み合わせ。Prometheus ベースのシステムでは、過去 5 分以内に新しいデータポイントを受信した場合、そのデータ系列は
activeであるとみなされます。
稼働中の時系列データの総数を調べるには、ハブクラスターの Observe > Metrics ページで、次の PromQL クエリーを使用します。
max(acm_prometheus_tsdb_head_series)
注: このクエリーは、メモリー内のシリーズの総数を返します。出力には、最近データ受信が停止したものの、まだ長期保存場所に移動されていないデータ系列が含まれる可能性があります。
1.9. オブザーバビリティーインスタンスサイズの変更 リンクのコピーリンクがクリップボードにコピーされました!
オブザーバビリティーインスタンスサイズ機能は、Red Hat Advanced Cluster Management for Kubernetes オブザーバビリティーのスケーリングプロセスを簡素化します。インスタンスサイズを使用すると、オブザーバビリティー API および Thanos コンポーネントを個別にスケーリングする代わりに、事前に設定された設定に合わせてスケーリングできます。
インスタンスサイズ機能はオプションです。
必要なアクセス権: クラスター管理者
前提条件
- ハブクラスターに、使用するインスタンスサイズに見合った十分な CPU とメモリーのリソースがある。詳細は、オブザーバビリティーインスタンスのサイズ を参照してください。
-
alertmanager、thanos-compactor、thanos-receiveなどのステートフルコンポーネントに永続ボリュームを正しく設定する。
手順
サイズを適用するには、ハブクラスター上の MultiClusterObservability カスタムリソースを編集します。以下の手順を完了してください。
MultiClusterObservabilityカスタムリソースのspec.instanceSizeフィールドに、使用するインスタンスサイズを追加してください。以下の YAML 例を参照してください。apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: instanceSize: <size_value>-
有効な
spec.instanceSizeオプションのリストは、オブザーバビリティーインスタンスサイズ を参照してください。
-
有効な
検証
新しいサイズを適用した後、コンソールで open-cluster-management-observability namespace 内のオブザーバビリティー Pod の状態とインスタンスサイズを確認できます。
重要な注意事項:
-
MultiClusterObservabilityカスタムリソースのAdvancedConfigセクションでレプリカ数またはリソース制限を手動で定義した場合、既存のAdvancedConfig設定が常にinstanceSize設定をオーバーライドします。 - デフォルトサイズは、5 つのクラスター環境における標準的な Red Hat Advanced Cluster Management のインストール要件である 2701mCPU と 11972Mi メモリーに合致しています。クラスターのサイズ、ノード数、負荷、その他の要因によって変動するため、時系列データの数は概算値です。
1.10. Multicluster observability アドオン リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターからメトリクスを収集する代替手段として、マルチクラスターオブザーバビリティーアドオンを使用してください。プラットフォームワークロードとユーザーワークロードの両方について、名前、マッチング条件、記録ルールを使用してメトリクス収集を設定します。マルチクラスターオブザーバビリティーアドオンは、Red Hat OpenShift Cluster Observabililty Operator の Prometheus Operator と Prometheus Agent を使用して、メトリクスをハブクラスターに統合、ダウンサンプリング、リモート書き込みします。マルチクラスターオブザーバビリティーアドオンを有効にすると、マネージドクラスターとハブクラスター間のネットワーク分断時に発生するデータ損失を軽減できます。デフォルトでは、マルチクラスターオブザーバビリティーアドオンは無効になっています。
1.10.1. マネージドクラスターのワークロード リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスター監視ワークロードは、Cluster Observability Operator の Prometheus Operator と Prometheus Agent を使用します。マルチクラスターオブザーバビリティーアドオンは、マネージドクラスター上の Red Hat OpenShift Cluster Observabililty Operator に含まれる既存の obo-prometheus-operator を使用して、Prometheus カスタムリソースを調整します。obo-prometheus-operator が存在しない場合、マルチクラスターオブザーバビリティーアドオンは、設定済みの agentInstallNamespace 内に obo-prometheus-operator をデプロイします。
マルチクラスターオブザーバビリティーアドオンと Cluster Observability Operator はどちらも、ScrapeConfig および PrometheusAgent リソースに対して monitoring.rhobs API グループを共通して使用します。
OpenShift Container Platform クラスターではないその他のマネージドクラスターの場合、以下のリソースがデプロイされます。
- Node exporter
- Kube state metrics
- Prometheus サーバー
注記: OpenShift Container Platform 以外のクラスターの場合、他のマネージドクラスターのクラスター ID は、マネージドクラスターの id.k8s.io クレームを使用しますが、現在のエンドポイント Operator はクラスター名を使用します。
1.10.2. 設定可能な API リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのリソース設定を指定して、マネージドクラスターの監視動作を制御できます。プラットフォームの監視と機能的なダッシュボードを実現するために、PrometheusAgent、ScrapeConfig、PrometheusRule のデフォルトのリソースが自動的に作成されます。各 API の説明は以下のとおりです。
PrometheusAgent-
PrometheusAgent(remote-write ワークフロー向けにリソースを最適化した Prometheus インスタンス) のデプロイメントを定義します。remote-write 対象、スクレイピング間隔、およびリソース制限を設定します。メトリクス収集ツールとしてPrometheusAgentリソースを使用してください。 ScrapeConfig-
指定された
targetから連携されるメトリクスのリスト。job_name、metrics_path、params、relabel_configsの仕様を設定します。ユーザーワークロードのtarget設定をオーバーライドできます。 PrometheusRule- 各クラスターに適用できるアラートおよび記録ルールの定義をサポートします。評価間隔とアラートアノテーションまたはラベルを設定したルールグループをサポートします。
ClusterManagementAddOnマネージドクラスターをデプロイするための配置と設定。設定には、マネージドクラスターへのマルチクラスターオブザーバビリティーアドオンのデプロイをカスタマイズするための
AddonDeploymentConfigリソースが含まれます。この設定を使用すると、マネージドクラスター上のノード配置をカスタマイズしたり、Prometheus Agent Pod がデプロイされるインストール namespace を選択したりできます。注: すべての配置に単一の
AddonDeploymentConfigリソースが使用されます。
1.10.3. デフォルトのプラットフォームメトリクス リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、マルチクラスターオブザーバビリティーアドオンは、マネージドクラスターからプラットフォームメトリクスを収集します。ScrapeConfig リソースのセットは、自動的に生成され、すべてのマネージドクラスターにデプロイされます。ClusterManagementAddOn リソース内で参照するすべての配置には、ScrapeConfig 設定が自動的に適用されます。プラットフォームワークロードダッシュボードには、デフォルトの ScrapeConfig リソースを使用します。
以下のデフォルトプラットフォームメトリクスが収集されます。
-
platform-metrics-hcp。Hosted Control Plane プラットフォームに固有。 -
platform-metrics-virtualization。Red Hat OpenShift Virtualization プラットフォームに固有。 -
platform-metrics-alerts。すべてのプラットフォームにわたるカスタムアラートルールメトリクスに固有。 -
platform-metrics-default。すべてのプラットフォームに共通するデフォルトのメトリクスに固有。
1.10.4. マルチクラスターオブザーバビリティーアドオンの健全性ステータス リンクのコピーリンクがクリップボードにコピーされました!
マルチクラスターオブザーバビリティーアドオンの健全性ステータスは、ManagedClusterAddOn リソースを通じて報告されます。OpenShift Container Platform コンソールでは、マネージドクラスターごとに、ManagedClusterResource が Fleet Management ビューに表示されます。一部のリソースがデプロイされていない場合、またはプラットフォームの PrometheusAgent リソースが実行されていない場合、ステータスは低下します。
注: OpenShift Container Platform のバージョン 4.20 より前のバージョンでは、Cluster スイッチャーから All Clusters を選択してください。
以下の警告ルールは、すべてのマネージドクラスターにプッシュされます。
MetricsCollectorNotIngestingSamples-
PrometheusAgentリソースがメトリクスをフェデレーションしていない場合にアラートを表示します。 MetricsCollectorRemoteWriteFailures-
マネージドクラスターの
PrometheusAgentリソースにおける remote-write リクエストの失敗率が高い場合にアラートを発信します。 MetricsCollectorRemoteWriteBehind-
PrometheusAgentリソースの remote-write が遅すぎる場合に警告を発します。
1.10.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
1.10.6. マルチクラスターオブザーバビリティーアドオンの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターでマルチクラスターオブザーバビリティーアドオンを有効にして、プラットフォームとユーザーのワークロードに関するメトリクスを設定してください。プラットフォームワークロードの有効化は必須ですが、ユーザーワークロードの有効化は任意です。
platform と userWorkloads の仕様を有効にすると、MultiClusterObservability Operator は、マネージドクラスターへのメトリクスコレクターのデプロイを停止し、open-cluster-management-observability namespace に multicluster-observability-addon-manager をデプロイします。multicluster-observability-addon-manager は、ハブクラスターで定義された PrometheusAgent リソースに基づいて、新しいメトリクスコレクターをデプロイします。
必要なアクセス権: クラスター管理者
前提条件
- ハブクラスターでオブザーバビリティーサービスを有効にする。詳細は、オブザーバビリティーサービスの有効化 を参照してください。
- Red Hat OpenShift Cluster Observability Operator をインストールする。詳細は、Cluster Observability Operator の概要 を参照してください。
手順
ハブクラスターでマルチクラスターオブザーバビリティーアドオンを有効にするには、以下の手順を実行してください。
プラットフォーム監視とユーザーワークロード監視を有効にするには、
MultiClusterObservabilityリソースにplatformとuserWorkloadsの仕様を追加します。以下のコマンドを実行します。oc patch mco observability -n open-cluster-management-observability --type=merge -p '{"spec":{"capabilities":{"platform":{"metrics":{"default":{"enabled": true}}},"userWorkloads":{"metrics":{"default":{"enabled": true}}}}}}'MultiClusterObservabilityリソースは、以下のファイル例のようになる場合があります。apiVersion: observability.open-cluster-management.io/v1beta2 kind: MultiClusterObservability metadata: name: observability spec: capabilities: platform: metrics: default: enabled: true userWorkloads: metrics: default: enabled: trueマルチクラスターオブザーバビリティーアドオンのデフォルト設定リソースが作成されていることを確認するには、
multicluster-observability-addonClusterManagementAddonリソースを開きます。以下のコマンドを実行します。oc get prometheusagents -n open-cluster-management-observabilityデフォルト設定が配置に追加されていることを確認してください。以下のコマンドを実行します。
oc get cma multicluster-observability-addon -o yaml | yq '.spec.installStrategy.placements'
1.10.7. マルチクラスターオブザーバビリティーアドオンの API の設定 リンクのコピーリンクがクリップボードにコピーされました!
マルチクラスターオブザーバビリティーアドオンのデフォルトのメトリクス固有 API を設定します。ClusterManagementAddon リソースで新しい配置を参照すると、multicluster-observability-addon-manager は自動的に特定のデフォルトの PrometheusAgent リソースを作成します。multicluster-observability-addon-manager は関連する Placement 設定に PrometheusAgent リソース参照を追加します。
配置によって作成される PrometheusAgent リソースは 1 つですが、デフォルトの ScrapeConfigs と PrometheusRules はすべての配置で共通です。PrometheusAgent、ScrapeConfigs、および PrometheusRules リソースは、マルチクラスターオブザーバビリティーアドオンのデフォルトの設定リソースです。
必要なアクセス権: クラスター管理者
前提条件
- マルチクラスターオブザーバビリティーアドオンがインストール、有効化されている。詳細は、マルチクラスターオブザーバビリティーアドオンの有効化 を参照してください。
手順
マルチクラスターオブザーバビリティーアドオンの API を設定するには、以下の手順を実行してください。
-
オプション:
scrapeIntervalパラメーターを変更して、PrometheusAgentリソースのデフォルトのスクレイピング間隔をオーバーライドします。デフォルト値は300 秒です。scrapeConfigリソースのscrapeIntervalをオーバーライドすることもできます。 ScrapeConfigリソースを設定して、マネージドクラスターの Prometheus から独立したフェデレーションを行うためのメトリクスセットを定義します。以下の手順を実行します。-
jobNameパラメーターには、参照するジョブの名前を追加してください。 -
Prometheus でメトリクスを統合させるには、
metricsPathパラメーターに/federateURL パスを追加します。 -
収集するメトリクス名とラベルを追加します。
ScrapeConfigリソースがupメトリクスを収集する以下の YAML ファイルの例を参照してください。
apiVersion: monitoring.rhobs/v1alpha1 kind: ScrapeConfig metadata: name: some-metrics-to-collect namespace: open-cluster-management-observability labels: - app.kubernetes.io/component: <platform-metrics-collector> or <user-workload-metrics-collector> spec: jobName: some-job-name metricsPath: /federate params: match[]: - '{__name__="up"}'-
PrometheusRuleリソースを設定して、ハブクラスターで収集するメトリクスのカーディナリティーを制限します。以下の手順を実行します。- マネージドクラスターにおけるプラットフォームおよびユーザーワークロード監視のためのアラートおよび記録ルールを定義します。
-
PrometheusRuleリソースでユーザーワークロードをターゲットにするには、observability.open-cluster-management.io/target-namespaceアノテーションを追加して、リソースをデプロイする namespace を定義します。
注記:
-
PrometheusRuleリソースでobservability.open-cluster-management.io/target-namespaceが設定されていない場合、PrometheusRuleリソースはデフォルトのインストール namespace にデプロイされます。openshift.io/cluster-monitoringがtrueに設定されている場合、PrometheusRuleリソースは OpenShift Container Platform のユーザーワークロードモニタリングスタックで監視されません。 -
PrometheusRuleリソースには、必ずmonitoring.coreos.comグループを使用してください。
AddonDeploymentConfigリソースを設定して、マネージドクラスターへのマルチクラスターオブザーバビリティーアドオンのデプロイをカスタマイズします。注:AddonDeploymentConfigリソースの値は、他のリソースの直接的な変更をオーバーライドします。以下の手順を実行します。-
agentInstallNamespaceパラメーターで、PrometheusAgentリソースのインストール先の namespace を定義します。デフォルトの namespace はopen-cluster-management-agent-addonです。 -
関連する
nodeSelectorおよびtolerationsパラメーターとともに、nodePlacement仕様を追加します。 -
httpProxyとnoProxyの設定を更新して、proxyConfigの仕様を編集します。
-
1.10.8. マルチクラスターオブザーバビリティーアドオンへのカスタムメトリクスの追加 リンクのコピーリンクがクリップボードにコピーされました!
ScrapeConfig リソースを設定して、マネージドクラスターから収集する独自のカスタムメトリクスを追加できます。ScrapeConfig は、対応するマネージドクラスターにデプロイするために、ClusterManagementAddOn リソースの Placement 設定に追加する必要があります。各マネージドクラスター上の Prometheus Operator は、新しい ScrapeConfig リソースを PrometheusAgent リソースに追加します。
必要なアクセス権限: クラスター管理者
前提条件
- マルチクラスターオブザーバビリティーアドオンがインストール、有効化されている。詳細は、マルチクラスターオブザーバビリティーアドオンの有効化 を参照してください。
マルチクラスターオブザーバビリティーアドオンにカスタムメトリクスを追加するには、以下の手順を実行してください。
-
open-cluster-management-observabilitynamespace に、必須パラメーターjobName、metricsPath、およびparamsの値を含む新しいScrapeConfigリソースを作成します。 app.kubernetes.io/componentパラメーターに適切なラベルを追加して、メトリクスがプラットフォーム監視用またはユーザーワークロード監視用かを指定します。platform-metrics-collectorまたはuser-workload-metrics-collectorのラベル値のいずれかを使用してください。注記:
platform-metrics-collectorラベルを使用すると、マルチクラスターオブザーバビリティーアドオンは、OpenShift Container Platform で管理されているクラスターのプラットフォーム Prometheus からのフェデレーションを有効にするために、scrapeClassおよびtargetsパラメーターを自動的に設定します。scrapeClassとtargetsのパラメーターは、必要な値を追加することでオーバーライドできます。-
オプション:
user-workload-metrics-collectorScrapeConfigリソースのscrapeClassとstaticConfigsの仕様を手動で設定します。 リソースをデプロイする
ClusterManagementAddOnリソースの配置場所に、ScrapeConfigリソースへの参照を追加します。注:
ScrapeConfigリソースは、作成後にのみ参照するようにしてください。そうしないと、リソースが存在しないため、アドオンのステータスがDeployingステータスに更新されます。ScrapeConfigリソースは、以下の YAML ファイルのような形式になる可能性があります。apiVersion: monitoring.rhobs/v1alpha1 kind: ScrapeConfig metadata: name: add-custom-metrics namespace: open-cluster-management-observability labels: - app.kubernetes.io/component: platform-metrics-collector spec: jobName: some-job-name metricsPath: /federate params: match[]: - '{__name__="up"}'
1.10.9. Cluster Observability Operator からのユーザーワークロードの統合 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスター上の Red Hat OpenShift Cluster Observability Operator から、ユーザーワークロードをフェデレーションします。デフォルトでは、ユーザーワークロードメトリクスは、OpenShift Container Platform クラスター上の Prometheus user-workload から統合されます。
必要なアクセス権: クラスター管理者
前提条件
- マネージドクラスターでユーザーワークロード監視が有効化されている。
-
ユーザーのワークロード監視は、
MultiClusterObservabilityカスタムリソースで有効化されている。 -
app.kubernetes.io/component: <user-workload-metrics-collector>ラベルを持つScrapeConfigリソースが作成されている。 -
ScrapeConfigリソースが、ターゲット配置のClusterManagementAddOnの設定リストで参照される。
手順
マネージドクラスター上の Cluster Observability Operator からユーザーワークロードをフェデレーションするには、以下の手順を実行してください。
Cluster Observability Operator
MonitoringStackリソースのエンドポイントを追加して、ScrapeConfigリソースを更新します。リソースは、以下の YAML ファイルのようになります。apiVersion: monitoring.coreos.com/v1alpha1 kind: ScrapeConfig spec: scrapeClass: “” scheme: HTTP staticConfigs: - targets: - my-monitoring-stack.my-monitoring-ns.svc:9090-
Prometheus サーバーでプロキシーを使用する場合は、
ScrapeConfigリソースを変更して TLS 設定を含めてください。ユーザーワークロードのPrometheusAgentリソースに、対応するscrapeClass仕様を作成します。次に、ScrapeConfigリソース内でPrometheusAgentリソースを参照します。
1.10.10. マルチクラスターオブザーバビリティーアドオンのデフォルトメトリクスのラベル変更 リンクのコピーリンクがクリップボードにコピーされました!
設定のラベルを変更して、収集しているデフォルトのメトリクスを変更または削除できます。ScrapeConfig リソースごとに設定のラベルを変更するか、PrometheusAgent リソースの remoteWrite 設定でグローバルにラベルを変更します。
必要なアクセス権: クラスター管理者
前提条件
- マルチクラスターオブザーバビリティーアドオンがインストール、有効化されている。詳細は、マルチクラスターオブザーバビリティーアドオンの有効化 を参照してください。
手順
マルチクラスターオブザーバビリティーアドオンのメトリクスのラベルを変更してデフォルトのメトリクスを削除するには、次の手順を実行します。
Watchdogアラートメトリクスを削除するには、PrometheusAgentリソースのremoteWrite設定にwriteRelabelConfigs仕様を追加します。メトリクスの削除は、フェデレーションが完了した後に行われます。PrometheusAgentリソースは、以下の YAML ファイルのような形式になっている可能性があります。apiVersion: monitoring.rhobs/v1alpha1 kind: ScrapeConfig metadata: name: platform-metrics-alerts namespace: open-cluster-management-observability spec: jobName: alerts metricRelabelings: - action: labeldrop regex: managed_cluster|id - action: drop regex: ^Watchdog$ sourceLabels: - alertname metricsPath: /federate params: 'match[]': - '{__name__="ALERTS"}' scheme: HTTPS scrapeClass: not-configurable staticConfigs: - targets: - not-configurable
1.10.11. マルチクラスターオブザーバビリティーアドオンのメトリクスの外部エンドポイントに対するエクスポート リンクのコピーリンクがクリップボードにコピーされました!
外部メトリクスエンドポイントを設定するには、カスタムの remoteWrite 仕様を PrometheusAgents リソースに追加します。remoteWrite 仕様を設定すると、マネージドクラスターはメトリクスを外部エンドポイントに直接送信します。
デフォルトのメトリクスのラベルを変更して、関連するマルチクラスターオブザーバビリティーアドオンの設定を更新します。マネージドクラスターからメトリクスをエクスポートして、マネージドクラスターとハブクラスター間のネットワーク分断発生時における回復力を最大 2 時間向上させます。
必要なアクセス権: クラスター管理者
前提条件
- マルチクラスターオブザーバビリティーアドオンがインストール、有効化されている。詳細は、マルチクラスターオブザーバビリティーアドオンの有効化 を参照してください。
手順
PrometheusAgent リソースのメトリクスを外部エンドポイントにエクスポートするには、以下の手順を実行してください。
-
open-cluster-management-observabilitynamespace 内に TLSSecretconfig map を作成します。 -
PrometheusAgentリソースのsecrets仕様に、シークレット名を追加します。 PrometheusAgentリソースにremoteWrite仕様を追加します。PrometheusAgentのリソースは、以下のような YAML ファイルのようになります。ここで、upメトリクスはカスタムエンドポイントにエクスポートされます。apiVersion: monitoring.rhobs/v1alpha1 kind: PrometheusAgent metadata: name: mcoa-default-platform-metrics-collector-global namespace: open-cluster-management-observability spec: secrets: - custom-endpoint-ca - custom-endpoint-cert remoteWrite: - name: custom-endpoint tlsConfig: caFile: /etc/prometheus/secrets/custom-endpoint-ca/ca.crt certFile: /etc/prometheus/secrets/custom-endpoint-cert/tls.crt keyFile: /etc/prometheus/secrets/custom-endpoint-cert/tls.key url: 'https://my-custom-remote-write-endpoint.io/api/v1/receive' writeRelabelConfigs: - action: keep regex: ^up$ sourceLabels: - __name__ - name: acm-observability ...
1.10.12. マルチクラスターオブザーバビリティーアドオンのアラート転送 リンクのコピーリンクがクリップボードにコピーされました!
マルチクラスターオブザーバビリティーのアラート転送を設定して、マネージドクラスターからオブザーバビリティースタックのアラートマネージャーにアラートを送信するようにします。デフォルトでは、マルチクラスターオブザーバビリティーアドオンは、マネージドクラスター上の Prometheus からのアラートをハブクラスターの Alertmanager に送信するように設定されていません。
マルチクラスターオブザーバビリティーアドオンを使用する際にアラート転送を設定するためのポリシーを作成します。
必要なアクセス権: クラスター管理者
前提条件
- マルチクラスターオブザーバビリティーアドオンが有効化されている。詳細は、マルチクラスターオブザーバビリティーアドオンの有効化 を参照してください。
手順
マルチクラスターオブザーバビリティーアドオンのアラート転送を設定するポリシーを作成するには、以下の手順を実行してください。
プラットフォームメトリクスのアラート転送を設定するには、
mcoa-alert-forward-platform.yamlという名前の YAML ファイルを作成します。ハブクラスターのベースドメインを
$hubBaseDomainパラメーターに追加してください。config map のadditionalAlertmanagerConfigs仕様にカスタム変更を加える場合は、ポリシーを適用する前に、必ず変更内容をポリシーに直接追加してください。以下の例を参照してください。
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: mcoa-alert-forward-platform namespace: open-cluster-management-global-set spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: mcoa-alert-forward-platform spec: namespaceSelector: exclude: - kube-* include: - default object-templates-raw: | {{ $hubBaseDomain:= "INPUT_BASE_DOMAIN" }} {{ $hubName := (split "." $hubBaseDomain)._0 }} {{- $cmo := (lookup "v1" "ConfigMap" "openshift-monitoring" "cluster-monitoring-config") }} {{- $cy := dict }} {{- if and $cmo $cmo.data }} {{- $cy = (index $cmo "data" "config.yaml") | fromYaml }} {{- end }} {{- $mangedConfig := dict }} {{- $pm := ` prometheusK8s: additionalAlertmanagerConfigs: - apiVersion: v2 bearerToken: key: token name: observability-alertmanager-accessor-%[1]s scheme: https staticConfigs: - alertmanager-open-cluster-management-observability.apps.%[2]s tlsConfig: ca: key: service-ca.crt name: hub-alertmanager-router-ca-%[1]s insecureSkipVerify: false externalLabels: managed_cluster: %[3]s ` }} {{- $mangedConfig = merge $mangedConfig ((printf $pm $hubName $hubBaseDomain (fromClusterClaim "id.openshift.io"))| fromYaml) }} - complianceType: mustonlyhave objectDefinition: apiVersion: v1 data: config.yaml: | {{ (merge $cy $mangedConfig)| toYaml |autoindent }} kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring recordDiff: InStatus remediationAction: informポリシーを
global配置にバインドするためのPlacementBindingリソースを作成します。以下のサンプルを参照してください。apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: mcoa-alert-forward-platform-placement namespace: open-cluster-management-global-set placementRef: apiGroup: cluster.open-cluster-management.io kind: Placement name: global subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: mcoa-alert-forward-platformポリシーの変更をすべてのマネージドクラスターに適用し、マネージドクラスターからハブクラスターへのアラート転送を有効にするには、
remediationActionパラメーターの値をenforceに変更します。注: 前のポリシーの
remediationActionは、informモードに設定されています。コンソールから、Governance ページにあるポリシーを表示して変更内容を検証してください。ポリシーは、non-compliant として表示されます。YAML ファイルを適用してください。以下のコマンドを実行します。
oc apply -f ./forward-platform-alerts.yaml
注: Red Hat OpenShift Container Platform クラスター以外のマネージドクラスターがある場合は、マネージドクラスターを対象とする適切な
PlacementBindingリソースを作成する必要があります。ユーザーのワークロードメトリクスのアラート転送を設定するには、
mcoa-alert-forward-uwlという名前の YAML ファイルを作成します。ハブクラスターのベースドメインを
$hubBaseDomainパラメーターに追加してください。YAML ファイルは、以下の例のようになります。apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: mcoa-alert-forward-uwl namespace: open-cluster-management-global-set spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: mcoa-alert-forward-uwl spec: namespaceSelector: exclude: - kube-* include: - default object-templates-raw: | {{ $hubBaseDomain:= "INPUT_BASE_DOMAIN" }} {{ $hubName := (split "." $hubBaseDomain)._0 }} {{- $cmo := (lookup "v1" "ConfigMap" "openshift-user-workload-monitoring" "user-workload-monitoring-config") }} {{- $cy := dict }} {{- if and $cmo $cmo.data }} {{- $cy = (index $cmo "data" "config.yaml") | fromYaml }} {{- end }} {{- $mangedConfig := dict }} {{- $pm := ` prometheus: additionalAlertmanagerConfigs: - apiVersion: v2 bearerToken: key: token name: observability-alertmanager-accessor-%[1]s scheme: https staticConfigs: - alertmanager-open-cluster-management-observability.apps.%[2]s tlsConfig: ca: key: service-ca.crt name: hub-alertmanager-router-ca-%[1]s insecureSkipVerify: false externalLabels: managed_cluster: %[3]s ` }} {{- $mangedConfig = merge $mangedConfig ((printf $pm $hubName $hubBaseDomain (fromClusterClaim "id.openshift.io"))| fromYaml) }} - complianceType: mustonlyhave objectDefinition: apiVersion: v1 data: config.yaml: | {{ (merge $cy $mangedConfig )| toYaml |autoindent }} kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring recordDiff: InStatus remediationAction: informポリシーを
global配置にバインドするためのPlacementBindingリソースを作成します。YAML ファイルは、次のサンプルのようになります。apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: mcoa-alert-forward-uwl-placement namespace: open-cluster-management-global-set placementRef: apiGroup: cluster.open-cluster-management.io kind: Placement name: global subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: mcoa-alert-forward-uwl- YAML ファイルを適用してください。以下のコマンドを実行します。
oc apply -f ./forward-uwl-alerts.yaml
第2章 Red Hat Insights でのオブザーバビリティーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Insights は、Red Hat Advanced Cluster Management オブザーバビリティーと統合されており、クラスター内の既存の問題や発生しうる問題を特定できるように有効化されています。Red Hat Insights は、安定性、パフォーマンス、ネットワーク、およびセキュリティーリスクの特定、優先順位付け、および解決に役立ちます。Red Hat OpenShift Container Platform は、Red Hat OpenShift Cluster Manager を使用してクラスターのヘルスモニタリングを提供します。Red Hat OpenShift Cluster Manager は、クラスターのヘルス、使用状況、サイズの情報を匿名で累積して収集します。詳細は、Red Hat Insights の製品ドキュメント を参照してください。
OpenShift クラスターを作成またはインポートすると、マネージドクラスターからの匿名データは自動的に Red Hat に送信されます。この情報を使用してクラスターのヘルス情報を提供する insights を作成します。Red Hat Advanced Cluster Management 管理者は、このヘルス情報を使用して重大度に基づいてアラートを作成できます。
必要なアクセス権限: クラスターの管理者
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Insights が有効になっていることを確認する。詳細は、グローバルクラスタープルシークレットの変更によるリモートヘルスレポートの無効化 を参照してください。
- サポートされているバージョンの OpenShift Container Platform をインストールします。
- Red Hat OpenShift Cluster Manager に登録されているハブクラスターユーザーが、Red Hat OpenShift Cluster Manager で管理されているすべての Red Hat Advanced Cluster Management マネージドクラスターを管理できる。
2.2. Insight PolicyReports の管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes PolicyReports は、insights-client で生成される違反です。PolicyReports は、インシデント管理システムに送信されるアラートの定義および設定に使用されます。違反がある場合には、PolicyReport からのアラートはインシデント管理システムに送信されます。
2.2.1. Insight ポリシーレポートの検索 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスター全体で、違反した特定の insight PolicyReport を検索できます。以下の手順を実行します。
- Red Hat Advanced Cluster Management ハブクラスターにログインします。
- ナビゲーションメニューから Search を選択します。
kind:PolicyReportのクエリーを入力します。注記:
PolicyReport名はクラスターの名前と同じになります。-
インサイトポリシー違反とカテゴリーを使用してクエリーを指定できます。
PolicyReport名を選択すると、関連付けられたクラスターの Details ページにリダイレクトされます。Insights サイドバーが自動的に表示されます。 検索サービスが無効になり、insight を検索する必要がある場合は、ハブクラスターから以下のコマンドを実行します。
oc get policyreport --all-namespaces
2.2.2. コンソールから特定された問題の表示 リンクのコピーリンクがクリップボードにコピーされました!
特定のクラスターで特定された問題を表示できます。以下の手順を実行します。
- Red Hat Advanced Cluster Management クラスターにログインします。
- ナビゲーションメニューから Overview を選択します。
-
Cluster issues の概要カードを確認してください。重大度リンクを選択すると、その重大度に関連付けられている
PolicyReportsが表示されます。クラスターの問題の詳細と重大度は、Search ページに表示されます。重大度に関連付けられており、1 つ以上の問題があるポリシーレポートが表示されます。 - ポリシーレポートを選択して、Cluster ページからクラスターの詳細を表示します。Status カードには、ノード、アプリケーション、ポリシー違反 および 特定された問題 に関する情報が表示されます。
詳細を表示するには、特定された問題の数 を選択します。Identified issues カードは、Red Hat Insights からの情報を表します。Identified issues のステータスには、重大度による問題数が表示されます。問題の対応レベルは、Critical、Major、Low、および Warning の重大度に分類されます。
- または、ナビゲーションメニューから Clusters を選択できます。
- テーブルからマネージドクラスターを選択して、詳細情報を表示します。
- Status カードから、特定された問題の数を表示します。
- 発生する可能性のある問題数を選択して、Potential issue サイドパネルから、重大度チャートと、その問題に対して推奨される修復を表示します。検索機能を使用して、推奨される修復を検索することもできます。修復オプションは、脆弱性の 説明、脆弱性に関連する カテゴリー、および 全体的なリスク を表示します。
脆弱性へのリンクをクリックすると、修復する方法 と脆弱性の 理由 の手順を表示します。
注記: 問題を解決すると、Red Hat Insights が 30 分ごとに受信され、Red Hat Insights は 2 時間ごとに更新されます。
PolicyReportからアラートメッセージを送信したコンポーネントを確認してください。-
Governance ページに移動し、特定の
PolicyReportを選択します。 -
Status タブを選択し、View details リンクをクリックして
PolicyReportYAML ファイルを表示します。 -
sourceパラメーターを見つけます。このパラメーターにより、違反を送信したコンポーーネントが通知されます。値オプションはgrcおよびinsightsです。
-
Governance ページに移動し、特定の
2.2.3. 更新リスク予測の表示 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターを更新する際の潜在的なリスクを表示します。以下の手順を実行します。
- マネージドクラスターにログインします。
- Overview ページに移動します。
- Powered by Insights セクションでは、重大度別にリストされた、予測リスクのあるクラスターの割合を表示できます。
- 重大度の番号を選択すると、Clusters ページからクラスターのリストが表示されます。
- 必要なクラスターを選択し、Actions ドロップダウンボタンをクリックします。
- Upgrade clusters をクリックすると、アップデートに伴うリスクが表示されます。
- クラスターのアップグレード モーダルから、アップグレードリスク の列を見つけて、リスクの数のリンクをクリックすると、Hybrid Cloud Console で情報が表示されます。
2.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
-
PolicyReportsにカスタムアラートルールを作成する方法は、Alertmanager の設定 を参照してください。 - オブザーバビリティーサービス を参照してください。