モニタリング
Red Hat OpenShift Service on AWS 上のプロジェクトのモニタリング
概要
第1章 モニタリングの概要
1.1. Red Hat OpenShift Service on AWS モニタリングについて
Red Hat OpenShift Service on AWS では、Red Hat のサイト信頼性エンジニアリング (SRE) チームのプラットフォームメトリクスから切り離して独自のプロジェクトをモニターできます。追加のモニタリングソリューションなしに独自のプロジェクトをモニターできます。
1.2. モニタリングスタックについて
Red Hat OpenShift Service on AWS (ROSA) モニターリングスタックは、Prometheus オープンソースプロジェクトおよびその幅広いエコシステムをベースとしています。モニタリングスタックには、以下のコンポーネントが含まれます。
デフォルトのプラットフォームモニターリングコンポーネント。プラットフォームモニターリングの一連のコンポーネントは、Red Hat OpenShift Service on AWS のインストール時にデフォルトで
openshift-monitoringプロジェクトにインストールされます。Red Hat Site Reliability Engineer (SRE) は、これらのコンポーネントを使用して、Kubernetes サービスを含むコアクラスターコンポーネントを監視します。これには、全 namespace に含まれるすべてのワークロードから収集された CPU やメモリーなどの重要なメトリックが含まれます。これらのコンポーネントは、以下の図の Installed by default セクションで説明されています。
-
ユーザー定義のプロジェクトをモニターするためのコンポーネント。ユーザー定義のプロジェクトモニタリングコンポーネントのセットは、Red Hat OpenShift Service on AWS のインストール中にデフォルトで
openshift-user-workload-monitoringプロジェクトにインストールされます。これらのコンポーネントを使用して、ユーザー定義プロジェクトのサービスと Pod をモニターできます。これらのコンポーネントは、以下の図の User セクションで説明されています。
1.2.1. デフォルトのモニタリングターゲット
Red Hat Site Reliability Engineer (SRE) は、Red Hat OpenShift Service on AWS クラスター内の次のプラットフォームターゲットを監視します。
- CoreDNS
- Elasticsearch(ロギングがインストールされている場合)
- etcd
- Fluentd(ロギングがインストールされている場合)
- HAProxy
- イメージレジストリー
- Kubelets
- Kubernetes API サーバー
- Kubernetes コントローラーマネージャー
- Kubernetes スケジューラー
- OpenShift API サーバー
- OpenShift Controller Manager
- Operator Lifecycle Manager (OLM)
1.2.2. ユーザー定義プロジェクトをモニターするためのコンポーネント
Red Hat OpenShift Service on AWS には、ユーザー定義プロジェクトでサービスおよび Pod をモニターできるモニターリングスタックのオプションの拡張機能が含まれています。この機能には、以下のコンポーネントが含まれます。
表1.1 ユーザー定義プロジェクトをモニターするためのコンポーネント
| コンポーネント | 説明 |
|---|---|
| Prometheus Operator |
|
| Prometheus | Prometheus は、ユーザー定義のプロジェクト用にモニタリング機能が提供されるモニタリングシステムです。Prometheus は処理のためにアラートを Alertmanager に送信します。 |
| Thanos Ruler | Thanos Ruler は、別のプロセスとしてデプロイされる Prometheus のルール評価エンジンです。Red Hat OpenShift Service on AWS では、Thanos Ruler はユーザー定義プロジェクトのモニターリングに関するルールおよびアラートの評価を提供します。 |
| Alertmanager | Alertmanager サービスは、Prometheus および Thanos Ruler から送信されるアラートを処理します。Alertmanager はユーザー定義のアラートを外部通知システムに送信します。このサービスのデプロイは任意です。 |
これらのコンポーネントはすべてスタックによりモニターされ、Red Hat OpenShift Service on AWS の更新時に自動的に更新されます。
1.2.3. ユーザー定義プロジェクトのターゲットのモニターリング
モニターリングは、Red Hat OpenShift Service on AWS のユーザー定義プロジェクトについてデフォルトで有効にされます。以下をモニターできます。
- ユーザー定義プロジェクトのサービスエンドポイント経由で提供されるメトリクス。
- ユーザー定義プロジェクトで実行される Pod。
1.3. Red Hat OpenShift Service on AWS モニタリングの共通用語集
この用語集は、Red Hat OpenShift Service on AWS アーキテクチャーで使用される一般的な用語を定義します。
- Alertmanager
- Alertmanager は、Prometheus から受信したアラートを処理します。また、Alertmanager は外部の通知システムにアラートを送信します。
- アラートルール
- アラートルールには、クラスター内の特定の状態を示す一連の条件が含まれます。アラートは、これらの条件が true の場合にトリガーされます。アラートルールには、アラートのルーティング方法を定義する重大度を割り当てることができます。
- クラスターモニタリング Operator
- Cluster Monitoring Operator (CMO) は、モニタリングスタックの中心的なコンポーネントです。Thanos Querier、Telemeter Client、メトリクスターゲットなどの Prometheus インスタンスをデプロイおよび管理して、それらが最新であることを確認します。CMO は Cluster Version Operator (CVO) によってデプロイされます。
- Cluster Version Operator
- Cluster Version Operator (CVO) は、クラスター Operator のライフサイクルを管理します。クラスター Operator の多くは、デフォルトで Red Hat OpenShift Service on AWS にインストールされます。
- ConfigMap
-
ConfigMap は、設定データを Pod に注入する方法を提供します。タイプ
ConfigMapのボリューム内の ConfigMap に格納されたデータを参照できます。Pod で実行しているアプリケーションは、このデータを使用できます。 - Container
- コンテナーは、ソフトウェアとそのすべての依存関係を含む軽量で実行可能なイメージです。コンテナーは、オペレーティングシステムを仮想化します。そのため、コンテナーはデータセンターからパブリッククラウド、プライベートクラウド、開発者のラップトップなどまで、場所を問わずコンテナーを実行できます。
- カスタムリソース (CR)
- CR は Kubernetes API のエクステンションです。カスタムリソースを作成できます。
- etcd
- etcd は、Red Hat OpenShift Service on AWS のキー/値ストアであり、すべてのリソースオブジェクトの状態を保存します。
- Fluentd
- Fluentd は、ノードからログを収集し、そのログを Elasticsearch に送ります。
- Kubelets
- ノード上で実行され、コンテナーマニフェストを読み取ります。定義されたコンテナーが開始され、実行されていることを確認します。
- Kubernetes API サーバー
- Kubernetes API サーバーは、API オブジェクトのデータを検証して設定します。
- Kubernetes コントローラーマネージャー
- Kubernetes コントローラーマネージャーは、クラスターの状態を管理します。
- Kubernetes スケジューラー
- Kubernetes スケジューラーは Pod をノードに割り当てます。
- labels
- ラベルは、Pod などのオブジェクトのサブセットを整理および選択するために使用できるキーと値のペアです。
- node
- Red Hat OpenShift Service on AWS クラスター内のワーカーマシンです。ノードは、仮想マシン (VM) または物理マシンのいずれかです。
- Operator
- Red Hat OpenShift Service on AWS クラスターで Kubernetes アプリケーションをパッケージ化、デプロイ、および管理するための推奨される方法です。Operator は、人間による操作に関する知識を取り入れて、簡単にパッケージ化してお客様と共有できるソフトウェアにエンコードします。
- Operator Lifecycle Manager (OLM)
- OLM は、Kubernetes ネイティブアプリケーションのライフサイクルをインストール、更新、および管理するのに役立ちます。OLM は、Operator を効果的かつ自動化されたスケーラブルな方法で管理するために設計されたオープンソースのツールキットです。
- 永続ストレージ
- デバイスがシャットダウンされた後でもデータを保存します。Kubernetes は永続ボリュームを使用して、アプリケーションデータを保存します。
- 永続ボリューム要求 (PVC)
- PVC を使用して、PersistentVolume を Pod にマウントできます。クラウド環境の詳細を知らなくてもストレージにアクセスできます。
- pod
- Pod は、Kubernetes における最小の論理単位です。Pod には、ワーカーノードで実行される 1 つ以上のコンテナーが含まれます。
- Prometheus
- Prometheus は、Red Hat OpenShift Service on AWS モニタリングスタックのベースとなるモニタリングシステムです。Prometheus は Time Series を使用するデータベースであり、メトリックのルール評価エンジンです。Prometheus は処理のためにアラートを Alertmanager に送信します。
- Prometheus アダプター
- Prometheus アダプターは、Prometheus で使用するために Kubernetes ノードと Pod のクエリーを変換します。変換されるリソースメトリクスには、CPU およびメモリーの使用率が含まれます。Prometheus アダプターは、Horizontal Pod Autoscaling のクラスターリソースメトリクス API を公開します。
- Prometheus Operator
-
openshift-monitoringプロジェクトの Prometheus Operator(PO) は、プラットフォーム Prometheus インスタンスおよび Alertmanager インスタンスを作成し、設定し、管理します。また、Kubernetes ラベルのクエリーに基づいてモニタリングターゲットの設定を自動生成します。 - サイレンス
- サイレンスをアラートに適用し、アラートの条件が true の場合に通知が送信されることを防ぐことができます。初期通知後はアラートをミュートにして、根本的な問題の解決に取り組むことができます。
- storage
- Red Hat OpenShift Service on AWS は、AWS 上のさまざまなタイプのストレージをサポートします。Red Hat OpenShift Service on AWS クラスターでは、永続データと非永続データのコンテナーストレージを管理できます。
- Thanos Ruler
- Thanos Ruler は、別のプロセスとしてデプロイされる Prometheus のルール評価エンジンです。Red Hat OpenShift Service on AWS 4 では、Thanos Ruler はユーザー定義プロジェクトのモニターリングに関するルールおよびアラートの評価を提供します。
- Web コンソール
- Red Hat OpenShift Service on AWS を管理するためのユーザーインターフェイス (UI)。
1.4. 次のステップ
第2章 ユーザー定義プロジェクトのモニタリングのアクセス
Red Hat OpenShift Service on AWS (ROSA) クラスターをインストールすると、ユーザー定義プロジェクトのモニターリングがデフォルトで有効になります。ユーザー定義プロジェクトの監視を有効にすると、追加の監視ソリューションを必要とせずに独自の ROSA プロジェクトを監視できます。
dedicated-admin ユーザーには、ユーザー定義プロジェクトのモニタリングを設定し、アクセスするためのデフォルトのパーミッションがあります。
カスタム Prometheus インスタンスおよび Operator Lifecycle Manager (OLM) でインストールされる Prometheus Operator では、ユーザー定義のプロジェクトモニタリングが有効である場合にこれに関する問題が生じる可能性があります。カスタム Prometheus インスタンスはサポートされません。
必要に応じて、クラスターのインストール中またはインストール後に、ユーザー定義プロジェクトの監視を無効にすることができます。
2.1. 次のステップ
第3章 モニタリングスタックの設定
このセクションでは、サポートされる設定について説明し、ユーザー定義プロジェクトのモニタリングスタックを設定する方法を示し、いくつかの一般的な設定シナリオを示します。
3.1. モニタリングのメンテナンスおよびサポート
AWS モニターリングの設定は、本書で説明されているオプションを使用して行う方法がサポートされている方法です。サポートされていない他の設定は使用しないでください。設定のパラダイムが Prometheus リリース間で変更される可能性があり、このような変更には、設定のすべての可能性が制御されている場合のみ適切に対応できます。本セクションで説明されている設定以外の設定を使用する場合、cluster-monitoring-operator が差分を調整するため、変更内容は失われます。Operator はデフォルトで定義された状態へすべてをリセットします。
別の Prometheus インスタンスのインストールは、Red Hat Site Reliability Engineers (SRE) ではサポートされていません。
3.1.1. モニタリングのサポートに関する考慮事項
以下の変更は明示的にサポートされていません。
- カスタム Prometheus インスタンスの Red Hat OpenShift Service on AWS へのインストール。カスタムインスタンスは、Prometheus Operator によって管理される Prometheus カスタムリソース (CR) です。
-
デフォルトのプラットフォームモニタリングコンポーネントを変更します。
cluster-monitoring-configconfig map で定義されているコンポーネントは変更しないでください。Red Hat SRE は、これらのコンポーネントを使用して、コアクラスターコンポーネントと Kubernetes サービスをモニターします。
3.2. モニタリングスタックの設定
Red Hat OpenShift Service on AWS では、user-workload-monitoring-config ConfigMap オブジェクトを使用してユーザー定義プロジェクトのワークロードをモニターするスタックを設定できます。設定マップはクラスターモニターリング Operator (CMO) を設定し、その後にスタックのコンポーネントが設定されます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
設定を、
data/config.yamlの下に値とキーのペア<component_name>: <component_configuration>として追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: <configuration_for_the_component><component>および<configuration_for_the_component>を随時置き換えます。以下の
ConfigMapオブジェクトの例は、Prometheus のデータ保持期間および最小コンテナーリソース要求を設定します。これは、ユーザー定義のプロジェクトのみをモニターする Prometheus インスタンスに関連します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: 1 retention: 24h 2 resources: requests: cpu: 200m 3 memory: 2Gi 4
ファイルを保存して、変更を
ConfigMapオブジェクトに適用します。新規設定の影響を受ける Pod は自動的に再起動します。警告変更がモニタリング設定マップに保存されると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
関連情報
-
user-workload-monitoring-configconfig map の設定リファレンス
3.3. 設定可能なモニタリングコンポーネント
以下の表は、設定可能なモニタリングコンポーネントと、user-workload-monitoring-config ConfigMap オブジェクトでコンポーネントを指定するために使用されるキーを示しています。
Cluster-monitoring-config ConfigMap オブジェクト内のモニタリングコンポーネントを変更しないでください。Red Hat Site Reliability Engineer (SRE) は、これらのコンポーネントを使用して、コアクラスターコンポーネントと Kubernetes サービスをモニターします。
表3.1 設定可能なモニタリングコンポーネント
| コンポーネント | user-workload-monitoring-config 設定マップキー |
|---|---|
| Alertmanager |
|
| Prometheus Operator |
|
| Prometheus |
|
| Thanos Ruler |
|
3.4. ノードセレクターを使用したモニタリングコンポーネントの移動
ラベル付きノードで nodeSelector 制約を使用すると、任意のモニタリングスタックコンポーネントを特定ノードに移動できます。これにより、クラスター全体のモニタリングコンポーネントの配置と分散を制御できます。
モニタリングコンポーネントの配置と分散を制御することで、システムリソースの使用を最適化し、パフォーマンスを高め、特定の要件やポリシーに基づいてワークロードを分離できます。
3.4.1. ノードセレクターと他の制約の連携
ノードセレクターの制約を使用してモニタリングコンポーネントを移動する場合、クラスターに Pod のスケジューリングを制御するための他の制約があることに注意してください。
- Pod の配置を制御するために、トポロジー分散制約が設定されている可能性があります。
- Prometheus、Thanos Querier、Alertmanager、およびその他のモニタリングコンポーネントでは、コンポーネントの複数の Pod が必ず異なるノードに分散されて高可用性が常に確保されるように、ハードな非アフィニティールールが設定されています。
ノード上で Pod をスケジュールする場合、Pod スケジューラーは既存の制約をすべて満たすように Pod の配置を決定します。つまり、Pod スケジューラーがどの Pod をどのノードに配置するかを決定する際に、すべての制約が組み合わされます。
そのため、ノードセレクター制約を設定しても既存の制約をすべて満たすことができない場合、Pod スケジューラーはすべての制約をマッチさせることができず、ノードへの Pod 配置をスケジュールしません。
モニタリングコンポーネントの耐障害性と高可用性を維持するには、コンポーネントを移動するノードセレクター制約を設定する際に、十分な数のノードが利用可能で、すべての制約がマッチすることを確認してください。
3.4.2. モニタリングコンポーネントの異なるノードへの移動
ユーザー定義プロジェクトのワークロードをモニターする任意のコンポーネントを特定のワーカーノードに移動できます。コンポーネントをコントロールプレーンまたはインフラストラクチャーノードに移動することは許可されていません。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
まだの場合は、モニタリングコンポーネントを実行するノードにラベルを追加します。
$ oc label nodes <node-name> <node-label>
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yamlでコンポーネントのnodeSelector制約のノードラベルを指定します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: 1 nodeSelector: <node-label-1> 2 <node-label-2> 3 <...>注記nodeSelectorの制約を設定した後もモニタリングコンポーネントがPending状態のままになっている場合は、Pod イベントでテイントおよび容認に関連するエラーの有無を確認します。
変更を適用するためにファイルを保存します。新しい設定で指定されたコンポーネントは、新しいノードに自動的に移動されます。
警告monitoring config map への変更を保存すると、プロジェクトの Pod およびその他のリソースが再デプロイされる場合があります。そのプロジェクトで実行中のモニタリングプロセスも再起動する場合があります。
関連情報
-
nodeSelector制約についての詳細は、Kubernetes ドキュメント を参照してください。
3.5. モニタリングコンポーネントへの容認 (Toleration) の割り当て
ユーザー定義プロジェクトをモニターするコンポーネントに許容値を割り当てて、汚染されたワーカーノードにプロジェクトを移動できるようにすることができます。コントロールプレーンまたはインフラストラクチャーノードでのスケジューリングは許可されていません。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトは、openshift-user-workload-monitoringnamespace に存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
コンポーネントの
tolerationsを指定します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: tolerations: <toleration_specification><component>および<toleration_specification>を随時置き換えます。たとえば、
oc adm taint nodes node1 key1=value1:NoScheduleは、キーがkey1で、値がvalue1のnode1にテイントを追加します。これにより、モニタリングコンポーネントがnode1に Pod をデプロイするのを防ぎます。ただし、そのテイントに対して許容値が設定されている場合を除きます。以下の例では、サンプルのテイントを容認するようにthanosRulerコンポーネントを設定します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule"
変更を適用するためにファイルを保存します。新しいコンポーネントの配置設定が自動的に適用されます。
警告変更がモニタリング設定マップに保存されると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
関連情報
- テイントおよび許容値は、Kubernetes ドキュメント を参照してください。
3.6. 専用サービスモニターの設定
専用サービスモニターを使用してリソースメトリクスパイプラインのメトリクスを収集するように Red Hat OpenShift Service on AWS コアプラットフォームのモニタリングを設定できます。
専用サービスモニターを有効にすると、kubelet エンドポイントから 2 つの追加メトリクスが公開され、honorTimestamps フィールドの値が true に設定されます。
専用のサービスモニターを有効にすることで、oc adm top pod コマンドや horizontal Pod Autoscaler などで使用される Prometheus Adapter ベースの CPU 使用率測定の一貫性を向上させることができます。
3.6.1. 専用サービスモニターの有効化
openshift-monitoring namespace の cluster-monitoring-config ConfigMap オブジェクトで dedicatedServiceMonitors キーを設定することで、専用サービスモニターを使用するようにコアプラットフォームのモニタリングを設定できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできます。 -
cluster-monitoring-configConfigMapオブジェクトを作成している。
手順
openshift-monitoringnamespace でcluster-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
次のサンプルに示すように、
enabled: trueのキーと値のペアを追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | k8sPrometheusAdapter: dedicatedServiceMonitors: enabled: true 1- 1
- kubelet
/metrics/resourceエンドポイントを公開する専用サービスモニターをデプロイするには、enabledフィールドの値をtrueに設定します。
ファイルを保存して、変更を自動的に適用します。
警告cluster-monitoring-config設定マップへの変更を保存すると、openshift-monitoringプロジェクトの Pod およびその他のリソースが再デプロイされる場合があります。そのプロジェクトで実行中のモニタリングプロセスも再起動する場合があります。
3.7. Configuring persistent storage
クラスターモニタリングを永続ストレージと共に実行すると、メトリクスは永続ボリューム (PV) に保存され、Pod の再起動または再作成後も維持されます。これは、メトリクスデータまたはアラートデータをデータ損失から保護する必要がある場合に適しています。実稼働環境では、永続ストレージを設定することを強く推奨します。IO デマンドが高いため、ローカルストレージを使用することが有利になります。
3.7.1. 永続ストレージの前提条件
- ストレージのブロックタイプを使用します。
3.7.2. Persistent Volume Claim (永続ボリューム要求) の設定
モニタリングコンポーネントが永続ボリューム (PV) を使用できるようにするには、永続ボリューム要求 (PVC) を設定する必要があります。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
コンポーネントの PVC 設定を
data/config.yamlの下に追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: volumeClaimTemplate: spec: storageClassName: <storage_class> resources: requests: storage: <amount_of_storage>volumeClaimTemplateの指定方法は、PersistentVolumeClaims に関する Kubernetes ドキュメント を参照してください。以下の例では、ユーザー定義プロジェクトをモニターする Prometheus インスタンスの永続ストレージを要求する PVC を設定します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: volumeClaimTemplate: spec: storageClassName: gp3 resources: requests: storage: 40Gi上記の例では、
gp3ストレージクラスを使用しています。以下の例では、Thanos Ruler の永続ストレージを要求する PVC を設定します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: volumeClaimTemplate: spec: storageClassName: gp3 resources: requests: storage: 10Gi注記thanosRulerコンポーネントのストレージ要件は、評価されルールの数や、各ルールが生成するサンプル数により異なります。
変更を適用するためにファイルを保存します。新規設定の影響を受けた Pod は自動的に再起動し、新規ストレージ設定が適用されます。
警告変更がモニタリング設定マップに保存されると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
3.7.3. Prometheus メトリクスデータの保持期間およびサイズの変更
デフォルトでは、Prometheus は 15 日間メトリクスデータを自動的に保持します。データを削除するタイミングを変更するために、ユーザー定義のプロジェクトをモニターする Prometheus インスタンスの保持時間を変更できます。保持されるメトリクスデータが使用するディスク容量の最大量を設定することもできます。データがこのサイズ制限に達すると、使用するディスク領域が上限を下回るまで、Prometheus は最も古いデータを削除します。
これらのデータ保持設定は、以下の挙動に注意してください。
-
サイズベースのリテンションポリシーは、
/prometheusディレクトリー内のすべてのデータブロックディレクトリーに適用され、永続ブロック、ライトアヘッドログ (WAL) データ、および m-mapped チャンクも含まれます。 -
walと/head_chunksディレクトリーのデータは保持サイズ制限にカウントされますが、Prometheus はサイズまたは時間ベースの保持ポリシーに基づいてこれらのディレクトリーからデータをパージすることはありません。したがって、/walディレクトリーおよび/head_chunksディレクトリーに設定された最大サイズよりも低い保持サイズ制限を設定すると、/prometheusデータディレクトリーにデータブロックを保持しないようにシステムを設定している。 - サイズベースの保持ポリシーは、Prometheus が新規データブロックをカットする場合にのみ適用されます。これは、WAL に少なくとも 3 時間のデータが含まれてから 2 時間ごとに実行されます。
-
retentionまたはretentionSizeのいずれかの値を明示的に定義しない場合、保持時間はデフォルトで 15 日に設定され、保持サイズは設定されません。 -
retentionおよびretentionSizeの両方に値を定義すると、両方の値が適用されます。データブロックが定義された保持時間または定義されたサイズ制限を超える場合、Prometheus はこれらのデータブロックをパージします。 -
retentionSizeの値を定義してretentionを定義しない場合、retentionSize値のみが適用されます。 -
retentionSizeの値を定義しておらず、pretentionの値のみを定義する場合、retention値のみが適用されます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
保持期間およびサイズ設定を
data/config.yamlに追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: retention: <time_specification> 1 retentionSize: <size_specification> 2次の例では、ユーザー定義プロジェクトを監視する Prometheus インスタンスについて、保持時間を 24 時間に、保持サイズを 10 ギガバイトに設定しています。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: retention: 24h retentionSize: 10GB
変更を適用するためにファイルを保存します。新規設定の影響を受けた Pod は自動的に再起動します。
警告変更がモニタリング設定マップに保存されると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
3.7.4. Thanos Ruler メトリクスデータの保持期間の変更
デフォルトでは、ユーザー定義のプロジェクトでは、Thanos Ruler は 24 時間にわたりメトリクスデータを自動的に保持します。openshift-user-workload-monitoring namespace の user-workload-monitoring-config の Config Map に時間の値を指定して、このデータの保持期間を変更できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
保持期間の設定を
data/config.yamlに追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: retention: <time_specification> 1- 1
- 保持時間 は、
ms(ミリ秒)、s(秒)、m(分)、h(時)、d(日)、w(週)、y(年) が直後に続く数字で指定します。1h30m15sなどの特定の時間に時間値を組み合わせることもできます。デフォルトは24hです。
以下の例では、Thanos Ruler データの保持期間を 10 日間に設定します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: retention: 10d変更を適用するためにファイルを保存します。新規設定が加えられた Pod は自動的に再起動します。
警告監視設定マップの変更を保存すると、監視プロセスが再起動し、関連プロジェクトの Pod やその他のリソースが再デプロイされる場合があります。そのプロジェクトで実行中のモニタリングプロセスも再起動する場合があります。
関連情報
3.8. リモート書き込みストレージの設定
リモート書き込みストレージを設定して、Prometheus が取り込んだメトリックをリモートシステムに送信して長期保存できるようにします。これを行っても、Prometheus がメトリクスを保存する方法や期間には影響はありません。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。 - リモート書き込み互換性のあるエンドポイント (Thanos) を設定し、エンドポイント URL を把握している。リモート書き込み機能と互換性のないエンドポイントの情報ては、Prometheus リモートエンドポイントおよびストレージについてのドキュメント を参照してください。
リモート書き込みエンドポイントの
Secretオブジェクトに認証クレデンシャルを設定している。シークレットはopenshift-user-workload-monitoringnamespace に作成する必要があります。注意セキュリティーリスクを軽減するには、HTTPS および認証を使用してメトリクスをエンドポイントに送信します。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
-
data/config.yaml/prometheusにremoteWrite:セクションを追加します。 このセクションにエンドポイント URL および認証情報を追加します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: remoteWrite: - url: "https://remote-write-endpoint.example.com" 1 <endpoint_authentication_credentials> 2認証クレデンシャルの後に、書き込みの再ラベル設定値を追加します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: remoteWrite: - url: "https://remote-write-endpoint.example.com" <endpoint_authentication_credentials> <write_relabel_configs> 1- 1
- 書き込みの再ラベル設定。
<write_relabel_configs>は、リモートエンドポイントに送信する必要のあるメトリクスの書き込みラベル一覧に置き換えます。以下の例では、
my_metricという単一のメトリックを転送する方法を紹介します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: remoteWrite: - url: "https://remote-write-endpoint.example.com" writeRelabelConfigs: - sourceLabels: [__name__] regex: 'my_metric' action: keep書き込み再ラベル設定オプションについては、Prometheus relabel_config documentation を参照してください。
変更を適用するためにファイルを保存します。新規設定の影響を受けた Pod は自動的に再起動します。
警告モニタリング
ConfigMapオブジェクトへの変更を保存すると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。また、変更を保存すると、そのプロジェクトで実行中のモニタリングプロセスも再起動する可能性があります。
3.8.1. サポート対象のリモート書き込み認証設定
異なる方法を使用して、リモート書き込みエンドポイントとの認証を行うことができます。現時点でサポートされている認証方法は AWS 署名バージョン 4、Basic 認証、認可、OAuth 2.0、および TLS クライアントです。以下の表は、リモート書き込みで使用するサポート対象の認証方法の詳細を示しています。
| 認証方法 | 設定マップフィールド | 説明 |
|---|---|---|
| AWS 署名バージョン 4 |
| この方法では、AWS Signature Version 4 認証を使用して要求を署名します。この方法は、認可、OAuth 2.0、または Basic 認証と同時に使用することはできません。 |
| Basic 認証 |
| Basic 認証は、設定されたユーザー名とパスワードを使用してすべてのリモート書き込み要求に承認ヘッダーを設定します。 |
| 認可 |
|
Authorization は、設定されたトークンを使用して、すべてのリモート書き込みリクエストに |
| OAuth 2.0 |
|
OAuth 2.0 設定は、クライアントクレデンシャル付与タイプを使用します。Prometheus は、リモート書き込みエンドポイントにアクセスするために、指定されたクライアント ID およびクライアントシークレットを使用して |
| TLS クライアント |
| TLS クライアント設定は、TLS を使用してリモート書き込みエンドポイントサーバーで認証するために使用される CA 証明書、クライアント証明書、およびクライアントキーファイル情報を指定します。設定例は、CA 証明書ファイル、クライアント証明書ファイル、およびクライアントキーファイルがすでに作成されていることを前提としています。 |
3.8.2. リモート書き込み認証の設定例
次のサンプルは、リモート書き込みエンドポイントに接続するために使用できるさまざまな認証設定を示しています。各サンプルでは、認証情報やその他の関連設定を含む対応する Secret オブジェクトを設定する方法も示しています。各サンプルは、openshift-user-workload-monitoring namespace 内のユーザー定義プロジェクトのモニタリングで使用する認証を設定します。
例3.1 AWS 署名バージョン 4 認証のサンプル YAML
以下は、openshift-user-workload-monitoring namespace の sigv4-credentials という名前の sigv 4 シークレットの設定を示しています。
apiVersion: v1 kind: Secret metadata: name: sigv4-credentials namespace: openshift-user-workload-monitoring stringData: accessKey: <AWS_access_key> 1 secretKey: <AWS_secret_key> 2 type: Opaque
以下は、openshift-user-workload-monitoring namespace の sigv4-credentials という名前の Secret オブジェクトを使用する AWS Signature Version 4 リモート書き込み認証のサンプルを示しています。
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
remoteWrite:
- url: "https://authorization.example.com/api/write"
sigv4:
region: <AWS_region> 1
accessKey:
name: sigv4-credentials 2
key: accessKey 3
secretKey:
name: sigv4-credentials 4
key: secretKey 5
profile: <AWS_profile_name> 6
roleArn: <AWS_role_arn> 7例3.2 Basic 認証のサンプル YAML
以下に、openshift-user-workload-monitoring namespace 内の rw-basic-auth という名前の Secret オブジェクトの基本認証設定のサンプルを示します。
apiVersion: v1 kind: Secret metadata: name: rw-basic-auth namespace: openshift-user-workload-monitoring stringData: user: <basic_username> 1 password: <basic_password> 2 type: Opaque
以下の例は、openshift-user-workload-monitoring namespace の rw-basic-auth という名前の Secret オブジェクトを使用する basicAuth リモート書き込み設定を示しています。これは、エンドポイントの認証認証情報がすでに設定されていることを前提としています。
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
remoteWrite:
- url: "https://basicauth.example.com/api/write"
basicAuth:
username:
name: rw-basic-auth 1
key: user 2
password:
name: rw-basic-auth 3
key: password 4例3.3 Secret オブジェクトを使用したベアラートークンによる認証のサンプル YAML
以下は、openshift-user-workload-monitoring namespace の rw-bearer-auth という名前の Secret オブジェクトのベアラートークン設定を示しています。
apiVersion: v1
kind: Secret
metadata:
name: rw-bearer-auth
namespace: openshift-user-workload-monitoring
stringData:
token: <authentication_token> 1
type: Opaque- 1
- 認証トークン。
以下は、openshift-user-workload-monitoring namespace の rw-bearer-auth という名前の Secret オブジェクトを使用するベアラートークン設定マップの設定例を示しています。
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
enableUserWorkload: true
prometheus:
remoteWrite:
- url: "https://authorization.example.com/api/write"
authorization:
type: Bearer 1
credentials:
name: rw-bearer-auth 2
key: token 3例3.4 OAuth 2.0 認証のサンプル YAML
以下は、openshift-user-workload-monitoring namespace の oauth2-credentials という名前の Secret オブジェクトの OAuth 2.0 設定のサンプルを示しています。
apiVersion: v1 kind: Secret metadata: name: oauth2-credentials namespace: openshift-user-workload-monitoring stringData: id: <oauth2_id> 1 secret: <oauth2_secret> 2 token: <oauth2_authentication_token> 3 type: Opaque
以下は、openshift-user-workload-monitoring namespace の oauth2-credentials という Secret オブジェクトを使用した oauth2 リモート書き込み認証のサンプル設定です。
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
remoteWrite:
- url: "https://test.example.com/api/write"
oauth2:
clientId:
secret:
name: oauth2-credentials 1
key: id 2
clientSecret:
name: oauth2-credentials 3
key: secret 4
tokenUrl: https://example.com/oauth2/token 5
scopes: 6
- <scope_1>
- <scope_2>
endpointParams: 7
param1: <parameter_1>
param2: <parameter_2>- 1 3
- 対応する
Secretオブジェクトの名前。ClientIdはConfigMapオブジェクトを参照することもできますが、clientSecretはSecretオブジェクトを参照する必要があることに注意してください。 - 2 4
- 指定された
Secretオブジェクトの OAuth 2.0 認証情報が含まれるキー。 - 5
- 指定された
clientIdおよびclientSecretでトークンを取得するために使用される URL。 - 6
- 承認要求の OAuth 2.0 スコープ。これらのスコープは、トークンがアクセスできるデータを制限します。
- 7
- 認可サーバーに必要な OAuth 2.0 認可要求パラメーター。
例3.5 TLS クライアント認証のサンプル YAML
以下は、openshift-user-workload-monitoring namespace 内の mtls-bundle という名前の tlsSecret オブジェクトに対する TLS クライアント設定のサンプルです。
apiVersion: v1 kind: Secret metadata: name: mtls-bundle namespace: openshift-user-workload-monitoring data: ca.crt: <ca_cert> 1 client.crt: <client_cert> 2 client.key: <client_key> 3 type: tls
以下の例は、mtls-bundle という名前の TLS Secret オブジェクトを使用する tlsConfig リモート書き込み認証設定を示しています。
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
remoteWrite:
- url: "https://remote-write-endpoint.example.com"
tlsConfig:
ca:
secret:
name: mtls-bundle 1
key: ca.crt 2
cert:
secret:
name: mtls-bundle 3
key: client.crt 4
keySecret:
name: mtls-bundle 5
key: client.key 6関連情報
- リモート書き込み互換性のあるエンドポイント (Thanos など) を作成する手順は、リモート書き込み互換性のあるエンドポイントの設定 を参照してください。
- 各種のユースケースごとのリモート書き込みの最適化方法は、リモート書き込みの設定 を参照してください。
3.9. クラスター ID ラベルのメトリクスへの追加
複数の Red Hat OpenShift Service on AWS クラスターを管理し、リモート書き込み機能を使用してメトリクスデータをこれらのクラスターから外部ストレージの場所に送信する場合、クラスター ID ラベルを追加して、異なるクラスターから送られるメトリクスデータを特定できます。次に、これらのラベルをクエリーし、メトリクスのソースクラスターを特定し、そのデータを他のクラスターによって送信される同様のメトリクスデータと区別することができます。
これにより、複数の顧客に対して多数のクラスターを管理し、メトリクスデータを単一の集中ストレージシステムに送信する場合、クラスター ID ラベルを使用して特定のクラスターまたはお客様のメトリクスをクエリーできます。
クラスター ID ラベルの作成および使用には、以下の 3 つの一般的な手順が必要です。
- リモート書き込みストレージの書き込みラベルの設定。
- クラスター ID ラベルをメトリクスに追加します。
- これらのラベルをクエリーし、メトリクスのソースクラスターまたはカスタマーを特定します。
3.9.1. メトリクスのクラスター ID ラベルの作成
openshift-user-workload-monitoring namespace の user-workload-monitoring-config config map の設定を編集することで、メトリクスのクラスター ID ラベルを作成できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMap オブジェクトを編集します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。 - リモート書き込みストレージを設定している。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yaml/prometheus/remoteWriteの下にあるwriteRelabelConfigs:セクションで、クラスター ID の再ラベル付け設定値を追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: remoteWrite: - url: "https://remote-write-endpoint.example.com" <endpoint_authentication_credentials> writeRelabelConfigs: 1 - <relabel_config> 2次のサンプルは、ユーザーワークロードのモニタリングでクラスター ID ラベル
cluster_idを持つメトリックを転送する方法を示しています。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: remoteWrite: - url: "https://remote-write-endpoint.example.com" writeRelabelConfigs: - sourceLabels: - __tmp_openshift_cluster_id__ 1 targetLabel: cluster_id 2 action: replace 3- 1
- システムは最初に
__tmp_openshift_cluster_id__という名前の一時的なクラスター ID ソースラベルを適用します。この一時的なラベルは、指定するクラスター ID ラベル名に置き換えられます。 - 2
- リモート書き込みストレージに送信されるメトリクスのクラスター ID ラベルの名前を指定します。メトリクスにすでに存在するラベル名を使用する場合、その値はこのクラスター ID ラベルの名前で上書きされます。ラベル名には
__tmp_openshift_cluster_id__は使用しないでください。最後の再ラベル手順では、この名前を使用するラベルを削除します。 - 3
replace置き換えラベルの再設定アクションは、一時ラベルを送信メトリクスのターゲットラベルに置き換えます。このアクションはデフォルトであり、アクションが指定されていない場合に適用されます。
ファイルを保存して、変更を
ConfigMapオブジェクトに適用します。更新された設定の影響を受ける Pod は自動的に再起動します。警告モニタリング
ConfigMapオブジェクトへの変更を保存すると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。また、変更を保存すると、そのプロジェクトで実行中のモニタリングプロセスも再起動する可能性があります。
関連情報
- 書き込みリラベル設定の詳細は、リモート書き込みストレージの設定 を参照してください。
3.10. ユーザー定義プロジェクトでバインドされていないメトリクス属性の影響の制御
開発者は、キーと値のペアの形式でメトリクスの属性を定義するためにラベルを作成できます。使用できる可能性のあるキーと値のペアの数は、属性について使用できる可能性のある値の数に対応します。数が無制限の値を持つ属性は、バインドされていない属性と呼ばれます。たとえば、customer_id 属性は、使用できる値が無限にあるため、バインドされていない属性になります。
割り当てられるキーと値のペアにはすべて、一意の時系列があります。ラベルに多数のバインドされていない値を使用すると、作成される時系列の数が指数関数的に増加する可能性があります。これは Prometheus のパフォーマンスに影響する可能性があり、多くのディスク領域を消費する可能性があります。
dedicated-admin は、以下の手段を使用して、ユーザー定義プロジェクトでのバインドされていないメトリクス属性の影響を制御できます。
- ユーザー定義プロジェクトでターゲット収集ごとに受け入れ可能なサンプル数を制限します。
- 収集されたラベルの数、ラベル名の長さ、およびラベル値の長さを制限します。
- 収集サンプルのしきい値に達するか、ターゲットを収集できない場合に実行されるアラートを作成します。
収集サンプルを制限すると、多くのバインドされていない属性をラベルに追加して問題が発生するのを防ぐことができます。さらに開発者は、メトリクスに定義するバインドされていない属性の数を制限することにより、根本的な原因を防ぐことができます。使用可能な値の制限されたセットにバインドされる属性を使用すると、可能なキーと値のペアの組み合わせの数が減ります。
3.10.1. ユーザー定義プロジェクトの収集サンプルおよびラベル制限の設定
ユーザー定義プロジェクトで、ターゲット収集ごとに受け入れ可能なサンプル数を制限できます。収集されたラベルの数、ラベル名の長さ、およびラベル値の長さを制限することもできます。
サンプルまたはラベルの制限を設定している場合、制限に達した後にそのターゲット収集についての追加のサンプルデータは取得されません。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
enforcedSampleLimit設定をdata/config.yamlに追加し、ユーザー定義プロジェクトのターゲットの収集ごとに受け入れ可能なサンプルの数を制限できます。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: enforcedSampleLimit: 50000 1- 1
- このパラメーターが指定されている場合は、値が必要です。この
enforcedSampleLimitの例では、ユーザー定義プロジェクトのターゲット収集ごとに受け入れ可能なサンプル数を 50,000 に制限します。
enforcedLabelLimit、enforcedLabelNameLengthLimit、およびenforcedLabelValueLengthLimit設定をdata/config.yamlに追加し、収集されるラベルの数、ラベル名の長さ、およびユーザー定義プロジェクトでのラベル値の長さを制限します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: enforcedLabelLimit: 500 1 enforcedLabelNameLengthLimit: 50 2 enforcedLabelValueLengthLimit: 600 3変更を適用するためにファイルを保存します。制限は自動的に適用されます。
警告変更が
user-workload-monitoring-configConfigMapオブジェクトに保存されると、openshift-user-workload-monitoringプロジェクトの Pod および他のリソースは再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
第4章 外部 Alertmanager インスタンスの設定
Red Hat OpenShift Service on AWS モニタリングスタックには、Prometheus からアラートをルーティングするローカル Alertmanager インスタンスが含まれています。外部 Alertmanager インスタンスを追加して、ユーザー定義プロジェクトのアラートをルーティングできます。
複数のクラスターに同じ外部 Alertmanager 設定を追加し、クラスターごとにローカルインスタンスを無効にする場合には、単一の外部 Alertmanager インスタンスを使用して複数のクラスターのアラートルーティングを管理できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-config設定マップを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
-
data/config.yaml/の下に<component>/additionalAlertmanagerConfigs:セクションを追加します。 このセクションに別の Alertmanager 設定の詳細情報を追加します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: additionalAlertmanagerConfigs: - <alertmanager_specification><component>には、サポート対象の外部 Alertmanager コンポーネント (prometheusまたはthanosRuler)2 つの内、いずれかに置き換えます。<alertmanager_specification>は、追加の Alertmanager インスタンスの認証およびその他の設定の詳細を置き換えます。現時点で、サポートされている認証方法はベアラートークン (bearerToken) およびクライアント TLS(tlsConfig) です。以下の設定マップは、ベアラートークンおよびクライアント TLS 認証を指定した Thanos Ruler を使用して追加の Alertmanager を設定します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: additionalAlertmanagerConfigs: - scheme: https pathPrefix: / timeout: "30s" apiVersion: v1 bearerToken: name: alertmanager-bearer-token key: token tlsConfig: key: name: alertmanager-tls key: tls.key cert: name: alertmanager-tls key: tls.crt ca: name: alertmanager-tls key: tls.ca staticConfigs: - external-alertmanager1-remote.com - external-alertmanager1-remote2.com
-
ファイルを保存して、変更を
ConfigMapオブジェクトに適用します。新しいコンポーネントの配置設定が自動的に適用されます。 -
ファイルを保存して、変更を
ConfigMapオブジェクトに適用します。新しいコンポーネントの配置設定が自動的に適用されます。
第5章 Alertmanager のシークレットの設定
Red Hat OpenShift Service on AWS モニタリングスタックには、Prometheus からエンドポイントレシーバーにアラートをルーティングする Alertmanager が含まれています。Alertmanager がアラートを送信できるようにレシーバーで認証する必要がある場合は、レシーバーの認証認証情報を含むシークレットを使用するように Alertmanager を設定できます。
たとえば、シークレットを使用して、プライベート認証局 (CA) によって発行された証明書を必要とするエンドポイント受信者を認証するように Alertmanager を設定できます。また、基本 HTTP 認証用のパスワードファイルを必要とする受信者で認証するためにシークレットを使用するように Alertmanager を設定することもできます。いずれの場合も、認証の詳細は ConfigMap オブジェクトではなく Secret オブジェクトに含まれています。
5.1. Alertmanager 設定へのシークレットの追加
openshift-user-workload-monitoring プロジェクトの user-workload-monitoring-config config map を編集することで、ユーザー定義プロジェクトの Alertmanager 設定にシークレットを追加できます。
config map にシークレットを追加すると、シークレットは、Alertmanager Pod の alertmanager コンテナー内の /etc/alertmanager/secrets/<secret_name> にボリュームとしてマウントされます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
openshift-user-workload-monitoringプロジェクトの Alertmanager で設定するシークレットを作成しました。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-config設定マップを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yaml/alertmanager/secretsの下にSecrets:セクションを次の設定で追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | alertmanager: secrets: 1 - <secret_name_1> 2 - <secret_name_2>次の config map 設定の例では、
test-secretおよびtest-secret-api-tokenという名前の 2 つのSecretオブジェクトを使用するように Alertmanager を設定します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | alertmanager: enabled: true secrets: - test-secret - test-api-receiver-token
-
ファイルを保存して、変更を
ConfigMapオブジェクトに適用します。新しい設定は自動的に適用されます。
5.2. 追加ラベルの時系列 (time series) およびアラートへの割り当て
Prometheus の外部ラベル機能を使用して、カスタムラベルを、Prometheus から出るすべての時系列およびアラートに割り当てることができます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yamlの下にすべてのメトリクスについて追加する必要のあるラベルのマップを定義します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: externalLabels: <key>: <value> 1- 1
<key>: <value>をキーと値のペアのマップに置き換えます。ここで、<key>は新規ラベルの一意の名前で、<value>はその値になります。
警告prometheusまたはprometheus_replicaは予約され、上書きされるため、これらをキー名として使用しないでください。注記openshift-user-workload-monitoringプロジェクトでは、Prometheus はメトリクスを処理し、Thanos Ruler はアラートおよび記録ルールを処理します。user-workload-monitoring-configConfigMapオブジェクトでprometheusのexternalLabelsを設定すると、すべてのルールではなく、メトリクスの外部ラベルのみが設定されます。たとえば、リージョンおよび環境に関するメタデータをすべての時系列およびユーザー定義プロジェクトに関連するアラートに追加するには、以下を使用します。
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: externalLabels: region: eu environment: prod
変更を適用するためにファイルを保存します。新しい設定は自動的に適用されます。
警告変更がモニタリング設定マップに保存されると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
第6章 モニタリングのための Pod トポロジー分散制約の設定
Red Hat OpenShift Service on AWS Pod が複数のアベイラビリティーゾーンにデプロイされている場合、Pod トポロジー分散制約を使用して、Thanos Ruler Pod がネットワークトポロジー全体にどのように分散されるかを制御できます。
Pod トポロジーの分散制約は、ノードがリージョンやリージョン内のゾーンなど、さまざまなインフラストラクチャーレベルに分散している階層トポロジー内で Pod のスケジューリングを制御するのに適しています。さらに、さまざまなゾーンで Pod をスケジュールできるため、特定のシナリオでネットワーク遅延を改善できます。
6.1. Thanos Ruler の Pod トポロジー分散制約の設定
ユーザー定義のモニタリングの場合、Thanos Ruler の Pod トポロジー分散制約を設定して、Pod レプリカがゾーン間でノードにスケジュールされる方法を微調整できます。そうすることで、Thanos Ruler Pod の可用性が高くなり、より効率的に実行されるようになります。これは、ワークロードが異なるデータセンターまたは階層インフラストラクチャーゾーンのノードに分散されるためです。
user-workload-monitoring-config 設定マップで、Thanos Ruler の Pod トポロジー分散制約を設定します。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringnamespaceでuser-workload-monitoring-config設定マップを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yaml/thanosRulerの下に次の設定の値を追加して、Pod トポロジー分散制約を設定します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: topologySpreadConstraints: - maxSkew: 1 1 topologyKey: monitoring 2 whenUnsatisfiable: ScheduleAnyway 3 labelSelector: matchLabels: 4 app.kubernetes.io/name: thanos-ruler- 1
maxSkewの数値を指定します。これは、どの程度まで Pod が不均等に分散されることを許可するか定義します。このフィールドは必須で、値はゼロより大きい必要があります。指定された値は、whenUnsatisfiableに指定した値に応じて異なる効果を持ちます。- 2
topologyKeyにノードラベルのキーを指定します。このフィールドは必須です。このキーと同じ値のラベルを持つノードは、同じトポロジーにあると見なされます。スケジューラーは、バランスのとれた数の Pod を各ドメインに配置しようとします。- 3
whenUnsatisfiableの値を指定します。このフィールドは必須です。利用可能なオプションはDoNotScheduleとScheduleAnywayです。maxSkew値で、ターゲットトポロジー内の一致する Pod の数とグローバル最小値との間で許容される最大差を定義する場合は、DoNotScheduleを指定します。スケジューラーが引き続き Pod をスケジュールするが、スキューを減らす可能性のあるノードにより高い優先度を与える場合は、ScheduleAnywayを指定します。- 4
matchLabelsの値を指定します。この値は、制約の適用対象となる一致する Pod のセットを識別するために使用されます。
ファイルを保存して、変更を自動的に適用します。
警告変更が
user-workload-monitoring-config設定マップに保存されると、openshift-user-workload-monitoringプロジェクトの Pod および他のリソースは再デプロイされる可能性があります。そのプロジェクトで実行中のモニタリングプロセスも再起動する場合があります。
6.2. モニタリングコンポーネントのログレベルの設定
Alertmanager、Prometheus Operator、Prometheus および Thanos Ruler のログレベルを設定できます。
次のログレベルは、user-workload-monitoring-config ConfigMap オブジェクトの関連コンポーネントに適用できます。
-
debug:デバッグ、情報、警告、およびエラーメッセージをログに記録します。 -
info:情報、警告およびエラーメッセージをログに記録します。 -
warn:警告およびエラーメッセージのみをログに記録します。 -
error:エラーメッセージのみをログに記録します。
デフォルトのログレベルは info です。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
ConfigMapオブジェクトを編集します。openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
コンポーネントの
logLevel: <log_level>をdata/config.yamlの下に追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: 1 logLevel: <log_level> 2
変更を適用するためにファイルを保存します。ログレベルの変更を適用する際に、コンポーネントの Pod は自動的に再起動します。
警告変更がモニタリング設定マップに保存されると、関連するプロジェクトの Pod およびその他のリソースが再デプロイされる可能性があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
関連するプロジェクトでデプロイメントまたは Pod 設定を確認し、ログレベルが適用されていることを確認します。以下の例では、
openshift-user-workload-monitoringプロジェクトのprometheus-operatorデプロイメントでログレベルを確認します。$ oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml | grep "log-level"
出力例
- --log-level=debug
コンポーネントの Pod が実行中であることを確認します。以下の例は、
openshift-user-workload-monitoringプロジェクトの Pod のステータスを一覧表示します。$ oc -n openshift-user-workload-monitoring get pods
注記認識されない
logLevel値がConfigMapオブジェクトに含まれる場合は、コンポーネントの Pod が正常に再起動しない可能性があります。
6.3. Prometheus のクエリーログファイルの有効化
エンジンによって実行されたすべてのクエリーをログファイルに書き込むように Prometheus を設定できます。
ログローテーションはサポートされていないため、問題のトラブルシューティングが必要な場合にのみ、この機能を一時的に有効にします。トラブルシューティングが終了したら、ConfigMapオブジェクトに加えた変更を元に戻してクエリーログを無効にし、機能を有効にします。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMap オブジェクトを編集します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yamlの下のprometheusのqueryLogFile: <path>を追加します:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: queryLogFile: <path> 1- 1
- クエリーがログに記録されるファイルへのフルパス。
変更を適用するためにファイルを保存します。
警告monitoring config map への変更を保存すると、関連プロジェクトの Pod およびその他のリソースが再デプロイされる場合があります。該当するプロジェクトの実行中のモニタリングプロセスも再起動する可能性があります。
コンポーネントの Pod が実行中であることを確認します。以下の例は、
openshift-user-workload-monitoringプロジェクトの Pod のステータスを一覧表示します。$ oc -n openshift-user-workload-monitoring get pods
クエリーログを読みます。
$ oc -n openshift-user-workload-monitoring exec prometheus-user-workload-0 -- cat <path>
重要ログに記録されたクエリー情報を確認した後、config map の設定を元に戻します。
第7章 ユーザー定義プロジェクトのモニタリングの無効化
dedicated-admin として、ユーザー定義プロジェクトのモニタリングを無効にすることができます。ユーザーのワークロードモニタリングから個々のプロジェクトを除外することもできます。
7.1. ユーザー定義プロジェクトのモニタリングの無効化
デフォルトでは、ユーザー定義プロジェクトのモニタリングが有効になっています。ユーザー定義プロジェクトのモニタリングにビルトインモニタリングスタックを使用したくない場合は、それを無効にすることができます。
前提条件
手順
- OpenShift Cluster Manager Hybrid Cloud Console からクラスターを選択します。
- Settings タブをクリックします。
Enable user workload monitoring チェックボックスをクリックしてオプションの選択を解除し、Save をクリックします。
ユーザーのワークロードモニタリングは無効になっています。Prometheus、Prometheus Operator、および Thanos Ruler コンポーネントは、
openshift-user-workload-monitoringプロジェクトで停止されます。
7.2. モニタリングからのユーザー定義のプロジェクトを除く
ユーザー定義のプロジェクトは、ユーザーワークロード監視から除外できます。これを実行するには、openshift.io/user-monitoring ラベルに false を指定して、プロジェクトの namespace に追加します。
手順
ラベルをプロジェクト namespace に追加します。
$ oc label namespace my-project 'openshift.io/user-monitoring=false'
モニタリングを再度有効にするには、namespace からラベルを削除します。
$ oc label namespace my-project 'openshift.io/user-monitoring-'
注記プロジェクトにアクティブな監視ターゲットがあった場合、ラベルを追加した後、Prometheus がそれらのスクレイピングを停止するまでに数分かかる場合があります。
第8章 ユーザー定義プロジェクトのアラートルーティングの有効化
Red Hat OpenShift Service on AWS では、dedicated-admin によりユーザー定義プロジェクトのアラートルーティングを有効にすることができます。このプロセスは、以下の 2 つの一般的な手順で設定されています。
- ユーザー定義プロジェクトのアラートルーティングを有効にして、別の Alertmanager インスタンスを使用します。
- ユーザー定義プロジェクトのアラートルーティングを設定するためのパーミッションをユーザーに付与します。
これらの手順を完了すると、開発者およびその他のユーザーはユーザー定義のプロジェクトのカスタムアラートおよびアラートルーティングを設定できます。
8.1. ユーザー定義プロジェクトのアラートルーティングについて
dedicated-admin として、ユーザー定義プロジェクトのアラートルーティングを有効にすることができます。この機能により、alert-routing-edit ロールを持つユーザーがユーザー定義プロジェクトのアラート通知ルーティングおよびレシーバーを設定できます。これらの通知は、ユーザー定義の監視専用の Alertmanager インスタンスによってルーティングされます。
次に、ユーザーはユーザー定義プロジェクトの AlertmanagerConfig オブジェクトを作成または編集して、ユーザー定義のアラートルーティングを作成し、設定できます。
ユーザー定義プロジェクトのアラートルーティングをユーザーが定義すると、ユーザー定義のアラート通知が openshift-user-workload-monitoring namespace の alertmanager-user-workload Pod にルーティングされます。
以下は、ユーザー定義プロジェクトのアラートルーティングの制限です。
-
ユーザー定義のアラートルールの場合、ユーザー定義のルーティングはリソースが定義される namespace に対してスコープ指定されます。たとえば、namespace
ns1のルーティング設定は、同じ namespace のPrometheusRulesリソースにのみ適用されます。 -
namespace がユーザー定義のモニタリングから除外される場合、namespace の
AlertmanagerConfigリソースは、Alertmanager 設定の一部ではなくなります。
8.2. ユーザー定義のアラートルーティング用の個別の Alertmanager インスタンスの有効化
Red Hat OpenShift Service on AWS では、ユーザー定義プロジェクト専用の Alertmanager インスタンスをデプロイして、デフォルトのプラットフォームアラートとは別のユーザー定義アラートを提供できます。このような場合は、必要に応じて、Alertmanager の別のインスタンスを有効にして、ユーザー定義のプロジェクトのみにアラートを送信できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 -
OpenShift CLI (
oc) がインストールされている。
手順
user-workload-monitoring-configConfigMapオブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
data/config.yamlの下にあるalertmanagerセクションにenabled: trueおよびenableAlertmanagerConfig: trueを追加します。apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | alertmanager: enabled: true 1 enableAlertmanagerConfig: true 2- 1
enabledの値をtrueに設定して、クラスター内のユーザー定義プロジェクトの Alertmanager の専用インスタンスを有効にします。値をfalseに設定するか、キーを完全に省略してユーザー定義プロジェクトの Alertmanager を無効にします。この値をfalseに設定した場合や、キーを省略すると、ユーザー定義のアラートはデフォルトのプラットフォーム Alertmanager インスタンスにルーティングされます。- 2
enableAlertmanagerConfig値をtrueに設定して、ユーザーがAlertmanagerConfigオブジェクトで独自のアラートルーティング設定を定義できるようにします。
- 変更を適用するためにファイルを保存します。ユーザー定義プロジェクトの Alertmanager の専用インスタンスが自動的に起動します。
検証
alert-manager-user-workloadPod が実行されていることを確認します。# oc -n openshift-user-workload-monitoring get pods
出力例
NAME READY STATUS RESTARTS AGE alertmanager-user-workload-0 6/6 Running 0 38s alertmanager-user-workload-1 6/6 Running 0 38s ...
8.3. ユーザー定義プロジェクトのアラートルーティングを設定するためのユーザーへのパーミッションの付与
ユーザー定義プロジェクトのアラートルーティングを設定するパーミッションをユーザーに付与できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
user-workload-monitoring-configConfigMapオブジェクトが存在します。このオブジェクトは、クラスターの作成時にデフォルトで作成されます。 - ロールを割り当てるユーザーアカウントがすでに存在している。
-
OpenShift CLI (
oc) がインストールされている。
手順
ユーザー定義プロジェクトのユーザーに
alert-routing-editクラスターロールを割り当てます。$ oc -n <namespace> adm policy add-role-to-user alert-routing-edit <user> 1- 1
<namespace>の場合は、ユーザー定義プロジェクトの代わりに namespace を使用します (例:ns1)。<user>の場合は、ロールを割り当てるアカウントの代わりにユーザー名を使用します。
8.4. 次のステップ
第9章 メトリクスの管理
メトリクスを使用すると、クラスターコンポーネントおよび独自のワークロードのパフォーマンスをモニターできます。
9.1. メトリクスについて
Red Hat OpenShift Service on AWS では、クラスターコンポーネントはサービスエンドポイントで公開されるメトリクスを収集することによりモニターされます。ユーザー定義プロジェクトのメトリクスのコレクションを設定することもできます。メトリクスを使用すると、クラスターコンポーネントおよび独自のワークロードの実行方法をモニターできます。
Prometheus クライアントライブラリーをアプリケーションレベルで使用することで、独自のワークロードに指定するメトリクスを定義できます。
Red Hat OpenShift Service on AWS では、メトリクスは /metrics の正規の名前の下に HTTP サービスエンドポイント経由で公開されます。curl クエリーを http://<endpoint>/metrics に対して実行して、サービスの利用可能なすべてのメトリクスを一覧表示できます。たとえば、prometheus-example-app サンプルアプリケーションへのルートを公開し、以下のコマンドを実行して利用可能なすべてのメトリクスを表示できます。
$ curl http://<example_app_endpoint>/metrics
出力例
# HELP http_requests_total Count of all HTTP requests
# TYPE http_requests_total counter
http_requests_total{code="200",method="get"} 4
http_requests_total{code="404",method="get"} 2
# HELP version Version information about this binary
# TYPE version gauge
version{version="v0.1.0"} 1
9.2. ユーザー定義プロジェクトのメトリクスコレクションの設定
ServiceMonitor リソースを作成して、ユーザー定義プロジェクトのサービスエンドポイントからメトリクスを収集できます。これは、アプリケーションが Prometheus クライアントライブラリーを使用してメトリクスを /metrics の正規の名前に公開していることを前提としています。
このセクションでは、ユーザー定義のプロジェクトでサンプルサービスをデプロイし、次にサービスのモニター方法を定義する ServiceMonitor リソースを作成する方法を説明します。
9.2.1. サンプルサービスのデプロイ
ユーザー定義のプロジェクトでサービスのモニタリングをテストするには、サンプルサービスをデプロイできます。
手順
-
サービス設定の YAML ファイルを作成します。この例では、
prometheus-example-app.yamlという名前です。 以下のデプロイメントおよびサービス設定の詳細をファイルに追加します。
apiVersion: v1 kind: Namespace metadata: name: ns1 --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: replicas: 1 selector: matchLabels: app: prometheus-example-app template: metadata: labels: app: prometheus-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.1 imagePullPolicy: IfNotPresent name: prometheus-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-example-app type: ClusterIPこの設定は、
prometheus-example-appという名前のサービスをユーザー定義のns1プロジェクトにデプロイします。このサービスは、カスタムversionメトリクスを公開します。設定をクラスターに適用します。
$ oc apply -f prometheus-example-app.yaml
サービスをデプロイするには多少時間がかかります。
Pod が実行中であることを確認できます。
$ oc -n ns1 get pod
出力例
NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m
9.2.2. サービスのモニター方法の指定
サービスが公開するメトリクスを使用するには、Red Hat OpenShift Service on AWS を、/metrics エンドポイントからメトリクスを収集できるように設定する必要があります。これは、サービスのモニターリング方法を指定する ServiceMonitor カスタムリソース定義、または Pod のモニターリング方法を指定する PodMonitor CRD を使用して実行できます。前者の場合は Service オブジェクトが必要ですが、後者の場合は不要です。これにより、Prometheus は Pod によって公開されるメトリクスエンドポイントからメトリクスを直接収集することができます。
この手順では、ユーザー定義プロジェクトでサービスの ServiceMonitor リソースを作成する方法を説明します。
前提条件
-
dedicated-adminロールまたはmonitoring-editロールを持つユーザーとしてクラスターにアクセスできる。 この例では、
prometheus-example-appサンプルサービスをns1プロジェクトにデプロイしている。注記prometheus-example-appサンプルサービスは TLS 認証をサポートしません。
手順
-
ServiceMonitorリソース設定の YAML ファイルを作成します。この例では、ファイルはexample-app-service-monitor.yamlという名前です。 以下の
ServiceMonitorリソース設定の詳細を追加します。apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-example-monitor name: prometheus-example-monitor namespace: ns1 spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-example-appこれは、
prometheus-example-appサンプルサービスによって公開されるメトリクスを収集するServiceMonitorリソースを定義します。これにはversionメトリクスが含まれます。注記ユーザー定義の namespace の
ServiceMonitorリソースは、同じ namespace のサービスのみを検出できます。つまり、ServiceMonitorリソースのnamespaceSelectorフィールドは常に無視されます。設定をクラスターに適用します。
$ oc apply -f example-app-service-monitor.yaml
ServiceMonitorをデプロイするのに多少時間がかかります。ServiceMonitorリソースが実行中であることを確認できます。$ oc -n ns1 get servicemonitor
出力例
NAME AGE prometheus-example-monitor 81m
9.3. メトリクスのクエリー
Red Hat OpenShift Service on AWS モニタリングダッシュボードを使用すると、Prometheus Query Language (PromQL) クエリーを実行して、プロット上に視覚化されたメトリクスを調べることができます。この機能により、クラスターの状態と、モニターしているユーザー定義のワークロードに関する情報が提供されます。
dedicated-admin として、ユーザー定義プロジェクトに関するメトリクスに対して、一度に 1 つ以上の namespace をクエリーできます。
開発者として、メトリクスのクエリー時にプロジェクト名を指定する必要があります。選択したプロジェクトのメトリックを表示するには、必要な権限が必要です。
9.3.1. クラスター管理者としてのすべてのプロジェクトのメトリックのクエリー
dedicated-admin またはすべてのプロジェクトの表示パーミッションを持つユーザーとして、メトリクス UI ですべてのデフォルト Red Hat OpenShift Service on AWS およびユーザー定義プロジェクトのメトリクスにアクセスできます。
専任の管理者のみが、Red Hat OpenShift Service on AWS モニターリングで提供されるサードパーティーの UI にアクセスできます。
前提条件
-
dedicated-adminロールまたはすべてのプロジェクトの表示パーミッションを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
- Red Hat OpenShift Service on AWS Web コンソールの Administrator パースペクティブから、Observe → Metrics を選択します。
1 つ以上のクエリーを追加するには、次のいずれかを実行します。
オプション 説明 カスタムクエリーを作成します。
Prometheus Query Language (PromQL) クエリーを Expression フィールドに追加します。
PromQL 式を入力すると、オートコンプリートの提案がドロップダウンリストに表示されます。これらの提案には、関数、メトリック、ラベル、および時間トークンが含まれます。キーボードの矢印を使用して提案された項目のいずれかを選択し、Enter を押して項目を式に追加できます。また、マウスポインターを推奨項目の上に移動して、その項目の簡単な説明を表示することもできます。
複数のクエリーを追加します。
クエリーの追加 を選択します。
既存のクエリーを複製します。
オプションメニューを選択します
クエリーの横にある Duplicate query を選択します。
クエリーの実行を無効にします。
オプションメニューを選択します
クエリーの横にある Disable query を選択します。
作成したクエリーを実行するには、Run queries を選択します。クエリーからのメトリックはプロットで可視化されます。クエリーが無効な場合は、UI にエラーメッセージが表示されます。
注記大量のデータで動作するクエリーは、時系列グラフの描画時にタイムアウトするか、ブラウザーをオーバーロードする可能性があります。これを回避するには、Hide graph を選択し、メトリックテーブルのみを使用してクエリーを調整します。次に、使用できるクエリーを確認した後に、グラフを描画できるようにプロットを有効にします。
注記デフォルトでは、クエリーテーブルに、すべてのメトリクスとその現在の値を一覧表示する拡張ビューが表示されます。˅ を選択すると、クエリーの拡張ビューを最小にすることができます。
- オプション: ページ URL には、実行したクエリーが含まれます。このクエリーのセットを再度使用できるようにするには、この URL を保存します。
視覚化されたメトリクスを調べます。最初に、有効な全クエリーの全メトリクスがプロットに表示されます。次のいずれかを実行して、表示するメトリクスを選択できます。
オプション 説明 クエリーからすべてのメトリクスを非表示にします。
オプションメニューをクリックします
クエリーを選択し、Hide all series をクリックします。
特定のメトリックを非表示にします。
クエリーテーブルに移動し、メトリック名の近くにある色付きの四角形をクリックします。
プロットを拡大し、時間範囲を変更します。
次のいずれかになります。
- プロットを水平にクリックし、ドラッグして、時間範囲を視覚的に選択します。
- 左上隅のメニューを使用して、時間範囲を選択します。
時間範囲をリセットします。
Reset zoom を選択します。
特定の時点でのすべてのクエリーの出力を表示します。
その時点でプロット上にマウスカーソルを置きます。クエリーの出力はポップアップに表示されます。
プロットを非表示にします。
Hide graph を選択します。
関連情報
- PromQL クエリーの作成に関する詳細は、Prometheus クエリーについてのドキュメント を参照してください。
9.3.2. 開発者が行うユーザー定義プロジェクトのメトリクスのクエリー
ユーザー定義のプロジェクトのメトリックには、開発者またはプロジェクトの表示パーミッションを持つユーザーとしてアクセスできます。
Developer パースペクティブには、選択したプロジェクトの事前に定義された CPU、メモリー、帯域幅、およびネットワークパケットのクエリーが含まれます。また、プロジェクトの CPU、メモリー、帯域幅、ネットワークパケット、およびアプリケーションメトリックについてカスタム Prometheus Query Language (PromQL) クエリーを実行することもできます。
開発者は Developer パースペクティブのみを使用でき、Administrator パースペクティブは使用できません。開発者は、1 度に 1 つのプロジェクトのメトリクスのみをクエリーできます。開発者は Red Hat OpenShift Service on AWS モニターリングで提供されるサードパーティーの UI にアクセスできません。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示パーミッションを持つユーザーとしてクラスターへのアクセスがある。
- ユーザー定義プロジェクトのモニタリングを有効にしている。
- ユーザー定義プロジェクトにサービスをデプロイしている。
-
サービスのモニター方法を定義するために、サービスの
ServiceMonitorカスタムリソース定義 (CRD) を作成している。
手順
- Red Hat OpenShift Service on AWS Web コンソールの Developer パースペクティブから、Observe → Metrics を選択します。
- Project: 一覧でメトリックで表示するプロジェクトを選択します。
Select query 一覧からクエリーを選択するか、または Show PromQL を選択して、選択したクエリーに基づいてカスタム PromQL クエリーを作成します。クエリーからのメトリックはプロットで可視化されます。
注記Developer パースペクティブでは、1 度に 1 つのクエリーのみを実行できます。
次のいずれかを実行して、視覚化されたメトリクスを調べます。
オプション 説明 プロットを拡大し、時間範囲を変更します。
次のいずれかになります。
- プロットを水平にクリックし、ドラッグして、時間範囲を視覚的に選択します。
- 左上隅のメニューを使用して、時間範囲を選択します。
時間範囲をリセットします。
Reset zoom を選択します。
特定の時点でのすべてのクエリーの出力を表示します。
その時点でプロット上にマウスカーソルを置きます。クエリーの出力はポップアップに表示されます。
関連情報
- PromQL クエリーの作成に関する詳細は、Prometheus クエリーについてのドキュメント を参照してください。
9.4. メトリクスターゲットに関する詳細情報の取得を参照してください。
Red Hat OpenShift Service on AWS Web コンソールの Administrator パースペクティブでは、Metrics Targets ページを使用して、現在スクレイピングの対象となっているエンドポイントを表示、検索、およびフィルターリングできます。これは、問題の特定とトラブルシューティングに役立ちます。たとえば、ターゲットエンドポイントの現在のステータスを表示して、Red Hat OpenShift Service on AWS モニタリングがターゲットコンポーネントからメトリクスを取得できないのはいつなのかを確認できます。
Metrics targets ページには、ユーザー定義プロジェクトのターゲットが表示されます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
Administrator パースペクティブで、Observe → Targets を選択します。Metrics targets ページが開き、メトリクス用にスクレイピングされているすべてのサービスエンドポイントターゲットのリストが表示されます。
このページには、デフォルトの Red Hat OpenShift Service on AWS およびユーザー定義プロジェクトのターゲットの詳細が表示されます。このページには、ターゲットごとに以下の情報が一覧表示されます。
- スクレイピングされるサービスエンドポイント URL
- モニター対象の ServiceMonitor コンポーネント
- ターゲットの アップ または ダウン ステータス
- Namespace
- 最後のスクレイプ時間
- 最後のスクレイピングの継続期間
オプション: メトリクスターゲットのリストは長くなる場合があります。特定のターゲットを見つけるには、次のいずれかを実行します。
オプション 説明 ステータスとソースによってターゲットをフィルタリングします。
Filter リストでフィルターを選択します。
以下のフィルターリングオプションが利用できます。
ステータス フィルター:
- Up.ターゲットは現在 up で、メトリクスに対してアクティブにスクレイピングされています。
- Down.ターゲットは現在 down しており、メトリクス用にスクレイピングされていません。
Source フィルター:
- Platform。プラットフォームレベルのターゲットは、デフォルトの Red Hat OpenShift Service on AWS プロジェクトにのみ該当します。これらのプロジェクトは、Red Hat OpenShift Service on AWS のコア機能を提供します。
- User。ユーザーターゲットは、ユーザー定義プロジェクトに関連します。これらのプロジェクトはユーザーが作成したもので、カスタマイズすることができます。
名前またはラベルでターゲットを検索します。
検索ボックスの横にある Text または Label フィールドに検索語を入力します。
ターゲットを並べ替えます。
Endpoint Status、Namespace、Last Scrape、および Scrape Duration 列ヘッダーの 1 つ以上をクリックします。
ターゲットの Endpoint 列の URL をクリックし、Target details ページに移動します。このページには、次のようなターゲットに関する情報が表示されます。
- メトリクスのためにスクレイピングされているエンドポイント URL
- 現在のターゲットのステータス (Up または Down)
- namespace へのリンク
- ServiceMonitor の詳細へのリンク
- ターゲットに割り当てられたラベル
- ターゲットがメトリクス用にスクレイピングされた直近の時間
第10章 アラートの管理
Red Hat OpenShift Service on AWS 4 では、アラート UI を使用して、アラート、サイレンス、およびアラートルールを管理できます。
- アラートルール。アラートルールには、クラスター内の特定の状態を示す一連の条件が含まれます。アラートは、これらの条件が true の場合にトリガーされます。アラートルールには、アラートのルーティング方法を定義する重大度を割り当てることができます。
- アラート。アラートは、アラートルールで定義された条件が true の場合に発生します。アラートは、Red Hat OpenShift Service on AWS クラスター内で一連の状況が明らかであることを通知します。
- サイレンス。サイレンスをアラートに適用し、アラートの条件が true の場合に通知が送信されることを防ぐことができます。初期通知後はアラートをミュートにして、根本的な問題の解決に取り組むことができます。
アラート UI で利用可能なアラート、サイレンス、およびアラートルールは、アクセス可能なプロジェクトに関連付けられます。たとえば、cluster-admin ロールを持つユーザーとしてログインしている場合は、すべてのアラート、サイレント、およびアラートルールにアクセスできます。
管理者以外のユーザーは、次のユーザーロールが割り当てられていれば、アラートを作成して無効にできます。
-
Alertmanager へのアクセスを許可する
cluster-monitoring-viewクラスターロール。 -
monitoring-alertmanager-editロール。これにより、Web コンソールの Administrator パースペクティブでアラートを作成して無効にできます。 -
monitoring-rules-editクラスターロール。これにより、Web コンソールの Developer パースペクティブでアラートを作成して無効にできます。
10.1. Administrator および Developer パースペクティブでのアラート UI へのアクセス
アラート UI には、Red Hat OpenShift Service on AWS Web コンソールの管理者パースペクティブおよび開発者パースペクティブからアクセスできます。
- Administrator パースペクティブで、Observe → Alerting を選択します。このパースペクティブのアラート UI の主なページには、Alerts、Silences、および Alerting Rules という 3 つのページがあります。
- Developer パースペクティブで、Observe → <project_name> → Alerts を選択します。このパースペクティブのアラートでは、サイレンスおよびアラートルールはすべて Alerts ページで管理されます。Alerts ページに表示される結果は、選択されたプロジェクトに固有のものです。
Developerパースペクティブでは、Project: 一覧でアクセスできる Red Hat OpenShift Service on AWS のコアプロジェクトおよびユーザー定義プロジェクトを選択できます。ただし、クラスター管理者としてログインしていない場合、コア Red Hat OpenShift Service on AWS プロジェクトに関連するアラート、サイレンスよびアラートルールは表示されません。
10.2. アラート、サイレンスおよびアラートルールの検索およびフィルター
アラート UI に表示されるアラート、サイレンス、およびアラートルールをフィルターできます。このセクションでは、利用可能なフィルターオプションのそれぞれについて説明します。
アラートフィルターについて
管理者 パースペクティブでは、アラート UI の アラート ページに、デフォルトの Red Hat OpenShift Service on AWS およびユーザー定義プロジェクトに関連するアラートの詳細が表示されます。このページには、各アラートの重大度、状態、およびソースの概要が含まれます。アラートが現在の状態に切り替わった時間も表示されます。
アラートの状態、重大度、およびソースでフィルターできます。デフォルトでは、Firing の Platform アラートのみが表示されます。以下では、それぞれのアラートフィルターオプションについて説明します。
Alert State フィルター:
-
Firing。アラート条件が true で、オプションの
forの期間を経過しているためにアラートが実行されます。アラートは、条件が true である限り継続して実行されます。 - Pending。アラートはアクティブですが、アラート実行前のアラートルールに指定される期間待機します。
- Silenced。アラートは定義された期間についてサイレンスにされるようになりました。定義するラベルセレクターのセットに基づいてアラートを一時的にミュートします。一覧表示される値または正規表現のすべてに一致するアラートについては通知は送信されません。
-
Firing。アラート条件が true で、オプションの
Severity フィルター:
- Critical。アラートをトリガーした状態は重大な影響を与える可能性があります。このアラートには、実行時に早急な対応が必要となり、通常は個人または緊急対策チーム (Critical Response Team) に送信先が設定されます。
- Warning。アラートは、問題の発生を防ぐために注意が必要になる可能性のある問題についての警告通知を提供します。通常、警告は早急な対応を要さないレビュー用にチケットシステムにルート指定されます。
- Info。アラートは情報提供のみを目的として提供されます。
- None。アラートには重大度が定義されていません。
- また、ユーザー定義プロジェクトに関連するアラートの重大度の定義を作成することもできます。
Source フィルター:
- Platform。プラットフォームレベルのアラートは、デフォルトの Red Hat OpenShift Service on AWS プロジェクトにのみ該当します。これらのプロジェクトは、Red Hat OpenShift Service on AWS のコア機能を提供します。
- User。ユーザーアラートはユーザー定義のプロジェクトに関連します。これらのアラートはユーザーによって作成され、カスタマイズ可能です。ユーザー定義のワークロードモニタリングはインストール後に有効にでき、独自のワークロードへの可観測性を提供します。
サイレンスフィルターについて
Administrator パースペクティブでは、アラート UI の Silences ページに、デフォルトの Red Hat OpenShift Service on AWS およびユーザー定義プロジェクトのアラートに適用されるサイレンスに関する詳細が表示されます。このページには、それぞれのサイレンスの状態の概要とサイレンスが終了する時間の概要が含まれます。
サイレンス状態でフィルターを実行できます。デフォルトでは、Active および Pending のサイレンスのみが表示されます。以下は、それぞれのサイレンス状態のフィルターオプションについて説明しています。
Silence State フィルター:
- Active。サイレンスはアクティブで、アラートはサイレンスが期限切れになるまでミュートされます。
- Pending。サイレンスがスケジュールされており、アクティブな状態ではありません。
- Expiredアラートの条件が true の場合は、サイレンスが期限切れになり、通知が送信されます。
アラートルールフィルターについて
管理者 パースペクティブでは、アラート UI の アラートルール ページに、デフォルトの Red Hat OpenShift Service on AWS およびユーザー定義プロジェクトに関連するアラートルールの詳細が表示されます。このページには、各アラートルールの状態、重大度およびソースの概要が含まれます。
アラート状態、重大度、およびソースを使用してアラートルールをフィルターできます。デフォルトでは、プラットフォームのアラートルールのみが表示されます。以下では、それぞれのアラートルールのフィルターオプションを説明します。
Alert State フィルター:
-
Firing。アラート条件が true で、オプションの
forの期間を経過しているためにアラートが実行されます。アラートは、条件が true である限り継続して実行されます。 - Pending。アラートはアクティブですが、アラート実行前のアラートルールに指定される期間待機します。
- Silenced。アラートは定義された期間についてサイレンスにされるようになりました。定義するラベルセレクターのセットに基づいてアラートを一時的にミュートします。一覧表示される値または正規表現のすべてに一致するアラートについては通知は送信されません。
- Not Firingアラートは実行されません。
-
Firing。アラート条件が true で、オプションの
Severity フィルター:
- Critical。アラートルールで定義される状態は重大な影響を与える可能性があります。true の場合は、この状態に早急な対応が必要です。通常、ルールに関連するアラートは個別または緊急対策チーム (Critical Response Team) に送信先が設定されます。
- Warning。アラートルールで定義される状態は、問題の発生を防ぐために注意を要する場合があります。通常、ルールに関連するアラートは早急な対応を要さないレビュー用にチケットシステムにルート指定されます。
- Info。アラートルールは情報アラートのみを提供します。
- None。アラートルールには重大度が定義されていません。
- ユーザー定義プロジェクトに関連するアラートルールのカスタム重大度定義を作成することもできます。
Source フィルター:
- Platform。プラットフォームレベルのアラートルールは、デフォルトの Red Hat OpenShift Service on AWS プロジェクトにのみ該当します。これらのプロジェクトは、Red Hat OpenShift Service on AWS のコア機能を提供します。
- User。ユーザー定義のワークロードアラートルールは、ユーザー定義プロジェクトに関連します。これらのアラートルールはユーザーによって作成され、カスタマイズ可能です。ユーザー定義のワークロードモニタリングはインストール後に有効にでき、独自のワークロードへの可観測性を提供します。
Developer パースペクティブでのアラート、サイレンスおよびアラートルールの検索およびフィルター
Developer パースペクティブのアラート UI の Alerts ページでは、選択されたプロジェクトに関連するアラートとサイレンスを組み合わせたビューを提供します。規定するアラートルールへのリンクが表示されるアラートごとに提供されます。
このビューでは、アラートの状態と重大度でフィルターを実行できます。デフォルトで、プロジェクトへのアクセスパーミッションがある場合は、選択されたプロジェクトのすべてのアラートが表示されます。これらのフィルターは Administrator パースペクティブについて記載されているフィルターと同じです。
10.3. アラート、サイレンスおよびアラートルールについての情報の取得
アラート UI は、アラートおよびそれらを規定するアラートルールおよびサイレンスについての詳細情報を提供します。
前提条件
- 開発者として、またはメトリクスで表示しているプロジェクトの表示パーミッションを持つユーザーとしてクラスターへのアクセスがある。
手順
Administrator パースペクティブでアラートの情報を取得するには、以下を実行します。
- Red Hat OpenShift Service on AWS Web コンソールを開き、Observe → Alerting → Alerts ページに移動します。
- オプション: 検索一覧で Name フィールドを使用し、アラートを名前で検索します。
- オプション: Filter 一覧でフィルターを選択し、アラートを状態、重大度およびソースでフィルターします。
- オプション: 1 つ以上の Name、Severity、State、および Source 列ヘッダーをクリックし、アラートを並べ替えます。
Alert Details ページに移動するためにアラートの名前を選択します。このページには、アラートの時系列データを示すグラフが含まれます。また、以下を含むアラートについての情報も含まれます。
- アラートの説明
- アラートに関連付けられたメッセージ
- アラートに割り当てられるラベル
- アラートを規定するアラートルールへのリンク
- アラートが存在する場合のアラートのサイレンス
Administrator パースペクティブでサイレンスの情報を取得するには、以下を実行します。
- Observe → Alerting → Silences ページに移動します。
- オプション: Search by name フィールドを使用し、サイレンスを名前でフィルターします。
- オプション: Filter 一覧でフィルターを選択し、サイレンスをフィルターします。デフォルトでは、Active および Pending フィルターが適用されます。
- オプション: 1 つ以上の Name、Firing Alerts、および State 列ヘッダーをクリックしてサイレンスを並べ替えます。
Silence Details ページに移動するサイレンスの名前を選択します。このページには、以下の詳細が含まれます。
- アラート仕様
- 開始時間
- 終了時間
- サイレンス状態
- 発生するアラートの数および一覧
Administrator パースペクティブでアラートルールの情報を取得するには、以下を実行します。
- Observe → Alerting → Alerting Rules ページに移動します。
- オプション: Filter 一覧でフィルターを選択し、アラートルールを状態、重大度およびソースでフィルターします。
- オプション: 1 つ以上の Name、Severity、Alert State、および Source 列ヘッダーをクリックし、アラートルールを並べ替えます。
アラートルールの名前を選択し、Alerting Rule Details ページに移動します。このページには、アラートルールに関する以下の情報が含まれます。
- アラートルール名、重大度、および説明
- アラートを発生させるための条件を定義する式
- アラートを発生させるための条件が true である期間
- アラートルールに規定される各アラートのグラフ。アラートを発生させる際に使用する値が表示されます。
- アラートルールで規定されるすべてのアラートについての表
Developer パースペクティブでアラート、サイレンス、およびアラートルールの情報を取得するには、以下を実行します。
- Observe → <project_name> → Alerts ページに移動します。
アラート、サイレンス、またはアラートルールの詳細を表示します。
- Alert Details を表示するには、アラート名の左側で > を選択し、一覧でアラートを選択します。
Silence Details を表示するには、Alert Details ページの Silenced By セクションでサイレンスを選択します。Silence Details ページには、以下の情報が含まれます。
- アラート仕様
- 開始時間
- 終了時間
- サイレンス状態
- 発生するアラートの数および一覧
-
Alerting Rule Details を表示するには、Alerts ページのアラートの右側にある
メニューの View Alerting Rule を選択します。
選択したプロジェクトに関連するアラート、サイレンスおよびアラートルールのみが Developer パースペクティブに表示されます。
関連情報
- 特定の Red Hat OpenShift Service on AWS モニタリングアラートをトリガーする問題の診断と解決に役立つ Cluster Monitoring Operator Runbook を参照してください。
10.4. サイレンスの管理
アラートの発生時にアラートに関する通知の受信を停止するためにサイレンスを作成できます。根本的な問題を解決する際に、初回の通知後にアラートをサイレンスにすることが役に立つ場合があります。
サイレンスの作成時に、サイレンスをすぐにアクティブにするか、または後にアクティブにするかを指定する必要があります。また、サイレンスの有効期限を設定する必要もあります。
既存のサイレンスを表示し、編集し、期限切れにすることができます。
10.4.1. アラートをサイレンスにする
特定のアラート、または定義する仕様に一致するアラートのいずれかをサイレンスにすることができます。
前提条件
-
クラスター管理者の場合は、
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできます。 管理者以外のユーザーの場合は、次のユーザーロールを持つユーザーとしてクラスターにアクセスできます。
-
Alertmanager へのアクセスを許可する
cluster-monitoring-viewクラスターロール。 -
monitoring-alertmanager-editロール。これにより、Web コンソールの Administrator パースペクティブでアラートを作成して無効にできます。 -
monitoring-rules-editクラスターロール。これにより、Web コンソールの Developer パースペクティブでアラートを作成して無効にできます。
-
Alertmanager へのアクセスを許可する
手順
特定のアラートをサイレンスにするには、以下を実行します。
Administrator パースペクティブで、以下を行います。
- Red Hat OpenShift Service on AWS Web コンソールの Observe → Alerting → Alerts ページに移動します。
-
サイレンスにする必要のあるアラートについて、右側の列で
を選択し、Silence Alert を選択します。Silence Alert フォームは、選択したアラートの事前に設定された仕様と共に表示されます。
- オプション: サイレンスを変更します。
- サイレンスを作成する前にコメントを追加する必要があります。
- サイレンスを作成するには、Silence を選択します。
Developer パースペクティブ:
- Red Hat OpenShift Service on AWS Web コンソールの Observe → <project_name> → Alerts ページに移動します。
- アラート名の左側にある > を選択して、アラートの詳細を展開します。拡張されたビューでアラートの名前を選択し、アラートの Alert Details ページを開きます。
- Silence Alert を選択します。Silence Alert フォームが、選択したアラートの事前に設定された仕様と共に表示されます。
- オプション: サイレンスを変更します。
- サイレンスを作成する前にコメントを追加する必要があります。
- サイレンスを作成するには、Silence を選択します。
Administrator パースペクティブにアラート仕様を作成してアラートのセットをサイレンスにするには、以下を実行します。
- Red Hat OpenShift Service on AWS Web コンソールの Observe → Alerting → Silences ページに移動します。
- Create Silence を選択します。
- Create Silence フォームで、アラートのスケジュール、期間、およびラベルの詳細を設定します。また、サイレンスのコメントを追加する必要もあります。
- 直前の手順で入力したラベルセクターに一致するアラートのサイレンスを作成するには、Silence を選択します。
10.4.2. サイレンスの編集
サイレンスは編集することができます。 これにより、既存のサイレンスが期限切れとなり、変更された設定で新規のサイレンスが作成されます。
手順
Administrator パースペクティブでサイレンスを編集するには、以下を実行します。
- Observe → Alerting → Silences ページに移動します。
変更するサイレンスに対して、最後の列の
を選択し、Edit silence を選択します。
または、サイレンスに対して Silence Details ページで Actions → Edit Silence を選択できます。
- Edit Silence ページで変更を入力し、Silence を選択します。これにより、既存のサイレンスが期限切れとなり、選択された設定でサイレンスが作成されます。
Developer パースペクティブでサイレンスを編集するには、以下を実行します。
- Observe → <project_name> → Alerts ページに移動します。
- アラート名の左側にある > を選択して、アラートの詳細を展開します。拡張されたビューでアラートの名前を選択し、アラートの Alert Details ページを開きます。
- そのページの Silenced By セクションでサイレンスの名前を選択し、サイレンスの Silence Details ページに移動します。
- Silence Details ページに移動するサイレンスの名前を選択します。
- サイレンスについて、Silence Details ページで Actions → Edit Silence を選択します。
- Edit Silence ページで変更を入力し、Silence を選択します。これにより、既存のサイレンスが期限切れとなり、選択された設定でサイレンスが作成されます。
10.4.3. 有効期限切れにするサイレンス
サイレンスを有効期限切れにすることができます。サイレンスはいったん期限切れになると、永久に無効になります。
期限切れのサイレンスのアラートを削除することはできません。120 時間以上経過した期限切れのサイレンスはガベージコレクションされます。
手順
Administrator パースペクティブでサイレンスを期限切れにするには、以下を実行します。
- Observe → Alerting → Silences ページに移動します。
変更するサイレンスについて、最後の列の
を選択し、Expire silence を選択します。
または、サイレンスの Silence Details ページで Actions → Expire Silence を選択できます。
Developer パースペクティブでサイレンスを期限切れにするには、以下を実行します。
- Observe → <project_name> → Alerts ページに移動します。
- アラート名の左側にある > を選択して、アラートの詳細を展開します。拡張されたビューでアラートの名前を選択し、アラートの Alert Details ページを開きます。
- そのページの Silenced By セクションでサイレンスの名前を選択し、サイレンスの Silence Details ページに移動します。
- Silence Details ページに移動するサイレンスの名前を選択します。
- サイレンスの Silence Details ページで Actions → Expire Silence を選択します。
10.5. ユーザー定義プロジェクトのアラートルールの管理
Red Hat OpenShift Service on AWS モニタリングには、一連のデフォルトのアラートルールが同梱されています。クラスター管理者は、デフォルトのアラートルールを表示できます。
Red Hat OpenShift Service on AWS 4 では、ユーザー定義プロジェクトのアラートルールを作成、表示、編集、および削除できます。
ユーザー定義プロジェクトのアラートルールの管理は、Red Hat OpenShift Service on AWS バージョン 4.11 以降でのみ使用できます。
アラートルールについての考慮事項
- デフォルトのアラートルールは Red Hat OpenShift Service on AWS クラスター専用に使用されます。
- 一部のアラートルールには、複数の意図的に同じ名前が含まれます。それらは同じイベントについてのアラートを送信しますが、それぞれ異なるしきい値、重大度およびそれらの両方が設定されます。
- 抑制 (inhibition) ルールは、高い重大度のアラートが実行される際に実行される低い重大度のアラートの通知を防ぎます。
10.5.1. ユーザー定義プロジェクトのアラートの最適化
アラートルールの作成時に以下の推奨事項を考慮して、独自のプロジェクトのアラートを最適化できます。
- プロジェクト用に作成するアラートルールの数を最小限にします。影響を与える状況を通知するアラートルールを作成します。影響を与えない条件に対して多数のアラートを生成すると、関連するアラートに気づくのがさらに困難になります。
- 原因ではなく現象についてのアラートルールを作成します。根本的な原因に関係なく、状態を通知するアラートルールを作成します。次に、原因を調査できます。アラートルールのそれぞれが特定の原因にのみ関連する場合に、さらに多くのアラートルールが必要になります。そのため、いくつかの原因は見落される可能性があります。
- アラートルールを作成する前にプランニングを行います。重要な現象と、その発生時に実行するアクションを決定します。次に、現象別にアラートルールをビルドします。
- クリアなアラートメッセージングを提供します。アラートメッセージに現象および推奨されるアクションを記載します。
- アラートルールに重大度レベルを含めます。アラートの重大度は、報告される現象が生じた場合に取るべき対応によって異なります。たとえば、現象に個人または緊急対策チーム (Critical Response Team) による早急な対応が必要な場合は、重大アラートをトリガーする必要があります。
アラートルーティングを最適化します。ルールがデフォルトの OpenShift Dedicated メトリクスをクエリーしない場合に、
openshift-user-workload-monitoringプロジェクトの Prometheus インスタンスに直接アラートルールをデプロイします。これにより、アラートルールの待ち時間が短縮され、モニタリングコンポーネントへの負荷が最小限に抑えられます。警告ユーザー定義プロジェクトのデフォルトの Red Hat OpenShift Service on AWS メトリクスは、CPU とメモリーの使用状況、帯域幅統計、およびパケットレート情報に関する情報を提供します。ルールを
openshift-user-workload-monitoringプロジェクトの Prometheus インスタンスに直接ロート指定する場合は、これらのメトリクスをアラートルールに含めることができません。アラートルールの最適化は、ドキュメントを参照し、モニタリング用のアーキテクチャーの全体像を把握している場合にのみ使用してください。
関連情報
- アラートの最適化に関する追加のガイドラインは、Prometheus アラートのドキュメント を参照してください。
10.5.2. ユーザー定義プロジェクトのアラートルールの作成
ユーザー定義のプロジェクトに対してアラートルールを作成できます。これらのアラートルールは、選択したメトリクスの値に基づいてアラートを実行します。
前提条件
- ユーザー定義プロジェクトのモニタリングを有効にしている。
-
アラートルールを作成する必要のある namespace の
monitoring-rules-editクラスターロールを持つユーザーとしてログインしている。 -
OpenShift CLI (
oc) がインストールされている。
手順
-
アラートルールの YAML ファイルを作成します。この例では、
example-app-alerting-rule.yamlという名前です。 アラートルール設定を YAML ファイルに追加します。以下に例を示します。
注記アラートルールの作成時に、同じ名前のルールが別のプロジェクトにある場合に、プロジェクトのラベルがこのアラートルールに対して適用されます。
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: example-alert namespace: ns1 spec: groups: - name: example rules: - alert: VersionAlert expr: version{job="prometheus-example-app"} == 0この設定により、
example-alertという名前のアラートルールが作成されます。アラートルールは、サンプルサービスによって公開されるversionメトリクスが0になるとアラートを実行します。重要ユーザー定義のアラートルールには、独自のプロジェクトおよびクラスターメトリクスのメトリクスを含めることができます。別のユーザー定義プロジェクトのメトリクスを含めることはできません。
たとえば、ユーザー定義プロジェクト
ns1のアラートルールには、ns1からのメトリックと、CPU やメモリーのメトリックなどのクラスターメトリックを含めることができます。ただし、ルールにはns2からのメトリクスを含めることはできません。さらに、
openshift-*コア Red Hat OpenShift Service on AWS プロジェクトのアラートルールを作成することはできません。Red Hat OpenShift Service on AWS モニタリングは、デフォルトで、これらのプロジェクトに一連のアラートルールを提供します。設定ファイルをクラスターに適用します。
$ oc apply -f example-app-alerting-rule.yaml
アラートルールの作成には多少時間がかかります。
10.5.3. プラットフォームメトリクスをクエリーしないアラートルールの待ち時間の短縮
ユーザー定義プロジェクトのアラートルールがデフォルトのクラスターメトリクスをクエリーしない場合は、openshift-user-workload-monitoring プロジェクトの Prometheus インスタンスにルールを直接デプロイできます。これにより、Thanos Ruler が必要でない場合にこれをバイパスすることで、アラートルールの待ち時間が短縮されます。これは、モニタリングコンポーネントの全体的な負荷を最小限に抑えるのに役立ちます。
ユーザー定義プロジェクトのデフォルトの Red Hat OpenShift Service on AWS メトリクスは、CPU とメモリーの使用状況、帯域幅統計、およびパケットレート情報に関する情報を提供します。ルールを openshift-user-workload-monitoring プロジェクトの Prometheus インスタンスに直接デプロイする場合は、これらのメトリクスをアラートルールに含めることができません。このセクションで説明した手順は、ドキュメントを参照し、モニタリング用のアーキテクチャーの全体像を把握している場合にのみ使用してください。
前提条件
- ユーザー定義プロジェクトのモニタリングを有効にしている。
-
アラートルールを作成する必要のある namespace の
monitoring-rules-editクラスターロールを持つユーザーとしてログインしている。 -
OpenShift CLI (
oc) がインストールされている。
手順
-
アラートルールの YAML ファイルを作成します。この例では、
example-app-alerting-rule.yamlという名前です。 キーが
openshift.io/prometheus-rule-evaluation-scopeで、値がleaf-prometheusのラベルが含まれる YAML ファイルにアラートルール設定を追加します。以下に例を示します。apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: example-alert namespace: ns1 labels: openshift.io/prometheus-rule-evaluation-scope: leaf-prometheus spec: groups: - name: example rules: - alert: VersionAlert expr: version{job="prometheus-example-app"} == 0そのラベルがある場合、アラートルールは
openshift-user-workload-monitoringプロジェクトの Prometheus インスタンスにデプロイされます。ラベルが存在しない場合、アラートルールは Theanos Ruler にデプロイされます。設定ファイルをクラスターに適用します。
$ oc apply -f example-app-alerting-rule.yaml
アラートルールの作成には多少時間がかかります。
関連情報
- Red Hat OpenShift Service on AWS 4 モニタリングアーキテクチャーの詳細は、モニタリングの概要 を参照してください。
10.5.4. ユーザー定義プロジェクトのアラートルールへのアクセス
ユーザー定義プロジェクトのアラートルールを一覧表示するには、プロジェクトの monitoring-rules-view クラスターロールが割り当てられている必要があります。
前提条件
- ユーザー定義プロジェクトのモニタリングを有効にしている。
-
プロジェクトの
monitoring-rules-viewクラスターロールを持つユーザーとしてログインしている。 -
OpenShift CLI (
oc) がインストールされている。
手順
<project>でアラートルールを一覧表示するには、以下を実行します。$ oc -n <project> get prometheusrule
アラートルールの設定を一覧表示するには、以下を実行します。
$ oc -n <project> get prometheusrule <rule> -o yaml
10.5.5. 単一ビューでのすべてのプロジェクトのアラートルールの一覧表示
dedicated-admin として、コア Red Hat OpenShift Service on AWS とユーザー定義プロジェクトのアラートルールを 1 つのビューにまとめてリストできます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
- Administrator パースペクティブで、Observe → Alerting → Alerting rules に移動します。
Filter ドロップダウンメニューで、Platform および User ソースを選択します。
注記Platform ソースはデフォルトで選択されます。
10.5.6. ユーザー定義プロジェクトのアラートルールの削除
ユーザー定義プロジェクトのアラートルールを削除できます。
前提条件
- ユーザー定義プロジェクトのモニタリングを有効にしている。
-
アラートルールを作成する必要のある namespace の
monitoring-rules-editクラスターロールを持つユーザーとしてログインしている。 -
OpenShift CLI (
oc) がインストールされている。
手順
<namespace>のルール<foo>を削除するには、以下を実行します。$ oc -n <namespace> delete prometheusrule <foo>
関連情報
- Alertmanager ドキュメント を参照してください。
10.6. 外部システムへの通知の送信
Red Hat OpenShift Service on AWS 4 では、アラートの起動をアラート UI で表示できます。アラートは、デフォルトでは通知システムに送信されるように設定されません。以下のレシーバータイプにアラートを送信するように Red Hat OpenShift Service on AWS を設定できます。
- PagerDuty
- Webhook
- Slack
レシーバーへのアラートのルートを指定することにより、障害が発生する際に適切なチームに通知をタイムリーに送信できます。たとえば、重大なアラートには早急な対応が必要となり、通常は個人または緊急対策チーム (Critical Response Team) に送信先が設定されます。重大ではない警告通知を提供するアラートは、早急な対応を要さないレビュー用にチケットシステムにルート指定される可能性があります。
Watchdog アラートの使用によるアラートが機能することの確認
Red Hat OpenShift Service on AWS モニタリングには、継続的に発生するウォッチドッグアラートが含まれます。Alertmanager は、Watchdog のアラート通知を設定された通知プロバイダーに繰り返し送信します。通常、プロバイダーは Watchdog アラートの受信を停止する際に管理者に通知するように設定されます。このメカニズムは、Alertmanager と通知プロバイダー間の通信に関連する問題を迅速に特定するのに役立ちます。
10.6.1. ユーザー定義プロジェクトのアラートルーティングの作成
alert-routing-edit クラスターロールが付与されている管理者以外のユーザーの場合は、ユーザー定義プロジェクトのアラートルーティングを作成または編集できます。
前提条件
- アラートルーティングがユーザー定義プロジェクトに対して有効になりました。
-
アラートルーティングを作成する必要のあるプロジェクトの
alert-routing-editクラスターロールを持つユーザーとしてログインしている。 -
OpenShift CLI (
oc) がインストールされている。
手順
-
アラートルーティングの YAML ファイルを作成します。この手順の例では、
example-app-alert-routing.yamlという名前のファイルを使用します。 AlertmanagerConfigYAML 定義をファイルに追加します。以下に例を示します。apiVersion: monitoring.coreos.com/v1beta1 kind: AlertmanagerConfig metadata: name: example-routing namespace: ns1 spec: route: receiver: default groupBy: [job] receivers: - name: default webhookConfigs: - url: https://example.org/post注記ユーザー定義のアラートルールの場合、ユーザー定義のルーティングはリソースが定義される namespace に対してスコープ指定されます。たとえば、namespace
ns1のAlertmanagerConfigオブジェクトで定義されるルーティング設定は、同じ namespace のPrometheusRulesリソースにのみ適用されます。- ファイルを保存します。
リソースをクラスターに適用します。
$ oc apply -f example-app-alert-routing.yaml
この設定は Alertmanager Pod に自動的に適用されます。
10.7. ユーザー定義のアラートルーティングの Alertmanager へのカスタム設定の適用
ユーザー定義のアラートルーティング専用の Alertmanager の別のインスタンスを有効にしている場合は、openshift-user-workload-monitoring namespace で alertmanager-user-workload シークレットを編集して Alertmanager のこのインスタンスの設定を上書きできます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
現在アクティブな Alertmanager 設定をファイル
alertmanager.yamlに出力します。$ oc -n openshift-user-workload-monitoring get secret alertmanager-user-workload --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yamlalertmanager.yamlで設定を編集します。route: receiver: Default group_by: - name: Default routes: - matchers: - "service = prometheus-example-monitor" 1 receiver: <receiver> 2 receivers: - name: Default - name: <receiver> # <receiver_configuration>新規設定をファイルで適用します。
$ oc -n openshift-user-workload-monitoring create secret generic alertmanager-user-workload --from-file=alertmanager.yaml --dry-run=client -o=yaml | oc -n openshift-user-workload-monitoring replace secret --filename=-
関連情報
- PagerDuty についての詳細は、PagerDuty の公式サイト を参照してください。
-
service_keyを取得する方法は、PagerDuty Prometheus Integration Guide を参照してください。 - 各種のアラートレシーバー経由でアラートを設定する方法は、Alertmanager configuration を参照してください。
第11章 モニタリングダッシュボードの確認
Red Hat OpenShift Service on AWS は、ユーザー定義プロジェクトの状態を理解するのに役立つモニターリングダッシュボードを提供します。
Administrator パースペクティブを使用して、次の項目を含むコア Red Hat OpenShift Service on AWS コンポーネントのダッシュボードにアクセスします。
- API パフォーマンス
- etcd
- Kubernetes コンピュートリソース
- Kubernetes ネットワークリソース
- Prometheus
- クラスターおよびノードのパフォーマンスに関連する USE メソッドダッシュボード
図11.1 Administrator パースペクティブのダッシュボードの例

