Red Hat OpenShift Cluster Observability Operator のインストール
Cluster Observability Operator のインストールと設定
概要
第1章 Cluster Observability Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、OpenShift Container Platform Web コンソールを使用して、OperatorHub から Cluster Observability Operator (COO) をインストールまたは削除できます。OperatorHub は、クラスター上に Operator をインストールして管理する Operator Lifecycle Manager (OLM) と連動して動作するユーザーインターフェイスです。
1.1. Web コンソールに Cluster Observability Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、OperatorHub から Cluster Observability Operator (COO) をインストールします。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにログインしている。
手順
- OpenShift Container Platform Web コンソールで、Operators → OperatorHub をクリックします。
-
Filter by keyword ボックスに
cluster observability operator
と入力します。 - 結果リストで Cluster Observability Operator をクリックします。
Operator に関する情報を読み、次のインストール設定を指定します。
- Update channel → stable
- Version → 1.0.0 以降
- Installation mode → All namespaces on the cluster (default)
- Installed Namespace → Operator recommended Namespace: openshift-cluster-observability-operator
- Enable Operator recommended cluster monitoring on this Namespace を選択します。
- Update approval → Automatic
- オプション: 要件に合わせてインストール設定を変更できます。たとえば、別の更新チャネルをサブスクライブしたり、Operator の古いリリースバージョンをインストールしたり、Operator の新しいバージョンへの更新に手動の承認を必要とするように選択できます。
- Install をクリックします。
検証
- Operators → Installed Operators に移動し、リストに Cluster Observability Operator エントリーが表示されていることを確認します。
関連情報
1.2. Web コンソールを使用した Cluster Observability Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
OperatorHub を使用して Cluster Observability Operator (COO) をインストールした場合は、OpenShift Container Platform Web コンソールでそれをアンインストールできます。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにログインしている。
手順
- Operators → Installed Operators に移動します。
- リスト内で Cluster Observability Operator エントリーを見つけます。
-
このエントリーの
をクリックし、Uninstall Operator を選択します。
検証
- Operator → Installed Operator に移動し、Cluster Observability Operator エントリーがリストに表示されなくなったことを確認します。
第2章 サービスを監視するための Cluster Observability Operator 設定 リンクのコピーリンクがクリップボードにコピーされました!
Cluster Observability Operator (COO) で管理されるモニタリングスタックを設定することで、サービスのメトリクスを監視できます。
サービスのモニタリングをテストするには、次の手順に従います。
- サービスエンドポイントを定義するサンプルサービスをデプロイします。
-
COO によるサービスのモニタリング方法を指定する
ServiceMonitor
オブジェクトを作成します。 -
ServiceMonitor
オブジェクトを検出するためのMonitoringStack
オブジェクトを作成します。
2.1. Cluster Observability Operator のサンプルサービスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
この設定では、ユーザー定義の ns1-coo
プロジェクトに prometheus-coo-example-app
という名前のサンプルサービスをデプロイします。このサービスは、カスタム version
メトリクスを公開します。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。
手順
prometheus-coo-example-app.yaml
という名前の YAML ファイルを作成します。このファイルには、namespace、デプロイメント、およびサービスに関する次の設定の詳細が含まれます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
次のコマンドを実行して、設定をクラスターに適用します。
oc apply -f prometheus-coo-example-app.yaml
$ oc apply -f prometheus-coo-example-app.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して出力を確認し、Pod が実行されていることを確認します。
oc -n ns1-coo get pod
$ oc -n ns1-coo get pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. Cluster Observability Operator によるサービスのモニタリング方法の指定 リンクのコピーリンクがクリップボードにコピーされました!
「Cluster Observability Operator のサンプルサービスのデプロイ」セクションで作成したサンプルサービスが公開するメトリクスを使用するには、/metrics
エンドポイントからメトリクスを取得するようにモニタリングコンポーネントを設定する必要があります。
この設定は、サービスのモニタリング方法を指定する ServiceMonitor
オブジェクト、または Pod のモニタリング方法を指定する PodMonitor
オブジェクトを使用して作成できます。ServiceMonitor
オブジェクトには Service
オブジェクトが必要です。PodMonitor
オブジェクトには必要ないため、MonitoringStack
オブジェクトは Pod が公開するメトリクスエンドポイントから直接メトリクスを取得できます。
この手順は、ns1-coo
namespace に prometheus-coo-example-app
という名前のサンプルサービスの ServiceMonitor
オブジェクトを作成する方法を示しています。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。 - Cluster Observability Operator がインストールされている。
prometheus-coo-example-app
サンプルサービスをns1-coo
namespace にデプロイしている。注記prometheus-coo-example-app
サンプルサービスは、TLS 認証をサポートしていません。
手順
次の
ServiceMonitor
オブジェクト設定の詳細を含む YAML ファイルを、example-coo-app-service-monitor.yaml
という名前で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定は、
prometheus-coo-example-app
サンプルサービスが公開するメトリクスデータを収集するためにMonitoringStack
オブジェクトが参照するServiceMonitor
オブジェクトを定義します。次のコマンドを実行して、設定をクラスターに適用します。
oc apply -f example-coo-app-service-monitor.yaml
$ oc apply -f example-coo-app-service-monitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して出力を観察し、
ServiceMonitor
リソースが作成されたことを確認します。oc -n ns1-coo get servicemonitors.monitoring.rhobs
$ oc -n ns1-coo get servicemonitors.monitoring.rhobs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE prometheus-coo-example-monitor 81m
NAME AGE prometheus-coo-example-monitor 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. Cluster Observability Operator への MonitoringStack オブジェクト作成 リンクのコピーリンクがクリップボードにコピーされました!
ターゲットの prometheus-coo-example-app
サービスが公開するメトリクスデータを収集するには、「Cluster Observability Operator におけるサービスのモニター方法の指定」セクションで作成した ServiceMonitor
オブジェクトを参照する MonitoringStack
オブジェクトを作成します。この MonitoringStack
オブジェクトはサービスを検出し、そこから公開されているメトリクスデータを収集できます。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。 - Cluster Observability Operator がインストールされている。
-
prometheus-coo-example-app
サンプルサービスをns1-coo
namespace にデプロイしている。 -
ns1-coo
namespace に、prometheus-coo-example-monitor
という名前のServiceMonitor
オブジェクトを作成している。
手順
-
MonitoringStack
オブジェクト設定の YAML ファイルを作成します。この例では、ファイル名をexample-coo-monitoring-stack.yaml
にします。 以下の
MonitoringStack
オブジェクト設定の詳細を追加します。MonitoringStack
オブジェクトの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
MonitoringStack
オブジェクトを適用します。oc apply -f example-coo-monitoring-stack.yaml
$ oc apply -f example-coo-monitoring-stack.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行し、出力で
MonitoringStack
オブジェクトが利用可能であることを確認します。oc -n ns1-coo get monitoringstack
$ oc -n ns1-coo get monitoringstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE example-coo-monitoring-stack 81m
NAME AGE example-coo-monitoring-stack 81m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、Prometheus からアクティブなターゲットに関する情報を取得し、出力をフィルタリングして、
app=prometheus-coo-example-app
のラベルが付けられたターゲットのみをリスト表示します。これにより、この特定のラベルの付いたターゲットのうち、どれが Prometheus によって検出およびアクティブに監視されるかが検証されます。oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[].discoveredLabels | select(.__meta_kubernetes_endpoints_label_app=="prometheus-coo-example-app")'
$ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[].discoveredLabels | select(.__meta_kubernetes_endpoints_label_app=="prometheus-coo-example-app")'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記上記の例では、
jq
コマンドライン JSON プロセッサー を使用して、便宜上出力をフォーマットします。
2.4. モニタリングスタックの検証 リンクのコピーリンクがクリップボードにコピーされました!
モニタリングスタックが正しく機能していることを確認するには、サンプルサービスにアクセスし、収集したメトリクスを表示します。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。 - Cluster Observability Operator がインストールされている。
-
prometheus-coo-example-app
サンプルサービスをns1-coo
namespace にデプロイしている。 -
ns1-coo
namespace に、prometheus-coo-example-monitor
という名前のServiceMonitor
オブジェクトを作成している。 -
ns1-coo
namespace にexample-coo-monitoring-stack
という名前のMonitoringStack
オブジェクトを作成している。
手順
prometheus-coo-example-app
サービスのサンプルを公開するためのルートを作成します。ターミナルから、以下のコマンドを実行します。oc expose svc prometheus-coo-example-app -n ns1-coo
$ oc expose svc prometheus-coo-example-app -n ns1-coo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ブラウザーまたはコマンドラインからルートにアクセスし、メトリクスを生成します。
Prometheus Pod でクエリーを実行し、HTTP 要求メトリクスの合計を返します。
oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/query?query=http_requests_total'
$ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/query?query=http_requests_total'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例 (便宜上
jq
を使用したフォーマット)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 複数の namespace 内のスクレイプターゲット リンクのコピーリンクがクリップボードにコピーされました!
複数の namespace でターゲットをスクレイプするには、MonitoringStack
オブジェクトに namespace とリソースセレクターを設定します。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。 - Cluster Observability Operator がインストールされている。
手順
以下の namespace オブジェクトと
MonitoringStack
YAML ファイルをデプロイします。MonitoringStack
の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow アラートは常に実行中の状態で、namespace
ns1-coo
にサンプルアプリケーションをデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow monitoring.rhobs/stack: multi-ns
のラベルが付けられた別の namespace に、同じサンプルアプリケーションをデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Prometheus インスタンスが新規ターゲットを追加し、アラートが実行中であることを確認します。port-forward コマンドを使用して、Prometheus または
Monitoringstack
インスタンスによってデプロイされた Alertmanager ユーザーインターフェイスを公開します。Prometheus
oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090
$ oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alertmanager
oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093
$ oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
http://localhost:9090/targets
またはhttp://localhost:9093/#/alerts
を参照して、ターゲットがスクレイピングされ、アラートが実行されていることを確認します。