8.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 のモニターングを設定するには、以下の手順を順番に行います。
8.5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- YAML ファイルのサンプルを使用して、Prometheus メトリクス設定がデプロイされている。
-
ユーザー定義プロジェクトの監視が有効になっている。クラスター管理者が OpenShift クラスターに
cluster-monitoring-configの Config Map を作成している。 -
クラスター管理者は、
monitoring-rules-editまたはmonitoring-editロールを割り当てている。
cluster-monitoring-config の Config Map の作成およびユーザー定義プロジェクトの監視用のパーミッションをユーザーに付与する方法の詳細は、OpenShift Container Platform の モニタリング を参照してください。
8.5.3. 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有効であると、モニタリングコンポーネントの Pod が返されます。以下に例を示します。
NAME READY STATUS RESTARTS AGE prometheus-operator-5cc59f9bc6-kgcq8 1/1 Running 0 25s prometheus-user-workload-0 5/5 Running 1 14s prometheus-user-workload-1 5/5 Running 1 14s thanos-ruler-user-workload-0 3/3 Running 0 14s thanos-ruler-user-workload-1 3/3 Running 0 14sPod が返されなければ、ユーザー定義プロジェクトのモニタリングは無効になっています。「OpenShift での Kafka メトリクスおよびダッシュボードの表示」 の前提条件を参照してください。
複数の
PodMonitorリソースは、examples/metrics/prometheus-install/strimzi-pod-monitor.yamlで定義されます。PodMonitorリソースごとにspec.namespaceSelector.matchNamesプロパティーを編集します。apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: cluster-operator-metrics labels: app: strimzi spec: selector: matchLabels: strimzi.io/kind: cluster-operator namespaceSelector: matchNames: - <project-name>1 podMetricsEndpoints: - path: /metrics port: http # ...- 1
- メトリクスをスクレープする Pod が実行されているプロジェクト (例:
Kafka)。
strimzi-pod-monitor.yamlファイルを、Kafka クラスターが稼働しているプロジェクトにデプロイします。oc apply -f strimzi-pod-monitor.yaml -n MY-PROJECTPrometheus ルールのサンプルを同じプロジェクトにデプロイします。
oc apply -f prometheus-rules.yaml -n MY-PROJECT
8.5.4. Grafana のサービスアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Streams の Grafana インスタンスは、cluster-monitoring-view ロールが割り当てられたサービスアカウントで実行する必要があります。
Grafana を使用してモニタリングのメトリクスを表示する場合は、サービスアカウントを作成します。
前提条件
手順
Grafana の
ServiceAccountを作成します。ここでは、リソースの名前はgrafana-serviceaccountです。apiVersion: v1 kind: ServiceAccount metadata: name: grafana-serviceaccount labels: app: strimziServiceAccountを、Kafka クラスターが含まれるプロジェクトにデプロイします。oc apply -f GRAFANA-SERVICEACCOUNT -n MY-PROJECTcluster-monitoring-viewロールを GrafanaServiceAccountに割り当てるClusterRoleBindingリソースを作成します。ここでは、リソースの名前はgrafana-cluster-monitoring-bindingです。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: grafana-cluster-monitoring-binding labels: app: strimzi subjects: - kind: ServiceAccount name: grafana-serviceaccount namespace: <my-project>1 roleRef: kind: ClusterRole name: cluster-monitoring-view apiGroup: rbac.authorization.k8s.io- 1
- プロジェクトの名前。
ClusterRoleBindingを、Kafka クラスターが含まれるプロジェクトにデプロイします。oc apply -f <grafana-cluster-monitoring-binding> -n <my-project>
8.5.5. 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 アプリケーションをデプロイします。
手順
Grafana
ServiceAccountのアクセストークンを取得します。oc serviceaccounts get-token grafana-serviceaccount -n MY-PROJECT次のステップで使用するアクセストークンをコピーします。
Grafana の Thanos Querier 設定が含まれる
datasource.yamlファイルを作成します。以下に示すように、アクセストークンを
httpHeaderValue1プロパティーに貼り付けます。apiVersion: 1 datasources: - name: Prometheus type: prometheus url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091 access: proxy basicAuth: false withCredentials: false isDefault: true jsonData: timeInterval: 5s tlsSkipVerify: true httpHeaderName1: "Authorization" secureJsonData: httpHeaderValue1: "Bearer ${GRAFANA-ACCESS-TOKEN}"1 editable: true- 1
GRAFANA-ACCESS-TOKEN: GrafanaServiceAccountのアクセストークンの値。
datasource.yamlファイルからgrafana-configという名前の config map を作成します。oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECTDeploymentおよびServiceで設定される Grafana アプリケーションを作成します。grafana-configconfig map はデータソース設定のボリュームとしてマウントされます。apiVersion: apps/v1 kind: Deployment metadata: name: grafana labels: app: strimzi spec: replicas: 1 selector: matchLabels: name: grafana template: metadata: labels: name: grafana spec: serviceAccountName: grafana-serviceaccount containers: - name: grafana image: grafana/grafana:9.3.1 ports: - name: grafana containerPort: 3000 protocol: TCP volumeMounts: - name: grafana-data mountPath: /var/lib/grafana - name: grafana-logs mountPath: /var/log/grafana - name: grafana-config mountPath: /etc/grafana/provisioning/datasources/datasource.yaml readOnly: true subPath: datasource.yaml readinessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 15 periodSeconds: 20 volumes: - name: grafana-data emptyDir: {} - name: grafana-logs emptyDir: {} - name: grafana-config configMap: name: grafana-config --- apiVersion: v1 kind: Service metadata: name: grafana labels: app: strimzi spec: ports: - name: grafana port: 3000 targetPort: 3000 protocol: TCP selector: name: grafana type: ClusterIPGrafana アプリケーションを、Kafka クラスターが含まれるプロジェクトにデプロイします。
oc apply -f <grafana-application> -n <my-project>
8.5.6. Grafana サービスへのルートの作成 リンクのコピーリンクがクリップボードにコピーされました!
Grafana サービスを公開するルートを介して、Grafana ユーザーインターフェイスにアクセスできます。
手順
grafanaサービスへのルートを作成します。oc create route edge <my-grafana-route> --service=grafana --namespace=KAFKA-NAMESPACE
8.5.7. 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- 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 ホームページから表示できます。