1.5. 可観測性の使用
可観測性サービスを使用して、フリート全体のクラスターの使用率を表示します。
必要なアクセス権: クラスター管理者
1.5.1. 可観測性 API を使用したメトリクスのクエリー リンクのコピーリンクがクリップボードにコピーされました!
ネットワーク接続の双方のアイデンティティーを検証する相互 TLS を使用してエンドポイントにアクセスするには、外部可観測性 API を使用して Red Hat OpenShift Container Platform rbac-query-proxy
ルート経由でメトリクスのクエリーを実行します。rbac-query-proxy
ルートのクエリーを取得するには、次の手順を実行します。
以下のコマンドを使用して、ルートの詳細を取得できます。
oc get route rbac-query-proxy -n open-cluster-management-observability
oc get route rbac-query-proxy -n open-cluster-management-observability
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform OAuth アクセストークンを使用して
rbac-query-proxy
ルートにアクセスするには、次のコマンドを実行してトークンを取得します。トークンは、namespace を取得するパーミッションがあるユーザーまたはサービスアカウントと関連付ける必要があります。MY_TOKEN=$(oc whoami --show-token)
MY_TOKEN=$(oc whoami --show-token)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-ingress
ルートにアクセスするには、デフォルトの CA 証明書を取得し、tls.crt
キーの内容をローカルファイルに保存します。以下のコマンドを実行します。oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt
oc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意: ハブクラスターが 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}")
SECRET_NAME=$(oc get ingresscontroller default -n openshift-ingress-operator -o jsonpath=" {.spec.defaultCertificate.name}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットから証明書を抽出します。
oc get secret $SECRET_NAME -n openshift-ingress -o jsonpath=" {.data.tls\.crt}" | base64 -d > ca.crt
oc get secret $SECRET_NAME -n openshift-ingress -o jsonpath=" {.data.tls\.crt}" | base64 -d > ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
API からメトリクスのクエリーを実行するには、次のコマンドを実行します。
curl --cacert ./ca.crt -H "Authorization: Bearer {TOKEN}" https://{PROXY_ROUTE_URL}/api/v1/query?query={QUERY_EXPRESSION}
curl --cacert ./ca.crt -H "Authorization: Bearer {TOKEN}" https://{PROXY_ROUTE_URL}/api/v1/query?query={QUERY_EXPRESSION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
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-observability
namespace の外部エンドポイントのアクセス情報を使用して、外部エンドポイントの Kubernetes シークレットを作成します。次のシークレットの例を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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: - key: ep.yaml name: victoriametrics
spec: storageConfig: writeStorage:
1 - key: ep.yaml name: victoriametrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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.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
のリソースが作成されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow switch-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
./switch-to-grafana-admin.sh kube:admin User <kube:admin> switched to be grafana admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Grafana の URL
Grafana 開発者インスタンを設定します。
1.5.4.1.1. Grafana のバージョン検証 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) または Grafana ユーザーインターフェイスから Grafana のバージョンを検証します。
ハブクラスターにログインした後、observabilty-grafana
Pod ターミナルにアクセスします。以下のコマンドを実行します。
grafana-cli
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
./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 は、以下のファイルのようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
ダッシュボードが
grafana-dev
インスタンス内に作成されている場合は、ダッシュボードの名前を取得して、スクリプトで引数として渡すことができます。たとえば、Demo Dashboard という名前のダッシュボードがgrafana-dev
インスタンスに作成されます。CLI から、次のスクリプトを実行できます。./generate-dashboard-configmap-yaml.sh "Demo Dashboard"
./generate-dashboard-configmap-yaml.sh "Demo Dashboard"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトを実行すると、次のメッセージが表示される場合があります。
Save dashboard <demo-dashboard> to ./demo-dashboard.yaml
Save dashboard <demo-dashboard> to ./demo-dashboard.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ダッシュボードが General フォルダーにない場合は、この ConfigMap の
annotations
セクションでフォルダー名を指定できます。annotations: observability.open-cluster-management.io/dashboard-folder: Custom
annotations: observability.open-cluster-management.io/dashboard-folder: Custom
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap の更新が完了したら、インストールしてダッシュボードを Grafana インスタンスにインポートできます。
CLI または OpenShift Container Platform コンソールから YAML を適用して、YAML ファイルが作成されていることを確認します。open-cluster-management-observability
namespace 内に ConfigMap が作成されます。CLI から次のコマンドを実行します。
oc apply -f demo-dashboard.yaml
oc apply -f demo-dashboard.yaml
OpenShift Container Platform コンソールから、demo-dashboard.yaml
ファイルを使用して、ConfigMap を作成します。ダッシュボードは Custom フォルダーにあります。
1.5.4.3. Grafana 開発者インスタンスのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
インスタンスをアンインストールすると、関連するリソースも削除されます。以下のコマンドを実行します。
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 ファイルのようになる場合があります。
+ <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 が更新され、次のように変更されます。
1.5.5.2. マネージドクラスターラベルの有効化 リンクのコピーリンクがクリップボードにコピーされました!
observability-managed-cluster-label-allowlist
ConfigMap の ignore_labels
リストからラベルを削除して、すでに無効になっているマネージドクラスターラベルを有効にします。
たとえば、local-cluster
および name
ラベルを有効にします。observability-managed-cluster-label-allowlist
ConfigMap は、次の内容のようになる場合があります。
クラスターラベルが確実に更新されるように、ConfigMap は 30 秒後に再同期します。ConfigMap を更新した後、open-cluster-management-observability
namespace の observability-rbac-query-proxy
Pod ログをチェックして、ラベルがリストされている場所を確認します。次の情報が Pod ログに表示される場合があります。
enabled managedcluster labels: <label>
enabled managedcluster labels: <label>
Grafana ダッシュボードから、ラベルが Label ドロップダウンメニューの値としてリストされていることを確認します。
1.5.5.3. マネージドクラスターラベルの無効化 リンクのコピーリンクがクリップボードにコピーされました!
Label ドロップダウンフィルターのリストからマネージドクラスターラベルを除外します。ラベル名を ignore_labels
リストに追加します。たとえば、local-cluster
と name
を ignore_labels
リストに戻すと、YAML は次のファイルのようになります。
open-cluster-management-observability
namespace の observability-rbac-query-proxy
Pod ログをチェックして、ラベルがどこにリストされているかを確認します。次の情報が Pod ログに表示される場合があります。
disabled managedcluster label: <label>
disabled managedcluster label: <label>
1.5.5.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Grafana ダッシュボードの使用 を参照してください。
- ページの最初の Grafana でのマネージドクラスターラベルの使用 に戻ります。