1.4. 可観測性の使用
可観測性サービスを使用して、フリート全体のクラスターの使用率を表示します。
必要なアクセス権: クラスター管理者
1.4.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-observabilityCopy 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.crtoc -n openshift-ingress get secret router-certs-default -o jsonpath="{.data.tls\.crt}" | base64 -d > ca.crtCopy 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.crtoc get secret $SECRET_NAME -n openshift-ingress -o jsonpath=" {.data.tls\.crt}" | base64 -d > ca.crtCopy 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.4.1.1. 外部エンドポイントへのメトリクスのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムで Prometheus Remote-Write 仕様をサポートするには、メトリクスを外部エンドポイントにエクスポートします。メトリクスを外部エンドポイントにエクスポートするには、次の手順を実行します。
open-cluster-management-observabilitynamespace の外部エンドポイントのアクセス情報を使用して、外部エンドポイントの 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: victoriametricsspec: storageConfig: writeStorage:1 - key: ep.yaml name: victoriametricsCopy 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.4.2. ダッシュボードを使用したデータの表示および調査 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターから Grafana にアクセスして、マネージドクラスターからデータを表示します。特定のアラートを照会して、そのクエリーのフィルターを追加できます。
たとえば、単一ノードの OpenShift クラスターから cluster_infrastructure_provider アラートを確認するには、cluster_infrastructure_provider{clusterType="SNO"} のクエリー式を使用します。
注記: シングルノードのマネージドクラスターで可観測性が有効になっている場合は、ObservabilitySpec.resources.CPU.limits パラメーターを設定しないでください。CPU 制限を設定すると、可観測性 Pod がマネージドクラスターの容量にカウントされます。追加リソース セクションの 管理ワークロードのパーティショニング を参照してください。
1.4.2.1. 履歴データの表示 リンクのコピーリンクがクリップボードにコピーされました!
履歴データをクエリーする場合は、クエリーパラメーターオプションを手動で設定して、ダッシュボードから表示されるデータの量を制御します。以下の手順を実行します。
- ハブクラスターから、コンソールヘッダーにある Grafana link を選択します。
- Edit Panel を選択して、クラスターダッシュボードを編集します。
- Grafana のクエリーフロントエンドデータソースから、Query タブをクリックします。
-
$datasourceを選択します。 - より多くのデータを表示する場合は、Step パラメーターセクションの値を増やします。Step パラメーターセクションが空の場合は、自動的に計算されます。
-
Custom query parameters フィールドを見つけて、
max_source_resolution=autoを選択します。 - データが表示されていることを確認するには、Grafana ページを更新します。
Grafana ダッシュボードからクエリーデータが表示されます。
1.4.2.2. Red Hat Advanced Cluster Management ダッシュボードの表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management 可観測性サービスを有効にすると、3 つのダッシュボードが利用可能になります。次に示すダッシュボードの説明を確認してください。
- Alert Analysis: マネージドクラスターフリート内で生成されているアラートの概要を示すダッシュボード。
- Clusters by Alert: アラート名でフィルタリングできるアラートダッシュボード。
- Alerts by Cluster: クラスターでフィルタリングし、クラスター環境内で発生したアラート、または保留中のアラートのリアルタイムデータを表示できるアラートダッシュボード。
1.4.2.3. etcd テーブルの表示 リンクのコピーリンクがクリップボードにコピーされました!
Grafana のハブクラスターダッシュボードから etcd テーブルを表示して、データストアとしての etcd の安定性を確認することもできます。ハブクラスターから Grafana リンクを選択して、ハブクラスターから収集された etcd テーブルデータを表示します。マネージドクラスターの Leader election changes が表示されます。
1.4.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.4.2.5. OpenShift Virtualization ダッシュボードの表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Virtualization ダッシュボードを表示すると、OpenShift Virtualization Operator がインストールされている各クラスターの包括的な分析情報を確認できます。アクティブな OpenShift Virtualization アラートと Hyperconverged Cluster Operator の状態によって決定される Operator の状態が表示されます。さらに、実行中の仮想マシンの数と各クラスターの Operator のバージョンも表示されます。
ダッシュボードには、Operator の健全性に影響を与えるアラートもリスト表示されます。また、Operator の健全性に影響を与えないアラートも含め、すべての OpenShift Virtualization アラートが別途表示されます。ダッシュボードは、クラスター名、Operator の健全性アラート、健全性へのアラートの影響、アラートの重大度でフィルタリングできます。
1.4.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 詳細は、Prometheus Remote-Write 仕様 を参照してください。
- ユーザー所有の OAuth アクセストークンの管理 を参照してください。
- 可観測性サービスの有効化 を参照してください。
- その他のトピックは、可観測性サービス を参照してください。
1.4.4. Grafana ダッシュボードの使用 リンクのコピーリンクがクリップボードにコピーされました!
Grafana ダッシュボードを使用して、ハブクラスターとマネージドクラスターのメトリクスを表示します。Grafana アラートダッシュボードに表示されるデータは、マネージドクラスターから発信される alerts メトリクスに依存します。alerts メトリクスは、ハブクラスター上の Red Hat Advanced Cluster Management アラートマネージャーにアラートを転送するマネージドクラスターには影響しません。したがって、メトリクスとアラートには異なる伝播メカニズムがあり、それぞれ別のコードパスに従います。
Grafana アラートダッシュボードにデータが表示されている場合でも、マネージドクラスターアラートが Red Hat Advanced Cluster Management ハブクラスターアラートマネージャーに正常に転送されているという保証はありません。メトリクスがマネージドクラスターから伝播されている場合は、Grafana アラートダッシュボードにデータが表示されます。
開発ニーズに合わせて Grafana ダッシュボードを使用するには、以下を実行します。
1.4.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 adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Grafana の URL
Grafana 開発者インスタンを設定します。
1.4.4.1.1. Grafana のバージョン検証 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) または Grafana ユーザーインターフェイスから Grafana のバージョンを検証します。
ハブクラスターにログインした後、observabilty-grafana Pod ターミナルにアクセスします。以下のコマンドを実行します。
grafana-cli
grafana-cli
現在クラスター環境内にデプロイされている Grafana のバージョンが表示されます。
Grafana ダッシュボードの Manage タブに移動することもできます。ページの最後までスクロールすると、バージョンリストがあります。
1.4.4.2. Grafana ダッシュボードの設計 リンクのコピーリンクがクリップボードにコピーされました!
Grafana インスタンスを設定したら、ダッシュボードを設計できます。Grafana コンソールを更新し、ダッシュボードを設計するには、以下の手順を実行します。
- Grafana コンソールのナビゲーションパネルから Create アイコンを選択してダッシュボードを作成します。Dashboard を選択し、Add new panel をクリックします。
- New Dashboard/Edit Panel ビューで、Query タブを選択します。
-
データソースセレクターから
Observatoriumを選択し、PromQL クエリーを入力してクエリーを設定します。 - Grafana ダッシュボードヘッダーから、ダッシュボードヘッダーにある Save アイコンをクリックします。
- 説明的な名前を追加し、Save をクリックします。
1.4.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.yamlCopy 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: CustomCopy 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.4.4.3. Grafana 開発者インスタンスのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
インスタンスをアンインストールすると、関連するリソースも削除されます。以下のコマンドを実行します。
1.4.4.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 外部エンドポイントへのメトリクスのエクスポート を参照してください。
- UUID の作成手順は、uuidegen を参照してください。
- 詳細は、Grafana でのマネージドクラスターラベルの使用 を参照してください。
- Grafana ダッシュボードの使用 ページの先頭に戻ります。
- トピックは、環境の監視の紹介 を参照してください。
1.4.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.4.5.1. マネージドクラスターラベルの追加 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターラベルを observability-managed-cluster-label-allowlist ConfigMap に追加すると、そのラベルは Grafana のフィルターオプションとして使用できるようになります。ハブクラスター、またはマネージドクラスターフリートに関連付けられているマネージドクラスターオブジェクトに一意のラベルを追加します。たとえば、ラベル department=finance をマネージドクラスターに追加すると、ConfigMap が更新され、次のように変更されます。
1.4.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.4.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.4.5.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Grafana ダッシュボードの使用 を参照してください。
- ページの最初の Grafana でのマネージドクラスターラベルの使用 に戻ります。