我们都知道普罗米修斯是一个用于收集和查询指标的流行系统,特别是在Kubernetes和临时实例的云原生世界中。
但是人们忘记了Java从1995年就开始运行企业软件了,而Prometheus相对来说还是个新人。它是2012年才创建的!尽管Java在Prometheus诞生之前就已经有了自己的度量收集器,但我们的新环境中没有一个使用它的(度量)语言。
你怎样才能弥补这种差距呢?
这是普罗米修斯JMX出口商的工作。导出器连接到Java的本机度量收集系统Java Management Extensions (JMX),并将度量转换为Prometheus可以理解的格式。
在这篇文章中,我将使用Kafka作为一个你想要监视的Java应用程序的例子。我将构建JMX导出器,部署Kafka,并将其指标引入Grafana进行监视。
注意:本教程假设您有一个Java开发环境,其中包括maven并且已经部署了一个Grafana实例。
你还需要下载一份Kafka的拷贝。Kafka二进制文件是为许多环境预先构建的。上的下载链接Kafka快速入门页面下载Kafka,但还没有开始。
如果您想比较Java的本机JMX输出与Prometheus导出器捕获的数据,请安装jconsole.
构建JMX导出器
JMX导出器可用Github上.为了构建它,你需要克隆存储库并使用maven进行构建:
Git克隆https://github.com/prometheus/jmx_exporter.git CD jmx_export MVN包
一旦完成,你将需要得到构建的二进制文件的名称,因为它将在稍后启动Kafka时使用:
ls jmx_prometheus_javaagent /目标/ jmx * jar
运行卡夫卡
现在构建了JMX导出器,您可以将其添加到Kafka将在其中运行的Java环境中。
Kafka需要Zookeeper,所以你需要先启动Zookeeper。(它应该包含在Kafka下载中。根据你下载的Kafka版本不同,你的路径可能会略有不同。)
kafka_2.12-2.4.1 / bin / zookeeper-server-start.sh kafka_2.12-2.4.1 / config /动物园管理员。性能及
(一定要在结尾加上“&”,这样Zookeeper才能在后台运行!否则,你需要打开另一个终端来运行Kafka。)
可选:启动jconsole
如果您想比较Java的原生jconsole度量视图和Prometheus/Grafana视图,可以启动jconsole。当你运行Kafka时,它会自动填充到jconsole窗口中。
设置Java环境
JMX export构建为JAR文件,需要将其加载到Java环境中才能正常工作。幸运的是,Java允许您在运行Java应用程序之前向环境中添加依赖项,这使得这一点很容易(如果不是很明显的话)。
您将包括本机JMX库和JMX export,并使用上述二进制文件的全名。(我的是“jmx_export /jmx_prometheus_javaagent/target/jmx_prometheus_javaagent-0.12.1”,但如果您下载了不同版本的代理代码,您的可能会有所不同。)
您还可以更改将在其上公开指标的端口。在本例中我使用的是8080,但是如果您的环境中正在使用8080,您可以随意更改它。
出口EXTRA_ARGS = " -Dcom.sun.management。jmxremote \ -Dcom.sun.management.jmxremote。authenticate=false \ -Dcom.sun.management.jmxremote。ssl=false \ -Djava.util.logging.config.file=logging。properties \ -javaagent:./jmx_export /jmx_prometheus_javaagent/target/jmx_prometheus_javaagent-0.12.1- snapshot .jar=8080:jmx_export /example_configs/kafka-2_0_0.yml
开始卡夫卡
现在我们可以运行Kafka本身了。这将自动拉入我们上面指定的额外库。
kafka_2.12-2.4.1 / bin / kafka-server-start.sh kafka_2.12-2.4.1 / config /服务器。性能及
假设你做的一切都是正确的,你应该看到卡夫卡启动!
如果出现错误,请仔细检查JMX导出器和Kafka配置的路径。
观察指标
现在您应该能够通过访问来查看度量标准http://localhost:8080(或者你使用的任何端口):
现在你知道了!
想监视通过JMX公开指标的其他Java应用程序吗?您可以使用相同的过程。当然,一旦度量标准在Prometheus中,就很容易将它们拉到Grafana中进行可视化和警报JMX仪表板可以在Grafana.com上找到。