Kafka Exporter接入
操作场景
使用Kafka过程中需要对Kafka运行状态进行监控,例如集群状态、消息消费情况是否有积压等。Prometheus监控服务提供了CCE容器场景下基于Exporter的方式来监控Kafka运行状态。本文介绍如何部署Kafka Exporter以及实现Kafka Exporter告警接入等操作。
为了方便安装管理Exporter,推荐使用CCE进行统一管理。
前提条件
- CCE服务已拥有CCE集群并已安装Kafka。
- 服务已接入可观测Prometheus监控并接入CCE集群,具体请参见Prometheus实例 for CCE。
- 已将对应kafka_exporter镜像上传到SWR,具体操作请参见使用容器引擎客户端上传镜像。
Kafka Exporter部署
- 登录CCE控制台。
- 单击已接入的集群名称,进入该集群的管理页面。
- 执行以下操作完成Exporter部署。
- 部署Kafka Exporter。
在左侧导航栏中选择“工作负载”,在右上角单击“创建负载”,选择“负载类型”为无状态工作负载Deployment,选择需要的命名空间部署Kafka Exporter。如果以YAML的方式部署Exporter,YAML配置示例如下:
apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: kafka-exporter # 根据业务需要调整成对应的名称,建议加上Kafka实例的信息, 如 ckafka-2vrgx9fd-kafka-exporter name: kafka-exporter # 根据业务需要调整成对应的名称,建议加上Kafka实例的信息, 如 ckafka-2vrgx9fd-kafka-exporter namespace: default #已存在集群的namespace spec: replicas: 1 selector: matchLabels: k8s-app: kafka-exporter # 根据业务需要调整成对应的名称,建议加上Kafka实例的信息, 如 ckafka-2vrgx9fd-kafka-exporter template: metadata: labels: k8s-app: kafka-exporter # 根据业务需要调整成对应的名称,建议加上Kafka实例的信息, 如 ckafka-2vrgx9fd-kafka-exporter spec: containers: - args: - --kafka.server=120.46.215.4:30092 # 对应Kafka实例的地址信息 image: swr.cn-north-4.myhuaweicloud.com/mall-swarm-demo/kafka-exporter:latest imagePullPolicy: IfNotPresent name: kafka-exporter ports: - containerPort: 9308 name: metric-port # 这个名称在配置抓取任务的时候需要 securityContext: privileged: false terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst imagePullSecrets: - name: default-secret restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 --- apiVersion: v1 kind: Service metadata: name: kafka-exporter spec: type: NodePort selector: k8s-app: kafka-exporter ports: - protocol: TCP nodePort: 30091 port: 9308 targetPort: 9308
更多 Exporter详细参数介绍请参见 kafka-exporter。
- 验证Kafka Exporter是否部署成功。
- 在工作负载列表中“无状态负载”页签下,单击3.a创建的无状态工作负载,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露对应的访问地址。
图1 查看日志
- 验证。有以下三种方法进行验证:
- 登录集群节点执行如下任意一种命令:
curl http://{集群IP}:9308/metrics
curl http://{集群任意节点私有IP}:30091/metrics
- 在实例列表中单击操作列下的“更多 > 远程登录”,执行如下命令:
curl http://localhost:9308/metric
- 访问:http://{集群任意节点的公网IP}:30091/metrics。
图2 访问地址
- 登录集群节点执行如下任意一种命令:
- 在工作负载列表中“无状态负载”页签下,单击3.a创建的无状态工作负载,在实例列表中单击操作列下的“更多 > 日志”,可以查看到Exporter成功启动并暴露对应的访问地址。
- 部署Kafka Exporter。
采集CCE集群的业务数据
通过新增PodMonitor方式为应用配置可观测监控Prometheus版的采集规则,监控部署在CCE集群内的应用的业务数据。
如下指标采集的周期是30秒,所以等待大概30秒后才能在AOM的界面上查看到上报的指标。
apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: kafka-exporter namespace: default spec: namespaceSelector: matchNames: - default # exporter 所在的命名空间 podMetricsEndpoints: - interval: 30s path: /metrics port: metric-port selector: matchLabels: k8s-app: kafka-exporter
验证指标上报到AOM
- 登录AOM 2.0控制台。
- 在左侧菜单栏中选择“Prometheus监控 > 实例列表”。
- 单击接入了该CCE集群的“prometheus for CCE”实例名称,进入实例详情页面。
- 在“指标管理”页面的“指标”页签下,选择对应集群。
- 选择Job:{namespace}/kafka-exporter,可以查询到kafka开头的自定义指标。