找回密码
 立即注册
首页 业界区 业界 利用 OpenTelemetry 集成 JMX 监控

利用 OpenTelemetry 集成 JMX 监控

褐洌 5 天前
JMX 是什么?

JMX 是 “Java Management Extensions” 的缩写,中文通常称为 “Java 管理扩展”。它是 Java 平台提供的一套标准框架,用于对 Java 应用程序、设备、系统资源进行监控和管理。
JMX 的核心作用包括:

  • 监控 Java 程序运行状态(如内存使用、线程数、类加载情况等);
  • 动态修改配置参数(无需重启应用);
  • 远程管理 Java 应用(通过 JConsole、VisualVM 等工具);
  • 集成到监控系统中,实现对 JVM 的集中监控。
很多 Java 应用(如 Kafka、Hadoop、Tomcat 等)都通过 JMX 暴露运行时指标,方便运维人员进行监控和故障排查。在监控领域,你就可以简单的理解 JMX 是一种 Java 应用暴露指标的标准方式。
很多新的开源项目直接暴露 Prometheus 协议的监控数据,确实更方便,但很多老的 Java 应用仍然通过 JMX 暴露指标数据,所以掌握 JMX 监控方式,等于掌握了一批 Java 应用的监控方式。
OpenTelemetry 的标准已经被业界普遍使用,JMX 也可以和 OpenTelemetry 集成。用于 JMX 的 OpenTelemetry 集成利用 YAML 中指定的配置文件来描述应用程序的指标应如何转换为 OpenTelemetry 指标。这些规则会提供给与 JMX API 交互的 JMX 指标抓取工具。许多现有的 Java 应用程序可配置为通过 JMX 发出指标。以下应用程序具有社区支持的预定义规则文件:

  • Activemq
  • Cassandra
  • Hbase
  • Hadoop
  • Jetty
  • Jvm
  • Kafka
  • Solr
  • Tomcat
  • Wildfly
这意味着,在使用 JMX 抓取工具时,可以将目标应用程序识别为上述选项之一,无需任何额外配置即可自动抓取指标。
使用 OpenTelemetry 的 JMX 集成从应用程序中提取数据有多种方法:

  • 运行 JMX 指标收集器 JAR 并将其指向您的应用程序
  • 将 OpenTelemetry Java 代理与应用程序一起运行
  • 运行 OpenTelemetry Collector 并配置 JMX 接收器以通过 JMX 获取指标
JMX 指标收集器是一种简单便捷的方法,可用于测试从 Java 应用程序导出指标,且所需的额外依赖最少。OpenTelemetry Java 代理是一种更成熟且经过验证的机制,但由于它引入了额外的 instrumentation,可能也会带来一些开销。如果在你的环境中运行单独的进程或工作负载是可接受的,那么 OpenTelemetry 收集器是一个可靠的替代方案。本文将探讨这三种选择。
配置

在深入了解 OpenTelemetry 集成之前,有必要确保将要测试的应用程序正确暴露 JMX 端点。以下命令在 Docker 容器中启动 Tomcat 服务器,以减少本地系统所需的依赖项数量。它使用 JAVA_OPTS 环境变量启用 JMX,并使其在 9999 端口上可用。
  1. $ docker run -it --rm -p 9999:9999 -p 8888:8080 -e JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Djava.rmi.server.hostname=0.0.0.0 -Dcom.sun.management.jmxremote.ssl=false" tomcat:9.0
复制代码
有许多工具可以验证 JMX 端口是否可访问以及是否在生成指标。以下使用 JConsole 并连接到已打开的端口:
  1. $ jconsole localhost:9999
复制代码
这将弹出一个应用程序,它可能会提示您连接不安全。在本地开发时,此警告可以安全地忽略。
1.png

这些数据可通过远程 JMX 端口访问,我们已准备好与 OpenTelemetry 集成。
直接使用 JMX scraper

如前所述,JMX 抓取工具是最简便的入门方式。以下命令将:

  • 从 Maven 下载 JMX 抓取工具的最新发布版本
  • 运行 JMX 抓取工具,将其配置为从 Tomcat 收集遥测数据,并通过 JMX 收集指标,然后将这些指标输出到本地控制台。
[code]$ wget https://repo1.maven.org/maven2/io/opentelemetry/contrib/opentelemetry-jmx-scraper/1.49.0-alpha/opentelemetry-jmx-scraper-1.49.0-alpha.jar$ OTEL_METRICS_EXPORTER=console java -jar opentelemetry-jmx-scraper-1.49.0-alpha.jar -config -

相关推荐

您需要登录后才可以回帖 登录 | 立即注册