JMX 导出器和 Prometheus

Posted

技术标签:

【中文标题】JMX 导出器和 Prometheus【英文标题】:JMX exporter and Prometheus 【发布时间】:2020-02-26 06:18:25 【问题描述】:

嗨,所有这个问题都是question这里的延续

现在我在节点 x214 上运行单节点 kafka 代理,并在端口 7071 上使用 jmx 导出器报告指标

curl -s localhost:7071 | grep -i kafka
# reports many metrics on std out

我想将 jmx 导出器与 Prometheus 连接,并最终连接到 grafana 进行可视化;如here 所述

我尝试按照博客的说明安装 Prometheus,但遇到了问题;我发现使用 docker 容器很容易启动 Prometheus

docker run -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

我在节点 x215(与 kafka 代理不同的节点)上运行 Prometheus。我可以通过http://x215-ip:9090 联系 Prometheus gui

prometheus.yaml 文件设置如下。

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus_master'
    scrape_interval: 5s
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['IP-215:9090']
  - job_name: ‘kafka-server’
    static_configs:
      - targets: [‘IP-214:7071’]

问题:- 在 Prometheus gui 上我找不到任何 kafka 指标;在上面的curl 命令的响应中可见

指标页面(IP-215:9090/metrics)的响应是here

我觉得 JMX 导出器正确报告了指标,但它没有正确连接到 Prometheus。你能帮帮我吗?

谢谢

【问题讨论】:

IP-214:7071/metrics 可以访问吗? 不抱歉,我会删除超链接 改写问题。您可以进入容器并卷曲该指标端点吗?你需要另一台机器上的 Docker 中的 Prometheus 吗?出口商是否只绑定在本地主机上?这些就是我们所说的可访问性 另外,curl -s localhost:7071curl -s localhost:7071/metrics 不同 Repgrasing : 可以从 Prometheus 访问 IP-214:7071/metrics 吗? 【参考方案1】:

我们需要更多信息来帮助确定这里发生了什么。你能分享以下内容吗:

JMX 导出器的绑定接口(它是在侦听 0.0.0.0、127.0.0.1 还是其他特定接口?)这可以通过 ss -plunt | grep -i jmx 之类的内容进行检查 prometheus 实例能否通过网络访问JMX Exporter 实例?鉴于它们位于不同的机器上,可能会遇到很多事情(防火墙、网络配置、SDN、IPtables ......仅举几例)。 prometheus 容器确实有 telnet,因此最简单的方法是使用它来查看是否可以连接到端口 7071。docker exec -it prometheus sh 并运行 telnet IP-214:7071。你也可以使用 curl,但 prometheus 镜像中没有 curl。

检查这两项有助于排除配置中的一些简单问题。

【讨论】:

以上是关于JMX 导出器和 Prometheus的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JMX 导出器将 JMX 指标从 Kafka 消费者推送到普罗米修斯

kafka 和 JMX 导出器

Prometheus jmx 导出器模式匹配属性和项目

Fiddler导出jmx格式数据操作

如何将 Prometheus 与 Presto JMX 连接起来

RMI 服务导出器和 HttpInvoker 之间的区别?