20.5. OpenShift での Kafka メトリクスおよびダッシュボードの表示
AMQ Streams が OpenShift Container Platform にデプロイされると、ユーザー定義プロジェクトのモニタリング によりメトリクスが提供されます。この OpenShift 機能により、開発者は独自のプロジェクト (例: Kafka プロジェクト) を監視するために別の Prometheus インスタンスにアクセスできます。
ユーザー定義プロジェクトのモニタリングが有効な場合は、openshift-user-workload-monitoring プロジェクトには以下のコンポーネントが含まれます。
- Prometheus operator
- Prometheus インスタンス (Prometheus Operator によって自動的にデプロイされます)
- Thanos Ruler インスタンス
AMQ Streams は、これらのコンポーネントを使用してメトリックを消費します。
クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にし、開発者およびその他のユーザーに自分のプロジェクトに含まれるアプリケーションを監視するパーミッションを付与する必要があります。
Grafana のデプロイメント
Grafana インスタンスを、Kafka クラスターが含まれるプロジェクトにデプロイできます。その後、Grafana ダッシュボードのサンプルを使用して、AMQ Streams の Prometheus メトリックを Grafana ユーザーインターフェイスで可視化できます。
openshift-monitoring プロジェクトはコアプラットフォームコンポーネントをモニタリングできます。このプロジェクトの Prometheus および Grafana コンポーネントを使用して、OpenShift Container Platform 4.x 上の AMQ Streams の監視を設定しないでください。
手順の概要
OpenShift Container Platform で AMQ Streams のモニターングを設定するには、以下の手順を順番に行います。
20.5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- YAML ファイルのサンプルを使用して、Prometheus メトリクス設定がデプロイされている。
-
ユーザー定義プロジェクトの監視が有効になっている。クラスター管理者が OpenShift クラスターに
cluster-monitoring-configの Config Map を作成している。 -
クラスター管理者は、
monitoring-rules-editまたはmonitoring-editロールを割り当てている。
cluster-monitoring-config 設定マップの作成およびユーザー定義プロジェクトをモニターするためのパーミッションをユーザーに付与する方法については、OpenShift documentation を参照してください。
20.5.2. Prometheus リソースのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Prometheus を使用して、Kafka クラスターのモニタリングデータを取得します。
独自の Prometheus デプロイメントを使用するか、AMQ Streams によって提供される メトリクス設定ファイルのサンプル を使用して Prometheus をデプロイできます。サンプルファイルを使用するには、PodMonitor リソースを設定し、デプロイします。PodMonitors は、Apache Kafka、ZooKeeper、Operator、Kafka Bridge、および Cruise Control から直接データをスクレープします。
次に、Alertmanager のアラートルールのサンプルをデプロイします。
前提条件
- Kafka クラスターが稼働している。
- AMQ Streams で 提供されるアラートルールのサンプル を確認している。
手順
ユーザー定義プロジェクトのモニタリングが有効であることを確認します。
oc get pods -n openshift-user-workload-monitoring
oc get pods -n openshift-user-workload-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有効であると、モニタリングコンポーネントの Pod が返されます。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が返されなければ、ユーザー定義プロジェクトのモニタリングは無効になっています。「OpenShift での Kafka メトリクスおよびダッシュボードの表示」 の前提条件を参照してください。
複数の
PodMonitorリソースは、examples/metrics/prometheus-install/strimzi-pod-monitor.yamlで定義されます。PodMonitorリソースごとにspec.namespaceSelector.matchNamesプロパティーを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- メトリックをスクレープする Pod が実行されているプロジェクト (例:
Kafka)。
strimzi-pod-monitor.yamlファイルを、Kafka クラスターが稼働しているプロジェクトにデプロイします。oc apply -f strimzi-pod-monitor.yaml -n MY-PROJECT
oc apply -f strimzi-pod-monitor.yaml -n MY-PROJECTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Prometheus ルールのサンプルを同じプロジェクトにデプロイします。
oc apply -f prometheus-rules.yaml -n MY-PROJECT
oc apply -f prometheus-rules.yaml -n MY-PROJECTCopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.5.3. Grafana のサービスアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Streams の Grafana インスタンスは、cluster-monitoring-view ロールが割り当てられたサービスアカウントで実行する必要があります。
Grafana を使用してモニタリングのメトリクスを表示する場合は、サービスアカウントを作成します。
前提条件
手順
Kafka クラスターを含むプロジェクトに Grafana の
ServiceAccountを作成します。oc create sa grafana-service-account -n my-project
oc create sa grafana-service-account -n my-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
grafana-service-accountという名前のサービスアカウントがmy-projectnamespace に作成されます。cluster-monitoring-viewロールを GrafanaServiceAccountに割り当てるClusterRoleBindingリソースを作成します。ここでは、リソースの名前はgrafana-cluster-monitoring-bindingです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterRoleBindingを同じプロジェクトにデプロイします。oc apply -f grafana-cluster-monitoring-binding.yaml -n my-project
oc apply -f grafana-cluster-monitoring-binding.yaml -n my-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントのトークンシークレットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Secretオブジェクトとアクセストークンを作成します。oc create -f <secret_configuration>.yaml
oc create -f <secret_configuration>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana をデプロイするときにアクセストークンが必要です。
20.5.4. Prometheus データソースを使用した Grafana のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Grafana をデプロイし、Prometheus メトリックを表示します。Grafana アプリケーションには、OpenShift Container Platform モニタリングスタックの設定が必要です。
OpenShift Container Platform では、openshift-monitoring プロジェクトに Thanos Querier インスタンスが含まれています。Thanos Querier は、プラットフォームメトリクスを集約するために使用されます。
必要なプラットフォームメトリクスを使用するには、Grafana インスタンスには Thanos Querier に接続できる Prometheus データソースが必要です。この接続を設定するには、トークンを使用し、Thanos Querier と並行して実行される oauth-proxy サイドカーに対して認証を行う config map を作成します。datasource.yaml ファイルは config map のソースとして使用されます。
最後に、Kafka クラスターが含まれるプロジェクトにボリュームとしてマウントされた config map で Grafana アプリケーションをデプロイします。
前提条件
- Prometheus リソースをデプロイ している。
- Grafana のサービスアカウントを作成 している。
手順
Grafana
ServiceAccountのアクセストークンを取得します。oc describe sa/grafana-service-account | grep Tokens: oc describe secret grafana-service-account-token-mmlp9 | grep token:
oc describe sa/grafana-service-account | grep Tokens: oc describe secret grafana-service-account-token-mmlp9 | grep token:Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、サービスアカウントの名前は
grafana-service-accountです。次のステップで使用するアクセストークンをコピーします。Grafana の Thanos Querier 設定が含まれる
datasource.yamlファイルを作成します。以下に示すように、アクセストークンを
httpHeaderValue1プロパティーに貼り付けます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
GRAFANA-ACCESS-TOKEN: GrafanaServiceAccountのアクセストークンの値。
datasource.yamlファイルからgrafana-configという名前の config map を作成します。oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECT
oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECTCopy to Clipboard Copied! Toggle word wrap Toggle overflow DeploymentおよびServiceで設定される Grafana アプリケーションを作成します。grafana-configconfig map はデータソース設定のボリュームとしてマウントされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Grafana アプリケーションを、Kafka クラスターが含まれるプロジェクトにデプロイします。
oc apply -f <grafana-application> -n <my-project>
oc apply -f <grafana-application> -n <my-project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
20.5.5. Grafana サービスへのルートの作成 リンクのコピーリンクがクリップボードにコピーされました!
Grafana サービスを公開するルートを介して、Grafana ユーザーインターフェイスにアクセスできます。
手順
grafanaサービスへのルートを作成します。oc create route edge <my-grafana-route> --service=grafana --namespace=KAFKA-NAMESPACE
oc create route edge <my-grafana-route> --service=grafana --namespace=KAFKA-NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.5.6. Grafana ダッシュボードサンプルのインポート リンクのコピーリンクがクリップボードにコピーされました!
Grafana を使用して、カスタマイズ可能なダッシュボードで Prometheus メトリックを視覚化します。
AMQ Streams は、Grafana のダッシュボード設定ファイルのサンプル を JSON 形式で提供します。
-
examples/metrics/grafana-dashboards
この手順では、Grafana ダッシュボードのサンプルを使用します。
ダッシュボードのサンプルは、キーメトリックを監視するを開始点として適していますが、Kafka でサポートされるすべてのメトリックは表示されません。使用するインフラストラクチャーに応じて、ダッシュボードのサンプルの編集や、他のメトリクスの追加を行うことができます。
前提条件
手順
Grafana サービスへのルートの詳細を取得します。以下に例を示します。
oc get routes NAME HOST/PORT PATH SERVICES MY-GRAFANA-ROUTE MY-GRAFANA-ROUTE-amq-streams.net grafana
oc get routes NAME HOST/PORT PATH SERVICES MY-GRAFANA-ROUTE MY-GRAFANA-ROUTE-amq-streams.net grafanaCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Web ブラウザーで、Route ホストおよびポートの URL を使用して Grafana ログイン画面にアクセスします。
ユーザー名とパスワードを入力し、続いて Log In をクリックします。
デフォルトの Grafana ユーザー名およびパスワードは、どちらも
adminです。初回ログイン後に、パスワードを変更できます。- Configuration > Data Sources で、Prometheus データソースが作成済みであることを確認します。データソースは 「Prometheus データソースを使用した Grafana のデプロイ」 に作成されています。
- + アイコンをクリックしてから、Import をクリックします。
-
examples/metrics/grafana-dashboardsで、インポートするダッシュボードの JSON をコピーします。 - JSON をテキストボックスに貼り付け、Load をクリックします。
- 他の Grafana ダッシュボードのサンプル用に、ステップ 5-7 を繰り返します。
インポートされた Grafana ダッシュボードは、Dashboards ホームページから表示できます。