【问题标题】:Expose metrics for Kotlin using JMX_Exporter to prometheus使用 JMX_Exporter 向 prometheus 公开 Kotlin 的指标
【发布时间】:2019-08-21 06:59:40
【问题描述】:

我正在尝试将 JMX_Exporter 用于我的 kotlin 代码,以向 prometheus 公开指标,以便在 Grafana 中显示它。我浏览了许多文章并试图了解如何做到这一点。我发现以下两个链接很有用,并尝试使用这些链接来实现。

  1. https://github.com/prometheus/jmx_exporter
  2. https://www.openlogic.com/blog/monitoring-java-applications-prometheus-and-grafana-part-1

到目前为止,我所做的是,在根目录中创建了一个文件夹“prometheus-jmx”,并在该文件夹中添加了提到的 JAR 和 config.yml 文件。然后,我将以下参数添加到我的 dockerfile 中。

CMD java -Xms128m -Xmx256m -javaagent:./jmx_prometheus_javaagent-0.12.0.jar=8080:./config.yml -Dconfig.file=config/routing.conf -cp jagathe-jar-with- 
    dependencies.jar:./* com.bmw.otd.agathe.AppKt

我的 prometheus 与我的应用程序一起在我的 OpenShift 集群中运行。我可以为我的其他应用程序/部署(如 Jenkins、SonarQube 等)抓取指标,而无需对 Prometheus 的 deployment.yml 进行任何修改。

我的应用程序现在在 OpenShift 上正常运行,并且从应用程序的 pod 中,我可以使用以下命令抓取指标。

curl http://localhost:portNumber

但在 promethus UI 上,我看不到任何 JVM 或 JMX 相关指标。

谁能告诉我我在哪里做错了什么?任何形式的帮助将不胜感激。

【问题讨论】:

  • 您在 Kotlin 中看到任何错误日志了吗?服务器是否正确列出了 8080 ?是否可以从 Kotlin 访问 root 下的路径?
  • @LinPy 是的,可以从 Kotlin 访问路径,因为当我打包代码时,我想在 OpenShift pod 上复制的所有内容都会被复制。我不确定端口,因为我不知道应该把什么作为端口,因为一切都在 openshift 集群上运行。也许我需要输入 url 以便获得指标。但我不确定..
  • 确保端口应该可以正常工作
  • @LinPy 我不明白.. :-(
  • @LinPy 我是否需要为 prometheus 添加一些 maven 依赖项?

标签: docker kotlin openshift grafana prometheus


【解决方案1】:

在尝试了很多事情之后,我开始知道我需要公开我的应用程序容器的端口,以便让 Prometheus 或其他部署知道。暴露端口后,我可以在 Prometheus 上的目标下看到我的应用程序,并且可以抓取所有 JMX 和 JVM 指标。希望这对将来的某人有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2019-12-13
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    相关资源
    最近更新 更多