Developer パースペクティブを使用して、選択されたプロジェクトの以下のアプリケーションメトリクスを提供する Kubernetes コンピュートリソースダッシュボードにアクセスします。
- CPU usage (CPU の使用率)
- メモリー使用量
- 帯域幅に関する情報
- パケットレート情報
図11.2 Developer パースペクティブのダッシュボードの例

開発者 パースペクティブでは、一度に 1 つのプロジェクトのダッシュボードのみを表示できます。
11.1. クラスター管理者としてのモニタリングダッシュボードの確認
Administrator パースペクティブでは、コア Red Hat OpenShift Service on AWS クラスターコンポーネントに関連するダッシュボードを表示できます。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- Red Hat OpenShift Service on AWS Web コンソールの Administrator パースペクティブで、Observe → Dashboards に移動します。
- Dashboard 一覧でダッシュボードを選択します。etcd や Prometheus ダッシュボードなどの一部のダッシュボードは、選択時に追加のサブメニューを生成します。
必要に応じて、Time Range 一覧でグラフの時間範囲を選択します。
- 事前定義済みの期間を選択します。
時間範囲 一覧で カスタムの時間範囲 を選択して、カスタムの時間範囲を設定します。
- From および To の日付と時間を入力または選択します。
- Save をクリックして、カスタムの時間範囲を保存します。
- オプション: Refresh Interval を選択します。
- 特定の項目についての詳細情報を表示するには、ダッシュボードの各グラフにカーソルを合わせます。
11.2. 開発者が行うモニタリングダッシュボードの確認
Developer パースペクティブでは、選択されたプロジェクトに関連するダッシュボードを表示できます。ダッシュボード情報を表示するには、プロジェクトをモニターするためのアクセスが必要になります。
前提条件
- 開発者またはユーザーとしてクラスターにアクセスできる。
- ダッシュボードを表示するプロジェクトの表示パーミッションがある。
手順
- Red Hat OpenShift Service on AWS Web コンソールの Developer パースペクティブで、Observe → Dashboard に移動します。
- Project: ドロップダウンリストからプロジェクトを選択します。
Dashboard ドロップダウンリストからダッシュボードを選択し、フィルターされたメトリクスを表示します。
注記すべてのダッシュボードは、Kubernetes / Compute Resources / Namespace(Pod) を除く、選択時に追加のサブメニューを生成します。
必要に応じて、Time Range 一覧でグラフの時間範囲を選択します。
- 事前定義済みの期間を選択します。
時間範囲 一覧で カスタムの時間範囲 を選択して、カスタムの時間範囲を設定します。
- From および To の日付と時間を入力または選択します。
- Save をクリックして、カスタムの時間範囲を保存します。
- オプション: Refresh Interval を選択します。
- 特定の項目についての詳細情報を表示するには、ダッシュボードの各グラフにカーソルを合わせます。
11.3. 次のステップ
第12章 サードパーティーのモニタリング API へのアクセス
Red Hat OpenShift Service on AWS 4 では、コマンドラインインターフェイス (CLI) から一部のサードパーティーモニタリングコンポーネントの Web サービス API にアクセスできます。
12.1. サードパーティーのモニタリング Web サービス API へのアクセス
Prometheus、Alertmanager、Thanos Ruler、および Thanos Querier のコマンドラインからサードパーティーの Web サービス API に直接アクセスできます。
以下のコマンド例は、Alertmanager のサービス API レシーバーをクエリーする方法を示しています。この例では、関連付けられたユーザーアカウントがopenshift-monitoring namespace のmonitoring-alertmanager-editロールに対してバインドされていること、およびアカウントにルートを表示する権限があることが必要です。このアクセスは、認証に Bearer Token を使用することのみをサポートします。
$ oc login -u <username> -p <password>
$ host=$(oc -n openshift-monitoring get route alertmanager-main -ojsonpath={.spec.host})$ token=$(oc whoami -t)
$ curl -H "Authorization: Bearer $token" -k "https://$host/api/v2/receivers"
Thanos Ruler および Thanos Querier サービス API にアクセスするには、要求元のアカウントが namespace リソースに対するアクセス許可を get している必要があります。これは、アカウントに cluster-monitoring-view クラスターロールを付与することで実行できます。
12.2. Prometheus のフェデレーションエンドポイントを使用したメトリクスのクエリー
フェデレーションエンドポイントを使用して、クラスター外のネットワーク場所からプラットフォームおよびユーザー定義のメトリクスを収集できます。これを行うには、Red Hat OpenShift Service on AWS を介してクラスターの Prometheus /federate エンドポイントにアクセスします。
メトリクスデータの取得の遅延は、フェデレーションを使用すると発生します。この遅延は、収集されたメトリクスの精度とタイムラインに影響を与えます。
フェデレーションエンドポイントを使用すると、特にフェデレーションエンドポイントを使用して大量のメトリクスデータを取得する場合に、クラスターのパフォーマンスおよびスケーラビリティーを低下させることもできます。これらの問題を回避するには、以下の推奨事項に従ってください。
- フェデレーションエンドポイントを介してすべてのメトリクスデータを取得しようとしないでください。制限された集約されたデータセットを取得する場合にのみクエリーします。たとえば、各要求で 1,000 未満のサンプルを取得すると、パフォーマンスが低下するリスクを最小限に抑えることができます。
- フェデレーションエンドポイントを頻繁にクエリーしないようにします。クエリーを 30 秒ごとに最大 1 つに制限します。
クラスター外に大量のデータを転送する必要がある場合は、代わりにリモート書き込みを使用します。詳細は、リモート書き込みストレージの設定セクションを参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - Red Hat OpenShift Service on AWS ルートのホスト URL を取得しました。
cluster-monitoring-viewクラスターロールを持つユーザーとしてクラスターにアクセスできるか、namespaceリソースのget権限を持つベアラートークンを取得している。注記ベアラートークン認証のみを使用してフェデレーションエンドポイントにアクセスできます。
手順
ベアラートークンを取得します。
$ token=`oc whoami -t`
/federateルートからメトリクスをクエリーします。以下の例では、メトリクスのクエリーupします。$ curl -G -s -k -H "Authorization: Bearer $token" \ 'https://<federation_host>/federate' \ 1 --data-urlencode 'match[]=up'- 1
- <federation_host> については、フェデレーションルートのホスト URL を置き換えます。
出力例
# TYPE up untyped up{apiserver="kube-apiserver",endpoint="https",instance="10.0.143.148:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035322214 up{apiserver="kube-apiserver",endpoint="https",instance="10.0.148.166:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035338597 up{apiserver="kube-apiserver",endpoint="https",instance="10.0.173.16:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035343834 ...
12.3. 関連情報
第13章 モニタリング関連の問題のトラブルシューティング
ユーザー定義プロジェクトのモニタリングに関する一般的な問題のトラブルシューティング手順を参照してください。
13.1. ユーザー定義プロジェクトのメトリクスが利用できない理由の判別
ユーザー定義プロジェクトのモニタリング時にメトリクスが表示されない場合は、以下の手順を実行して問題のトラブルシューティングを実行します。
手順
メトリクス名に対してクエリーを実行し、プロジェクトが正しいことを確認します。
- Web コンソールの Developer パースペクティブから、Observe → Metrics を選択します。
- Project: 一覧でメトリックで表示するプロジェクトを選択します。
Select query 一覧からクエリーを選択するか、Show PromQL を選択してカスタム PromQL クエリーを実行します。
メトリクスはグラフに表示されます。
クエリーはプロジェクトごとに実行される必要があります。表示されるメトリクスは、選択したプロジェクトに関連するメトリクスです。
メトリックが必要な Pod がアクティブにメトリックを提供していることを確認します。以下の
oc execコマンドを Pod で実行し、podIP、port、 および/metricsをターゲットにします。$ oc exec <sample_pod> -n <sample_namespace> -- curl <target_pod_IP>:<port>/metrics
注記curlがインストールされている Pod でコマンドを実行する必要があります。以下の出力例は、有効なバージョンのメトリクスを含む結果を示しています。
出力例
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed # HELP version Version information about this binary-- --:--:-- --:--:-- 0 # TYPE version gauge version{version="v0.1.0"} 1 100 102 100 102 0 0 51000 0 --:--:-- --:--:-- --:--:-- 51000無効な出力は、対応するアプリケーションに問題があることを示しています。
-
PodMonitorCRD を使用している場合は、PodMonitorCRD がラベル一致を使用して適切な Pod を参照するよう設定されていることを確認します。詳細は、Prometheus Operator のドキュメントを参照してください。 ServiceMonitorCRD を使用し、Pod の/metricsエンドポイントがメトリクスデータを表示している場合は、以下の手順を実行して設定を確認します。サービスが正しい
/metricsエンドポイントを参照していることを確認します。この出力のサービスlabelsは、後続の手順でサービスが定義するサービスモニターのlabelsと/metricsエンドポイントと一致する必要があります。$ oc get service
出力例
apiVersion: v1 kind: Service 1 metadata: labels: 2 app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-example-app type: ClusterIP
serviceIP、port、および/metricsエンドポイントをクエリーし、以前に Pod で実行したcurlコマンドと同じメトリクスがあるかどうかを確認します。以下のコマンドを実行してサービス IP を見つけます。
$ oc get service -n <target_namespace>
/metricsエンドポイントをクエリーします。$ oc exec <sample_pod> -n <sample_namespace> -- curl <service_IP>:<port>/metrics
以下の例では、有効なメトリクスが返されます。
出力例
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 102 100 102 0 0 51000 0 --:--:-- --:--:-- --:--:-- 99k # HELP version Version information about this binary # TYPE version gauge version{version="v0.1.0"} 1
ラベルのマッチングを使用して、
ServiceMonitorオブジェクトが必要なサービスを参照するように設定されていることを確認します。これを実行するには、oc get service出力のServiceオブジェクトをoc get servicemonitor出力のServiceMonitorオブジェクトと比較します。メトリックを表示するには、ラベルが一致している必要があります。たとえば、直前の手順の
Serviceオブジェクトにapp: prometheus-example-appラベルがあり、ServiceMonitorオブジェクトに同じapp: prometheus-example-app一致ラベルがある点に注意してください。
- すべて有効になっていても、メトリクスが利用できない場合は、サポートチームにお問い合わせください。
13.2. Prometheus が大量のディスク領域を消費している理由の特定
開発者は、キーと値のペアの形式でメトリクスの属性を定義するためにラベルを作成できます。使用できる可能性のあるキーと値のペアの数は、属性について使用できる可能性のある値の数に対応します。数が無制限の値を持つ属性は、バインドされていない属性と呼ばれます。たとえば、customer_id 属性は、使用できる値が無限にあるため、バインドされていない属性になります。
割り当てられるキーと値のペアにはすべて、一意の時系列があります。ラベルに多数のバインドされていない値を使用すると、作成される時系列の数が指数関数的に増加する可能性があります。これは Prometheus のパフォーマンスに影響する可能性があり、多くのディスク領域を消費する可能性があります。
Prometheus が多くのディスクを消費する場合、以下の手段を使用できます。
- 収集される 収集サンプルの数を確認 します。
- Prometheus HTTP API を使用して時系列データベース (TSDB) の状態を確認して、どのラベルが最も多くの時系列を作成しているかについての詳細情報を得ることができます。これを実行するには、クラスター管理者権限が必要です。
ユーザー定義メトリクスに割り当てられるバインドされていない属性の数を減らすことで、作成される一意の時系列の数を減らします。
注記使用可能な値の制限されたセットにバインドされる属性を使用すると、可能なキーと値のペアの組み合わせの数が減ります。
- ユーザー定義プロジェクト間で 収集可能なサンプル数の数に制限を適用します。これには、クラスター管理者の権限が必要です。
前提条件
-
dedicated-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
- Administrator パースペクティブで、Observe → Metrics に移動します。
Expression フィールドで、以下の Prometheus Query Language (PromQL) クエリーを実行します。これにより、収集サンプルの数が最も多い 10 メトリクスが返されます。
topk(10,count by (job)({__name__=~".+"}))予想されるよりも多くの収集サンプルを持つメトリクスに割り当てられたバインドされていないラベル値の数を調査します。
- メトリクスがユーザー定義のプロジェクトに関連する場合、ワークロードに割り当てられたメトリクスのキーと値のペアを確認します。これらのライブラリーは、アプリケーションレベルで Prometheus クライアントライブラリーを使用して実装されます。ラベルで参照されるバインドされていない属性の数の制限を試行します。
- メトリクスがコアの Red Hat OpenShift Service on AWS プロジェクトに関連している場合は、Red Hat Customer Portal で Red Hat サポートケースを作成します。
Prometheus HTTP API を使用して TSDB ステータスを確認するには、
dedicated-adminとして次のコマンドを実行します。$ oc login -u <username> -p <password>
$ host=$(oc -n openshift-monitoring get route prometheus-k8s -ojsonpath={.spec.host})$ token=$(oc whoami -t)
$ curl -H "Authorization: Bearer $token" -k "https://$host/api/v1/status/tsdb"
出力例
"status": "success",
関連情報
- 収集サンプルの制限を設定し、関連するアラートルールを作成する方法についての詳細は、ユーザー定義プロジェクトの収集サンプル制限の設定 を参照してください。
- サポートケースの送信
第14章 Cluster Monitoring Operator の ConfigMap 参照
14.1. Cluster Monitoring Operator 設定リファレンス
Red Hat OpenShift Service on AWS クラスターモニタリングの一部は設定可能です。API には、さまざまな Config Map で定義されるパラメーターを設定してアクセスできます。
-
モニタリングコンポーネントを設定するには、
openshift-monitoringnamespace でcluster-monitoring-configという名前のConfigMapオブジェクトを編集します。このような設定は ClusterMonitoringConfiguration によって定義されます。 -
ユーザー定義プロジェクトを監視するモニタリングコンポーネントを設定するには、
openshift-user-workload-monitoringnamespace でuser-workload-monitoring-configという名前のConfigMapオブジェクトを編集します。これらの設定は UserWorkloadConfiguration で定義されます。
設定ファイルは、常に設定マップデータの config.yaml キーで定義されます。
- すべての設定パラメーターが公開されるわけではありません。
- クラスターモニタリングの設定はオプションです。
- 設定が存在しないか、または空の場合には、デフォルト値が使用されます。
-
設定が無効な場合、Cluster Monitoring Operator はリソースの調整を停止し、Operator のステータス条件で
Degraded=Trueを報告します。
14.2. AdditionalAlertmanagerConfig
14.2.1. 説明
AdditionalAlertmanagerConfig リソースは、コンポーネントが追加の Alertmanager インスタンスと通信する方法の設定を定義します。
14.2.2. 必須
-
apiVersion
出現場所: PrometheusK8sConfig、PrometheusRestrictedConfig、ThanosRulerConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| apiVersion | string |
Alertmanager の API バージョンを定義します。使用できる値は |
| bearerToken | *v1.SecretKeySelector | Alertmanager への認証時に使用するベアラートークンを含むシークレットキー参照を定義します。 |
| pathPrefix | string | プッシュエンドポイントパスの前に追加するパス接頭辞を定義します。 |
| scheme | string |
Alertmanager インスタンスとの通信時に使用する URL スキームを定義します。使用できる値は |
| staticConfigs | []string |
|
| timeout | *文字列 | アラートの送信時に使用されるタイムアウト値を定義します。 |
| tlsConfig | Alertmanager 接続に使用する TLS 設定を定義します。 |
14.3. AlertmanagerMainConfig
14.3.1. 説明
AlertmanagerMainConfig リソースは、openshift-monitoring namespace で Alertmanager コンポーネントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | *bool |
|
| enableUserAlertmanagerConfig | bool |
|
| logLevel | string |
Alertmanager のログレベル設定を定義します。使用できる値は、 |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| resources | *v1.ResourceRequirements | Alertmanager コンテナーのリソース要求および制限を定義します。 |
| secrets | []string |
Alertmanager にマウントされるシークレットの一覧を定義します。シークレットは、Alertmanager オブジェクトと同じ namespace 内になければなりません。これらは |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
| topologySpreadConstraints | []v1.TopologySpreadConstraint | Pod のトポロジー分散制約を定義します。 |
| volumeClaimTemplate | *monv1.EmbeddedPersistentVolumeClaim | Alertmanager の永続ストレージを定義します。この設定を使用して、ストレージクラス、ボリュームサイズ、名前などの永続ボリューム要求を設定します。 |
14.4. AlertmanagerUserWorkloadConfig
14.4.1. 説明
AlertmanagerUserWorkloadConfig リソースは、ユーザー定義プロジェクトに使用される Alertmanager インスタンスの設定を定義します。
表示場所: UserWorkloadConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
| enableAlertmanagerConfig | bool |
|
| logLevel | string |
ユーザーワークロードモニタリング用の Alertmanager のログレベル設定を定義します。使用できる値は、 |
| resources | *v1.ResourceRequirements | Alertmanager コンテナーのリソース要求および制限を定義します。 |
| secrets | []string |
Alertmanager にマウントされるシークレットの一覧を定義します。シークレットは、Alertmanager オブジェクトと同じ namespace 内に配置する必要があります。これらは |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
| volumeClaimTemplate | *monv1.EmbeddedPersistentVolumeClaim | Alertmanager の永続ストレージを定義します。この設定を使用して、ストレージクラス、ボリュームサイズ、名前などの永続ボリューム要求を設定します。 |
14.5. ClusterMonitoringConfiguration
14.5.1. 説明
ClusterMonitoringConfiguration リソースは、openshift-monitoring namespace の cluster-monitoring-config ConfigMap を使用してデフォルトのプラットフォームモニタリングスタックをカスタマイズする設定を定義します。
| プロパティー | 型 | 説明 |
|---|---|---|
| alertmanagerMain |
| |
| enableUserWorkload | *bool |
|
| k8sPrometheusAdapter |
| |
| kubeStateMetrics |
| |
| prometheusK8s |
| |
| prometheusOperator |
| |
| openshiftStateMetrics |
| |
| telemeterClient |
| |
| thanosQuerier |
| |
| nodeExporter |
|
14.6. DedicatedServiceMonitors
14.6.1. 説明
DedicatedServiceMonitors リソースを使用して、Prometheus アダプターの専用のサービスモニターを設定できます。
表示場所: K8sPrometheusAdapter
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
14.7. K8sPrometheusAdapter
14.7.1. 説明
K8sPrometheusAdapter リソースは、Prometheus Adapter コンポーネントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| audit | *Audit |
Prometheus アダプターインスタンスによって使用される監査設定を定義します。使用できる値は |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
| dedicatedServiceMonitors | 専用のサービスモニターを定義します。 |
14.8. KubeStateMetricsConfig
14.8.1. 説明
KubeStateMetricsConfig リソースは、kube-state-metrics エージェントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
14.9. NodeExporterCollectorBuddyInfoConfig
14.9.1. 説明
NodeExporterCollectorBuddyInfoConfig リソースは、node-exporter エージェントの buddyinfo コレクターのオン/オフスイッチとして機能します。デフォルトでは、buddyinfo コレクターは無効になっています。
表示場所: NodeExporterCollectorConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
14.10. NodeExporterCollectorConfig
14.10.1. 説明
NodeExporterCollectorConfig リソースは、node-exporter エージェントの個別コレクターの設定を定義します。
表示場所: NodeExporterConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| CPUfreq |
CPU 周波数の統計情報を収集する | |
| tcpstat |
TCP 接続の統計情報を収集する | |
| netdev |
ネットワークデバイスの統計情報を収集する | |
| netclass |
ネットワークデバイスに関する情報を収集する | |
| buddyinfo |
|
14.11. NodeExporterCollectorCpufreqConfig
14.11.1. 説明
NodeExporterCollectorCpufreqConfig リソースは、node-exporter エージェントの cpufreq コレクターのオン/オフスイッチとして機能します。デフォルトでは、cpufreq コレクターは無効になっています。特定の状況下で cpufreq コレクターを有効にすると、多数のコアを持つマシンの CPU 使用率が増加します。マシンに多数のコアがある場合にこのコレクターを有効にする際は、CPU の過剰使用がないかシステムを監視してください。
表示場所: NodeExporterCollectorConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
14.12. NodeExporterCollectorNetClassConfig
14.12.1. 説明
NodeExporterCollectorNetClassConfig リソースは、node-exporter エージェントの netclass コレクターのオン/オフスイッチとして機能します。デフォルトでは、netclass コレクターが有効になっています。無効にすると、次のメトリックが利用できなくなります: node_network_info、node_network_address_assign_type、node_network_carrier、node_network_carrier_changes_total、node_network_carrier_up_changes_total、node_network_carrier_down_changes_total、 node_network_device_id、node_network_dormant、node_network_flags、node_network_iface_id、node_network_iface_link、node_network_iface_link_mode、node_network_mtu_bytes、 node_network_name_assign_type、node_network_net_dev_group、node_network_speed_bytes、node_network_transmit_queue_length、node_network_protocol_type。
表示場所: NodeExporterCollectorConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
| useNetlink | bool |
|
14.13. NodeExporterCollectorNetDevConfig
14.13.1. 説明
NodeExporterCollectorNetDevConfig リソースは、node-exporter エージェントの netdev コレクターのオン/オフスイッチとして機能します。デフォルトでは、netdev コレクターが有効になっています。無効にすると、次のメトリクスが利用できなくなります: node_network_receive_bytes_total、node_network_receive_compressed_total、node_network_receive_drop_total、node_network_receive_errs_total、node_network_receive_fifo_total、node_network_receive_frame_total、 node_network_receive_multicast_total、node_network_receive_nohandler_total、node_network_receive_packets_total、node_network_transmit_bytes_total、node_network_transmit_carrier_total、node_network_transmit_colls_total、 node_network_transmit_compressed_total、node_network_transmit_drop_total、node_network_transmit_errs_total、node_network_transmit_fifo_total、node_network_transmit_packets_total。
表示場所: NodeExporterCollectorConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
14.14. NodeExporterCollectorTcpStatConfig
14.14.1. 説明
NodeExporterCollectorTcpStatConfig リソースは、node-exporter エージェントの tcpstat コレクターのオン/オフスイッチとして機能します。デフォルトでは、tcpstat コレクターは無効になっています。
表示場所: NodeExporterCollectorConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| enabled | bool |
|
14.15. NodeExporterConfig
14.15.1. 説明
NodeExporterConfig リソースは、node-exporter エージェントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| コレクター | 有効にするコレクターと、それらの追加の設定パラメーターを定義します。 |
14.16. OpenShiftStateMetricsConfig
14.16.1. 説明
OpenShiftStateMetricsConfig リソースは、openshift-state-metrics エージェントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
14.17. PrometheusK8sConfig
14.17.1. 説明
PrometheusK8sConfig リソースは、Prometheus コンポーネントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| additionalAlertmanagerConfigs | Prometheus コンポーネントからアラートを受信する追加の Alertmanager インスタンスを設定します。デフォルトでは、追加の Alertmanager インスタンスは設定されません。 | |
| enforcedBodySizeLimit | string |
Prometheus が取得したメトリクスに本体サイズの制限を適用します。収集された対象のボディーの応答が制限値よりも大きい場合には、スクレイピングは失敗します。制限なしを指定する空の値、Prometheus サイズ形式の数値 ( |
| externalLabels | map[string]string | フェデレーション、リモートストレージ、Alertmanager などの外部システムと通信する際に、任意の時系列またはアラートに追加されるラベルを定義します。デフォルトでは、ラベルは追加されません。 |
| logLevel | string |
Prometheus のログレベル設定を定義します。使用できる値は、 |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| queryLogFile | string |
PromQL クエリーがログに記録されるファイルを指定します。この設定は、ファイル名 (クエリーが |
| remoteWrite | URL、認証、再ラベル付け設定など、リモート書き込み設定を定義します。 | |
| resources | *v1.ResourceRequirements | Prometheus コンテナーのリソース要求および制限を定義します。 |
| retention | string |
Prometheus がデータを保持する期間を定義します。この定義は、次の正規表現パターンを使用して指定する必要があります ( |
| retentionSize | string |
データブロックと先行書き込みログ (WAL) によって使用されるディスク領域の最大量を定義します。サポートされる値は、 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
| topologySpreadConstraints | []v1.TopologySpreadConstraint | Pod のトポロジー分散制約を定義します。 |
| collectionProfile | CollectionProfile |
Prometheus がプラットフォームコンポーネントからメトリクスを収集するために使用するメトリクスコレクションプロファイルを定義します。使用可能な値は、 |
| volumeClaimTemplate | *monv1.EmbeddedPersistentVolumeClaim | Prometheus の永続ストレージを定義します。この設定を使用して、ストレージクラス、ボリュームサイズ、名前などの永続ボリューム要求を設定します。 |
14.18. PrometheusOperatorConfig
14.18.1. 説明
PrometheusOperatorConfig リソースは、Prometheus Operator コンポーネントの設定を定義します。
表示場所: ClusterMonitoringConfiguration、UserWorkloadConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| logLevel | string |
Prometheus Operator のログレベル設定を定義します。使用できる値は、 |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
14.19. PrometheusRestrictedConfig
14.19.1. 説明
PrometheusRestrictedConfig リソースは、ユーザー定義プロジェクトをモニターする Prometheus コンポーネントの設定を定義します。
表示場所: UserWorkloadConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| additionalAlertmanagerConfigs | Prometheus コンポーネントからアラートを受信する追加の Alertmanager インスタンスを設定します。デフォルトでは、追加の Alertmanager インスタンスは設定されません。 | |
| enforcedLabelLimit | *uint64 |
サンプルで受け入れられるラベルの数に、収集ごとの制限を指定します。メトリクスの再ラベル後にラベルの数がこの制限を超えると、スクレイプ全体が失敗として扱われます。デフォルト値は |
| enforcedLabelNameLengthLimit | *uint64 |
サンプルのラベル名の長さにスクレイプごとの制限を指定します。ラベル名の長さがメトリクスの再ラベル付け後にこの制限を超える場合には、スクレイプ全体が失敗として扱われます。デフォルト値は |
| enforcedLabelValueLengthLimit | *uint64 |
サンプルのラベル値の長さにスクレイプごとの制限を指定します。ラベル値の長さがメトリクスの再ラベル付け後にこの制限を超える場合、スクレイプ全体が失敗として扱われます。デフォルト値は |
| enforcedSampleLimit | *uint64 |
受け入れられるスクレイプされたサンプル数のグローバル制限を指定します。この設定は、値が |
| enforcedTargetLimit | *uint64 |
収集された対象数に対してグローバル制限を指定します。この設定は、値が |
| externalLabels | map[string]string | フェデレーション、リモートストレージ、Alertmanager などの外部システムと通信する際に、任意の時系列またはアラートに追加されるラベルを定義します。デフォルトでは、ラベルは追加されません。 |
| logLevel | string |
Prometheus のログレベル設定を定義します。使用できる値は、 |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| queryLogFile | string |
PromQL クエリーがログに記録されるファイルを指定します。この設定は、ファイル名 (クエリーが |
| remoteWrite | URL、認証、再ラベル付け設定など、リモート書き込み設定を定義します。 | |
| resources | *v1.ResourceRequirements | Prometheus コンテナーのリソース要求および制限を定義します。 |
| retention | string |
Prometheus がデータを保持する期間を定義します。この定義は、次の正規表現パターンを使用して指定する必要があります ( |
| retentionSize | string |
データブロックと先行書き込みログ (WAL) によって使用されるディスク領域の最大量を定義します。サポートされる値は、 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
| volumeClaimTemplate | *monv1.EmbeddedPersistentVolumeClaim | Prometheus の永続ストレージを定義します。この設定を使用して、ボリュームのストレージクラスおよびサイズを設定します。 |
14.20. RemoteWriteSpec
14.20.1. 説明
RemoteWriteSpec リソースは、リモート書き込みストレージの設定を定義します。
14.20.2. 必須
-
url
出現場所: PrometheusK8sConfig、PrometheusRestrictedConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| authorization | *monv1.SafeAuthorization | リモート書き込みストレージの認証設定を定義します。 |
| basicAuth | *monv1.BasicAuth | リモート書き込みエンドポイント URL の Basic 認証設定を定義します。 |
| bearerTokenFile | string | リモート書き込みエンドポイントのベアラートークンが含まれるファイルを定義します。ただし、シークレットを Pod にマウントできないため、実際にはサービスアカウントのトークンのみを参照できます。 |
| ヘッダー | map[string]string | 各リモート書き込み要求とともに送信されるカスタム HTTP ヘッダーを指定します。Prometheus によって設定されるヘッダーは上書きできません。 |
| metadataConfig | *monv1.MetadataConfig | シリーズのメタデータをリモート書き込みストレージに送信するための設定を定義します。 |
| name | string | リモート書き込みキューの名前を定義します。この名前は、メトリクスとロギングでキューを区別するために使用されます。指定する場合、この名前は一意である必要があります。 |
| oauth2 | *monv1.OAuth2 | リモート書き込みエンドポイントの OAuth2 認証設定を定義します。 |
| proxyUrl | string | オプションのプロキシー URL を定義します。 |
| queueConfig | *monv1.QueueConfig | リモート書き込みキューパラメーターの調整を許可します。 |
| remoteTimeout | string | リモート書き込みエンドポイントへの要求のタイムアウト値を定義します。 |
| sigv4 | *monv1.Sigv4 | AWS 署名バージョン 4 の認証設定を定義します。 |
| tlsConfig | *monv1.SafeTLSConfig | リモート書き込みエンドポイントの TLS 認証設定を定義します。 |
| url | string | サンプルの送信先となるリモート書き込みエンドポイントの URL を定義します。 |
| writeRelabelConfigs | []monv1.RelabelConfig | リモート書き込みの再ラベル設定のリストを定義します。 |
14.21. TLSConfig
14.21.1. 説明
TLSConfig リソースは、TLS 接続の設定を設定します。
14.21.2. 必須
-
insecureSkipVerify
表示場所: AdditionalAlertmanagerConfig
| プロパティー | 型 | 説明 |
|---|---|---|
| ca | *v1.SecretKeySelector | リモートホストに使用する認証局 (CA) を含む秘密鍵の参照を定義します。 |
| cert | *v1.SecretKeySelector | リモートホストに使用する公開証明書を含む秘密鍵の参照を定義します。 |
| 鍵 (key) | *v1.SecretKeySelector | リモートホストに使用する秘密鍵を含む秘密鍵の参照を定義します。 |
| serverName | string | 返された証明書のホスト名を確認するために使用されます。 |
| insecureSkipVerify | bool |
|
14.22. TelemeterClientConfig
14.22.1. 説明
TelemeterClientConfig は、Telemeter Client コンポーネントの設定を定義します。
14.22.2. 必須
-
nodeSelector -
Toleration
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
14.23. ThanosQuerierConfig
14.23.1. 説明
ThanosQuerierConfig リソースは、Thanos Querier コンポーネントの設定を定義します。
表示場所: ClusterMonitoringConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| enableRequestLogging | bool |
要求ロギングを有効または無効にするブール値フラグ。デフォルト値は |
| logLevel | string |
Thanos Querier のログレベル設定を定義します。使用できる値は、 |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| resources | *v1.ResourceRequirements | Thanos Querier コンテナーのリソース要求および制限を定義します。 |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
14.24. ThanosRulerConfig
14.24.1. 説明
ThanosRulerConfig リソースは、ユーザー定義プロジェクトの Thanos Ruler インスタンスの設定を定義します。
表示場所: UserWorkloadConfiguration
| プロパティー | 型 | 説明 |
|---|---|---|
| additionalAlertmanagerConfigs |
Thanos Ruler コンポーネントが追加の Alertmanager インスタンスと通信する方法を設定します。デフォルト値は | |
| logLevel | string |
Thanos Ruler のログレベル設定を定義します。使用できる値は、 |
| nodeSelector | map[string]string | Pod がスケジュールされるノードを定義します。 |
| resources | *v1.ResourceRequirements | Alertmanager コンテナーのリソース要求および制限を定義します。 |
| retention | string |
Prometheus がデータを保持する期間を定義します。この定義は、次の正規表現パターンを使用して指定する必要があります ( |
| Toleration | []v1.Toleration | Pod の容認を定義します。 |
| topologySpreadConstraints | []v1.TopologySpreadConstraint | Pod のトポロジー分散制約を定義します。 |
| volumeClaimTemplate | *monv1.EmbeddedPersistentVolumeClaim | Thanos Ruler の永続ストレージを定義します。この設定を使用して、ボリュームのストレージクラスおよびサイズを設定します。 |
14.25. UserWorkloadConfiguration
14.25.1. 説明
UserWorkloadConfiguration リソースは、openshift-user-workload-monitoring namespace の user-workload-monitoring-config Config Map でユーザー定義プロジェクトに対応する設定を定義します。userWorkload Configuration は、openshift-monitoring namespace の下にある cluster-monitoring-config Config Map で enableUserWorkload を true に設定した後にのみ有効にできます。
| プロパティー | 型 | 説明 |
|---|---|---|
| Alertmanager | ユーザーワークロードモニタリングで Alertmanager コンポーネントの設定を定義します。 | |
| prometheus | ユーザーワークロードモニタリングで Prometheus コンポーネントの設定を定義します。 | |
| prometheusOperator | ユーザーワークロードモニタリングでの Prometheus Operator コンポーネントの設定を定義します。 | |
| thanosRuler | ユーザーワークロードモニタリングで Thanos Ruler コンポーネントの設定を定義します。 |