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. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- 外部エンドポイントへのメトリクスのエクスポート を参照してください。