Grafana / Prometheus中没有kafka指标

时间:2018-07-17 02:55:37

标签: apache-kafka kubernetes kubernetes-helm amazon-eks

我成功部署了头盔图表prometheus operatorkube-prometheuskafka(尝试使用图像danielqsj / kafka_exporter v1.0.1v1.2.0)。

大多数使用默认值安装,因此启用了rbac。

我可以在Prometheus的Kafka目标列表中看到3个up节点,但是在Grafana中,我可以看到任何带有kafka overview的kafka指标

我错过了什么,或者可以检查一下以解决此问题?

我可以看到指标以java_kafka_开头,但没有jvm_,只有少数jmx_指标。

enter image description here

我发现有人报告了类似的问题(https://groups.google.com/forum/#!searchin/prometheus-users/jvm_%7Csort:date/prometheus-users/OtYM7qGMbvA/dZ4vIfWLAgAJ),因此我使用了从0.6到0.9的旧版jmx导出器进行部署,仍然没有jvm_指标。

有什么我想念的吗?

env:

kuberentes:AWS EKS(kubernetes版本为1.10.x)

公共grafana仪表板:kafka overview

2 个答案:

答案 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