20.5. 查看 OpenShift 中的 Kafka 指标和仪表板
				当 AMQ Streams 部署到 OpenShift Container Platform 时,通过 监控用户定义的项目提供指标。此 OpenShift 功能可让开发人员访问一个单独的 Prometheus 实例来监控自己的项目(如 Kafka 项目)。
			
				如果启用了对用户定义的项目的监控,openshift-user-workload-monitoring 项目包含以下组件:
			
- Prometheus operator
- Prometheus 实例(由 Prometheus Operator 自动部署)
- Thanos Ruler 实例
AMQ Streams 使用这些组件来消耗指标。
集群管理员必须为用户定义的项目启用监控,然后授予开发人员和其他用户权限来监控其自己的项目中的应用程序。
Grafana 部署
您可以将 Grafana 实例部署到包含 Kafka 集群的项目中。然后,Grafana 仪表板示例可用于在 Grafana 用户界面中视觉化 AMQ Streams 的 Prometheus 指标。
					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配置映射。
- 
							集群管理员已分配了 monitoring-rules-edit或monitoring-edit角色。
					有关创建 cluster-monitoring-config 配置映射并授予用户权限来监控用户定义的项目的的更多信息,请参阅 OpenShift 文档。
				
20.5.2. 部署 Prometheus 资源
使用 Prometheus 获取 Kafka 集群中的监控数据。
					您可以使用您自己的 Prometheus 部署,或使用 AMQ Streams 提供的示例指标配置文件 部署 Prometheus。要使用示例文件,请配置和部署 PodMonitor 资源。PodMonitors 直接从 Apache Kafka、Zook、Operator、Kafka Bridge 和 Cruise Control 的 pod 中提取数据。
				
然后,您要为 Alertmanager 部署示例警报规则。
先决条件
- 正在运行的 Kafka 集群。
- 检查 AMQ Streams 提供的示例警报规则。
流程
- 检查是否启用了对用户定义的项目的监控: - oc get pods -n openshift-user-workload-monitoring - oc get pods -n openshift-user-workload-monitoring- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果启用,则返回监控组件的 pod。例如: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果没有返回 pod,则禁用对用户定义的项目的监控。请参阅 第 20.5 节 “查看 OpenShift 中的 Kafka 指标和仪表板” 中的先决条件。 
- 示例/指标/prometheus-install/strimzi-pod-monitor.yaml中定义了多个- PodMonitor资源。- 对于每个 - 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-PROJECT- Copy 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-PROJECT- Copy 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-project- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在本例中,在 - my-project命名空间中创建一个名为- grafana-service-account的服务帐户。
- 创建一个 - ClusterRoleBinding资源,将- cluster-monitoring-view角色分配给 Grafana- ServiceAccount。此处的资源名为- 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-project- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为服务帐户创建令牌 secret: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 - Secret对象和访问令牌:- oc create -f <secret_configuration>.yaml - oc create -f <secret_configuration>.yaml- Copy 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 sidecar。数据源.yaml 文件用作配置映射的来源。
				
最后,您可以使用作为卷挂载到包含 Kafka 集群的项目中的配置映射来部署 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:Grafras- ServiceAccount的访问令牌值。
 
- 从 - datasource.yaml文件中创建一个名为- grafana-config的配置映射:- oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECT - oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECT- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建由 - Deployment和- Service组成的 Grafana 应用程序。- grafana-config配置映射作为数据源配置的卷挂载。- 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-NAMESPACE- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
20.5.6. 导入 Grafana 仪表板示例
使用 Grafana 在可自定义仪表板上提供 Prometheus 指标的视觉化。
AMQ Streams 以 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 grafana- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 Web 浏览器中,使用 Route 主机和端口的 URL 访问 Grafana 登录屏幕。
- 输入您的用户名和密码,然后单击 Log In。 - 默认的 Grafana 用户名和密码都是 - admin。第一次登录后,您可以更改密码。
- 在 Configuration > Data Sources 中,检查 Prometheus 数据源是否已创建。数据源在 第 20.5.4 节 “使用 Prometheus 数据源部署 Grafana” 中创建。
- 点 + 图标,然后点 Import。
- 
							在 examples/metrics/grafana-dashboards中,复制要导入的仪表板的 JSON。
- 将 JSON 粘贴到文本框中,然后点 Load。
- 为其他 Grafana 仪表板重复步骤 5-7。
从 Dashboards 主页中查看导入的 Grafana 仪表板。