8.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 项目为核心平台组件提供监控。不要在 OpenShift Container Platform 4.x 上使用 Prometheus 和 Grafana 组件来为 AMQ Streams 配置监控。
流程概述
要在 OpenShift Container Platform 中设置 AMQ Streams 监控,请按照以下步骤执行:
8.5.1. 先决条件 复制链接链接已复制到粘贴板!
- 已使用示例 YAML 文件 部署了 Prometheus 指标配置。
-
启用了 对用户定义的项目的监控。集群管理员已在 OpenShift 集群中创建了
cluster-monitoring-config配置映射。 -
集群管理员已为您分配了
monitoring-rules-edit或monitoring-edit角色。
有关创建 cluster-monitoring-config 配置映射并授予用户监控用户定义的项目的权限的更多信息,请参阅 OpenShift Container Platform Monitoring。
8.5.3. 部署 Prometheus 资源 复制链接链接已复制到粘贴板!
使用 Prometheus 获取 Kafka 集群中的监控数据。
您可以使用自己的 Prometheus 部署,或使用 AMQ Streams 提供的示例指标配置文件 部署 Prometheus。要使用示例文件,您需要配置和部署 PodMonitor 资源。PodMonitor 直接从 Apache Kafka、ZooKeeper、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-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用,则返回监控组件的 Pod。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有返回 pod,则禁用对用户定义的项目的监控。请参阅 第 8.5 节 “在 OpenShift 中查看 Kafka 指标和仪表板” 中的先决条件。
在 example
/metrics/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-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
8.5.4. 为 Grafana 创建服务帐户 复制链接链接已复制到粘贴板!
AMQ Streams 的 Grafana 实例需要使用为 cluster-monitoring-view 角色的服务帐户运行。
如果您使用 Grafana 呈现用于监控指标,请创建一个服务帐户。
先决条件
流程
为 Grafana 创建
ServiceAccount。此处的资源名为grafana-serviceaccount。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ServiceAccount部署到包含 Kafka 集群的项目:oc apply -f GRAFANA-SERVICEACCOUNT -n MY-PROJECT
oc apply -f GRAFANA-SERVICEACCOUNT -n MY-PROJECTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
ClusterRoleBinding资源,它将cluster-monitoring-view角色分配给 GrafanaServiceAccount。此处的资源名为grafana-cluster-monitoring-binding。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 项目的名称。
将
ClusterRoleBinding部署到包含 Kafka 集群的项目:oc apply -f <grafana-cluster-monitoring-binding> -n <my-project>
oc apply -f <grafana-cluster-monitoring-binding> -n <my-project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5.5. 使用 Prometheus 数据源部署 Grafana 复制链接链接已复制到粘贴板!
将 Grafana 部署到 present Prometheus 指标。Grafana 应用程序需要配置 OpenShift Container Platform 监控堆栈。
OpenShift Container Platform 在 openshift-monitoring 项目中包含一个 Thanos Querier 实例。Thanos Querier 用于聚合平台指标。
要使用所需的平台指标,您的 Grafana 实例需要一个可连接到 Thanos Querier 的 Prometheus 数据源。要配置这个连接,您可以创建一个配置映射来进行身份验证,使用令牌到与 Thanos Querier 一起运行的 oauth-proxy sidecar。datasource.yaml 文件被用作配置映射的来源。
最后,您要使用挂载为卷的配置映射部署 Grafana 应用程序到包含 Kafka 集群的项目。
流程
获取 Grafana
ServiceAccount的访问令牌:oc serviceaccounts get-token grafana-serviceaccount -n MY-PROJECT
oc serviceaccounts get-token grafana-serviceaccount -n MY-PROJECTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制访问令牌以在下一步中使用。
创建包含 Grafana 的 Thanos Querier 配置的
datasource.yaml文件。按照所示,将访问令牌粘贴到
httpHeaderValue1属性中。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
GRAFANA-ACCESS-TOKEN:GrafanaServiceAccount的访问令牌值。
从 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-PROJECTCopy 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
8.5.6. 创建到 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
8.5.7. 导入 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 grafanaCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 Web 浏览器中,使用 Route 主机和端口的 URL 访问 Grafana 登录屏幕。
输入您的用户名和密码,然后点 Log In。
默认的 Grafana 用户名和密码都是
admin。第一次登录后,您可以更改密码。- 在 Configuration > Data Sources 中,检查是否已创建 Prometheus 数据源。数据源是在 第 8.5.5 节 “使用 Prometheus 数据源部署 Grafana” 中创建。
- 单击 + 图标,然后单击 Import。
-
在
example/metrics/grafana-dashboards中,复制要导入的仪表板的 JSON。 - 将 JSON 粘贴到文本框中,然后单击 Load。
- 为其他 Grafana 仪表板重复步骤 5-7。
从 Dashboards 主页中查看导入的 Grafana 仪表板。