我成功部署了头盔图表prometheus operator,kube-prometheus和kafka(尝试使用图像danielqsj / kafka_exporter v1.0.1
和v1.2.0
)。
大多数使用默认值安装,因此启用了rbac。
我可以在Prometheus的Kafka目标列表中看到3个up
节点,但是在Grafana中,我可以看到任何带有kafka overview的kafka指标
我错过了什么,或者可以检查一下以解决此问题?
我可以看到指标以java_
,kafka_
开头,但没有jvm_
,只有少数jmx_
指标。
我发现有人报告了类似的问题(https://groups.google.com/forum/#!searchin/prometheus-users/jvm_%7Csort:date/prometheus-users/OtYM7qGMbvA/dZ4vIfWLAgAJ),因此我使用了从0.6到0.9的旧版jmx导出器进行部署,仍然没有jvm_
指标。
有什么我想念的吗?
kuberentes:AWS EKS(kubernetes版本为1.10.x)
公共grafana仪表板:kafka overview
答案 0 :(得分:1)
刚刚意识到README中提到的jmx-exporter
的所有者:
此导出器为
intended to be run as a Java Agent
,公开了HTTP服务器并提供本地JVM的度量。它也可以作为独立的HTTP服务器运行,并刮擦远程JMX目标but this has various disadvantages
,例如,较难配置且无法公开流程指标(例如,内存和CPU使用率)。因此,强烈建议将导出程序作为Java代理运行。
直到我看到以下评论之前,我才真正理解这是什么意思:
https://github.com/prometheus/jmx_exporter/issues/111#issuecomment-341983150
@ brian-brazil是否可以向自述文件添加一些技巧,使它们仅在使用Java代理时才公开jvm_ *指标?仅使用HTTP服务器版本后,我花了一两个小时进行故障排除和搜索旧问题,以解决此问题。谢谢!
因此jmx-exporter必须与java agent
一起运行才能获得jvm_
度量。 jmx_prometheus_httpserver
不支持,但这是kafka掌舵图中的默认设置。
https://github.com/kubernetes/charts/blob/master/incubator/kafka/templates/statefulset.yaml#L82
command:
- sh
- -exc
- |
trap "exit 0" TERM; \
while :; do \
java \
-XX:+UnlockExperimentalVMOptions \
-XX:+UseCGroupMemoryLimitForHeap \
-XX:MaxRAMFraction=1 \
-XshowSettings:vm \
-jar \
jmx_prometheus_httpserver.jar \ # <<< here
{{ .Values.prometheus.jmx.port | quote }} \
/etc/jmx-kafka/jmx-kafka-prometheus.yml & \
wait $! || sleep 3; \
done
答案 1 :(得分:0)
您必须为提供--set prometheus.jmx.enabled=true,prometheus.kafka.enabled=true
的kafka舵图打开jmx和exporter。默认值为false
。