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 リクエストのリターンコードです。