21.5. OpenShift での Kafka メトリクスおよびダッシュボードの表示
Streams for Apache Kafka が OpenShift Container Platform にデプロイされると、ユーザー定義プロジェクトのモニタリング によりメトリクスが提供されます。この OpenShift 機能により、開発者は独自のプロジェクト (例: Kafka プロジェクト) を監視するために別の Prometheus インスタンスにアクセスできます。
ユーザー定義プロジェクトのモニタリングが有効な場合は、openshift-user-workload-monitoring プロジェクトには以下のコンポーネントが含まれます。
- Prometheus operator
- Prometheus インスタンス (Prometheus Operator によって自動的にデプロイされます)
- Thanos Ruler インスタンス
Streams for Apache Kafka では、これらのコンポーネントを使用してメトリクスを消費します。
クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にし、開発者およびその他のユーザーに自分のプロジェクトに含まれるアプリケーションを監視するパーミッションを付与する必要があります。
Grafana のデプロイメント
Grafana インスタンスを、Kafka クラスターが含まれるプロジェクトにデプロイできます。その後、サンプルの Grafana ダッシュボードを使用して、Grafana ユーザーインターフェイスで Streams for Apache Kafka の Prometheus メトリクスを視覚化できます。
openshift-monitoring プロジェクトはコアプラットフォームコンポーネントをモニタリングできます。このプロジェクトの Prometheus および Grafana コンポーネントを使用して、OpenShift Container Platform 4.x 上の Streams for Apache Kafka の監視を設定 しないでください。
手順の概要
OpenShift Container Platform で Streams for Apache Kafka の監視を設定するには、次の手順を順番に実行します。
21.5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- YAML ファイルのサンプルを使用して、Prometheus メトリクス設定がデプロイされている。
-
ユーザー定義プロジェクトの監視が有効になっている。クラスター管理者が OpenShift クラスターに
cluster-monitoring-configの Config Map を作成している。 -
クラスター管理者は、
monitoring-rules-editまたはmonitoring-editロールを割り当てている。
cluster-monitoring-config config map を作成し、ユーザーにユーザー定義プロジェクトを監視する権限を付与する方法の詳細は、OpenShift のドキュメント を参照してください。
21.5.2. Prometheus リソースのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Prometheus を使用して、Kafka クラスターのモニタリングデータを取得します。
独自の Prometheus デプロイメントを使用することも、Streams for Apache Kafka に付属する サンプルのメトリクス設定ファイル を使用して Prometheus をデプロイすることもできます。サンプルファイルを使用するには、PodMonitor リソースを設定し、デプロイします。PodMonitors は、Apache Kafka、ZooKeeper、Operator、Kafka Bridge、および Cruise Control から直接データをスクレープします。
次に、Alertmanager のアラートルールのサンプルをデプロイします。
前提条件
- Kafka クラスターが稼働している。
- Streams for Apache Kafka に付属する アラートルールのサンプル を確認した。
手順
ユーザー定義プロジェクトのモニタリングが有効であることを確認します。
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
21.5.3. Grafana のサービスアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
Streams for Apache Kafka の 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 をデプロイするときにアクセストークンが必要です。
21.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
21.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
21.5.6. Grafana ダッシュボードサンプルのインポート リンクのコピーリンクがクリップボードにコピーされました!
Grafana を使用して、カスタマイズ可能なダッシュボードで Prometheus メトリックを視覚化します。
Streams for Apache Kafka には、JSON 形式の Grafana ダッシュボード設定ファイルのサンプル が用意されています。
-
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 ホームページから表示できます。