如何配置 JMX 监控

现代 Java 应用程序功能强大、可扩展且复杂。但这种复杂性使得了解 Java 虚拟机(JVM)内部的实时状态变得至关重要。这就是 JMX 监控 派上用场的地方。通过正确配置 JMX(Java 管理扩展),您可以实时查看 JVM 性能,并更有效地管理 Java 应用程序。

本文将引导您使用 ManageEngine Applications Manager 设置和保护 JMX 监控,涵盖代理、端口及安全最佳实践。如果您是 JMX 新手,请先阅读 什么是 JMX 监控 以获取背景信息。

基础知识:JMX 的工作原理

Java 管理扩展(JMX)是一种内置框架,允许您在运行时监控和管理 Java 应用程序。它通过受管 Bean(MBeans)暴露关键的 JVM 信息,如内存使用情况、垃圾回收、线程数和类加载。

当连接到像 Applications Manager 这样的监控工具时,这些 MBeans 成为持续的数据源,帮助您:

  • 可视化性能指标。
  • 检测瓶颈和异常。
  • 触发警报和自动响应。

然而,要安全高效地收集这些数据,JMX 需要正确配置。

第一步:在您的环境中启用 JMX 监控

在开始跟踪 JVM 指标之前,您的 Java 应用程序需要启用 JMX。

大多数现代 Java 应用默认包含一个 JMX 代理。该代理通过网络端口向授权工具(如 Applications Manager)公开指标。

在 Applications Manager 中,您只需添加新的 JMX 监视器并指定以下内容:

  • 您 Java 应用程序的主机名或 IP 地址。
  • JVM 通过其公开指标的 JMX 端口。
  • 如果启用安全,则为可选的认证信息。

Applications Manager 会自动连接到 JMX 接口,获取 MBean 属性,并以易读的性能图表和仪表盘形式显示。

添加 JMX 监视器 - ManageEngine Applications Manager

专业提示: 只要 JMX 端口对 Applications Manager 服务器可访问,您还可以启用跨服务器或容器的远程 JVM 监控。

第二步:了解代理及其作用

在 JMX 语境中,您可能经常听到代理一词。简单来说,代理使您的 Java 应用程序对监控工具“可见”。

JMX 代理主要有两种类型:

  • 本地代理: 在 JVM 内部运行,收集本地指标。适合在同一主机上监控。
  • 远程代理: 允许监控工具(如 Applications Manager)通过 TCP/IP 端口从不同主机连接。

Applications Manager 可兼容这两种方式。当您添加新的 JMX 监视器时,工具会与代理通信以:

  • 发现所有可用的 MBeans。
  • 获取 JVM 和应用层指标。
  • 在性能仪表盘上显示它们。
  • 当阈值被突破时触发警报。

使用 Applications Manager 时,无需手动安装或配置额外代理。内置的 JMX 支持使得安装快速简便。

第三步:配置 JMX 端口

每个启用 JMX 的 JVM 都会监听一个或多个端口,以接受连接。可以将端口视为 Applications Manager 访问性能数据的“门户”。

端口的重要性

配置 JMX 监控时,需要指定正确的端口,以便 Applications Manager 能与 JVM 建立通信。默认情况下,Java 为 JMX 通信分配一个随机的 RMI(远程方法调用)端口,但在生产环境中,使用固定端口更为合适。

端口配置最佳实践

  • 使用固定的 JMX 端口: 这使防火墙配置更容易,并避免多个 JVM 在同一主机上端口冲突。
  • 保持端口唯一: 为每个 JVM 实例分配不同的 JMX 端口。
  • 限制访问: 确保只有您的 Applications Manager 服务器可以连接到 JMX 端口。
例如,假如您的 Java 应用程序运行在端口 8080,您可以将 JMX 配置为监听 9090 端口用于监控。然后,在 Applications Manager 中添加监控时输入主机和 JMX 端口信息。

在容器化或云环境中,请确保这些端口通过安全的内部网络暴露,而不是公开互联网。

第四步:保护 JMX 连接

由于 JMX 允许访问敏感的运行时信息,有时还能进行管理操作,其安全性不容忽视。

保护 JMX 配置的三个关键方面:

1. 认证

启用认证,确保只有授权用户或工具能连接到 JMX 接口。Applications Manager 支持通过配置用户名和密码来建立安全连接,确保即使端口开放,只有经过认证的请求才可访问指标。

2. 加密

为防止数据被截获,建议加密 JVM 与 Applications Manager 之间的通信。这通常通过启用 JMX 连接的 SSL(安全套接层)实现。启用 SSL 后,所有数据如指标值和凭据均通过安全网络传输。如果贵组织已有加密通信机制,网络或应用团队可协助配置 JMX SSL 设置,符合现有安全策略。

