全球最大购物网站,产品推广宣传方案,信用徐州网站建设情况,怎么做刷业务网站第三方kafka exporter方案
目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter#xff0c;他的原理大概就是启动一个kafka客户端#xff0c;获取kafka服务器的信息#xff0c;然后提供一些metric接口供Prometheus使用#xff0c;随意它…第三方kafka exporter方案
目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter他的原理大概就是启动一个kafka客户端获取kafka服务器的信息然后提供一些metric接口供Prometheus使用随意它能展示的监控信息比较有限只有每个主题的分区数每秒/分钟消息数消费组的lag数。但是kafka本身的JMX有提供500的监控信息可以进行监控当然不是说这这么监控指标都很重要相比kafka exporter直接使用JMX可监控的选项会更多。
Prometheus官方方案
Prometheus官方提供的jmx_exporter可以将JMX转换为Prometheus Metrics格式。
Prometheus JMX exporter使用方式选择
jmx_exporter提供两种用法
一种是启动独立的进程。JVM 启动时指定参数暴露 JMX 的 RMI 接口JMX_Exporter 调用 RMI 获取 JVM 运行时状态数据转换为 Prometheus metrics 格式并暴露端口让 Prometheus 采集。一种是JVM进程内启动通过java agent的形式运行进程内读取 JVM 运行时状态数据转换为 Prometheus metrics 格式并暴露端口让 Prometheus 采集。官方比较推荐使用这种方式。
使用JMX exporter监控kafka
在kafka-server-start.sh最上面添加下面的代码
export KAFKA_OPTS-javaagent:/opt/kafka_2.11-1.1.0/bin/jmx_prometheus_javaagent-0.19.0.jar9990:/opt/kafka_2.11-1.1.0/bin/kafka-jmx.ymljmx_exporter官网下载最新的jmx_prometheus_javaagent-0.19.0.jar包。
kafka-jmx.yml
lowercaseOutputName: truerules:
# Special cases and very specific rules
- pattern : kafka.servertype(.), name(.), clientId(.), topic(.), partition(.*)Valuename: kafka_server_$1_$2type: GAUGElabels:clientId: $3topic: $4partition: $5
- pattern : kafka.servertype(.), name(.), clientId(.), brokerHost(.), brokerPort(.)Valuename: kafka_server_$1_$2type: GAUGElabels:clientId: $3broker: $4:$5
- pattern : kafka.coordinator.(\w)type(.), name(.)Valuename: kafka_coordinator_$1_$2_$3type: GAUGE# Generic per-second counters with 0-2 key/value pairs
- pattern: kafka.(\w)type(.), name(.)PerSec\w*, (.)(.), (.)(.)Countname: kafka_$1_$2_$3_totaltype: COUNTERlabels:$4: $5$6: $7
- pattern: kafka.(\w)type(.), name(.)PerSec\w*, (.)(.)Countname: kafka_$1_$2_$3_totaltype: COUNTERlabels:$4: $5
- pattern: kafka.(\w)type(.), name(.)PerSec\w*Countname: kafka_$1_$2_$3_totaltype: COUNTER- pattern: kafka.servertype(.), client-id(.)([a-z-])name: kafka_server_quota_$3type: GAUGElabels:resource: $1clientId: $2- pattern: kafka.servertype(.), user(.), client-id(.)([a-z-])name: kafka_server_quota_$4type: GAUGElabels:resource: $1user: $2clientId: $3# Generic gauges with 0-2 key/value pairs
- pattern: kafka.(\w)type(.), name(.), (.)(.), (.)(.)Valuename: kafka_$1_$2_$3type: GAUGElabels:$4: $5$6: $7
- pattern: kafka.(\w)type(.), name(.), (.)(.)Valuename: kafka_$1_$2_$3type: GAUGElabels:$4: $5
- pattern: kafka.(\w)type(.), name(.)Valuename: kafka_$1_$2_$3type: GAUGE# Emulate Prometheus Summary metrics for the exported Histograms.
#
# Note that these are missing the _sum metric!
- pattern: kafka.(\w)type(.), name(.), (.)(.), (.)(.)Countname: kafka_$1_$2_$3_counttype: COUNTERlabels:$4: $5$6: $7
- pattern: kafka.(\w)type(.), name(.), (.)(.*), (.)(.)(\d)thPercentilename: kafka_$1_$2_$3type: GAUGElabels:$4: $5$6: $7quantile: 0.$8
- pattern: kafka.(\w)type(.), name(.), (.)(.)Countname: kafka_$1_$2_$3_counttype: COUNTERlabels:$4: $5
- pattern: kafka.(\w)type(.), name(.), (.)(.*)(\d)thPercentilename: kafka_$1_$2_$3type: GAUGElabels:$4: $5quantile: 0.$6
- pattern: kafka.(\w)type(.), name(.)Countname: kafka_$1_$2_$3_counttype: COUNTER
- pattern: kafka.(\w)type(.), name(.)(\d)thPercentilename: kafka_$1_$2_$3type: GAUGElabels:quantile: 0.$4
配置好kafka-server-start.sh后还需要重启kafka。
Prometheus配置
在Prometheus的prometheus.yml添加如下内容。注意端口号为KAFKA_OPTS配置的端口。
- job_name: kafka_jmxmetrics_path: /metricsstatic_configs:- targets: [192.168.249.1:9990,192.168.249.2:9990,192.168.249.3:9990]配置完成后重新加载Prometheus配置文件就可以了。
grafana 配置
通过上面配置后可以在grafan中找到对应的面板直接来用。
https://grafana.com/grafana/dashboards/18276-kafka-dashboard/效果