3. 网络级限制

限制谁可以连接 JMX 端口,为安全增添一层保障。您可以:

  • 只允许 Applications Manager 主机访问。
  • 限制 JMX 访问到内部 IP 或子网。
  • 使用防火墙、VPN 或私有网络路由,避免公开暴露端口。
Applications Manager 在受限环境下也能无缝工作,因为只需单向通信即从 Applications Manager 到被监控 JVM。

监控 JMX - ManageEngine Applications Manager

第五步:验证和测试配置

配置好 JMX 监控后,测试确保一切正常运行。

在 Applications Manager 中:

  1. 进入添加监视器 → Java/JMX 监视器。
  2. 输入主机名、JMX 端口和认证信息(如适用)。
  3. 点击测试凭据。

若连接成功,Applications Manager 会自动发现所有可用 MBeans 并开始轮询指标。您将很快看到包含以下内容的 JVM 性能仪表盘:

  • 堆内存和非堆内存使用情况
  • 垃圾回收活动
  • 线程统计
  • 类加载详情
  • 如果应用程序暴露,自定义 MBeans

若测试失败,请检查以下几点:

  • JMX 端口是否开放且可从 Applications Manager 服务器访问。
  • 认证信息是否正确。
  • 防火墙规则是否允许通信。

第六步:应用安全最佳实践

除初始设置外,保持 JMX 环境安全可靠需要持续关注。以下是关键建议:

  • 定期更换凭据,防止未经授权访问。
  • 尽可能限制权限为只读访问。
  • 监控 JMX 访问日志,发现异常连接尝试。
  • 在 Applications Manager 中使用基于角色的访问控制(RBAC),确保只有授权管理员可以添加或修改 JMX 监视器。
  • 定期审查端口配置,并关闭未用或不必要的开放端口。

遵循这些指导,帮助保持可见性与安全之间的良好平衡。

第七步:同时监控 JVM 健康和业务指标

使用 Applications Manager 的一个独特优势是,它不仅追踪 JVM 指标,还能帮助您监控自定义 MBeans。

您的开发团队可以通过自定义 MBeans 暴露应用特定指标,如交易数、队列大小或活动会话数。Applications Manager 会自动检测并将这些指标与 JVM 数据一同可视化,提供系统和业务性能的全貌。

例如,您可以监控垃圾回收行为与用户会话数或响应时间的关联,更智能地排查性能问题。

第八步:自动化警报和操作

配置完成后,下一步是自动化。在 Applications Manager 中,您可以设置基于阈值的警报,实时接收内存使用、线程数等关键 JVM 参数超过临界值的通知。

此外,还可配置自动纠正操作,如重启服务或清理缓存,及时响应问题,无需人工干预。

此自动化层将 JMX 监控从被动数据源转变为主动性能管理工具,助力维护正常运行和稳定性。

监控 JMX - ManageEngine Applications Manager

常见配置场景

以下是 Applications Manager 中几个实际 JMX 监控设置示例:

场景配置备注
监控本地 Java 应用使用默认 JMX 代理和本地主机连接简单快速设置
监控远程 JVM配置固定 JMX 端口,进行网络连接使用认证保障安全
监控多个 JVM为每个实例分配不同的 JMX 端口避免端口冲突
云或容器化应用使用内部服务网络限制外部访问
企业级安全配置启用 SSL 和防火墙限制生产环境推荐

几分钟内完成配置!

配置 JMX 监控不必复杂。借助正确配置和功能强大的 Applications Manager,您可以精准、安全、自信地监控 Java 应用程序。

通过正确配置代理、端口和安全设置,确保您的 JMX 监控环境可靠、可扩展且安全,提供 JVM 性能和业务运营的可操作见解。

 

Priya, 产品营销员

Priya 是 ManageEngine 的产品营销员,热衷于展示可观测性、数据库监控和应用性能的强大功能。她将技术专长转化为引人共鸣的故事,服务技术专业人士。

 

受到世界各地客户的喜爱

"具有广泛监控功能的Standout工具"

它允许我们跟踪关键指标,如响应时间、资源利用率、错误率和交易性能。实时监控告警会及时通知我们任何问题或异常,使我们能够立即采取行动。

审稿人角色:研究与开发

carlos-rivero
"我喜欢 Applications Manager,因为它帮助我们检测服务器和 SQL 数据库中存在的问题."
卡洛斯·里韦罗

Lexmark技术支持经理

受到全球6000多家企业的信任

我们的客户