推出 jvmguard:生产环境自动化剖析
JProfiler 背后的团队推出了一款全新的开源工具:jvmguard 可帮助您的公司对生产环境中的 JVM 进行剖析。
在生产环境中进行剖析存在风险,但这往往也是理解问题的唯一途径。借助 jvmguard,剖析采集会经过授权与审计,并且可以由人工、自动触发器或 AI 智能体启动。
jvmguard 可以与 JProfiler 配合使用,但并不局限于这一集成。它还可以记录 JFR 快照、HPROF 堆转储和线程转储,您可以使用其他工具对其进行分析。jvmguard 的基本理念是:轻量级信号始终开启,而深度采集只在特定条件下才会进行。


在生产环境中进行剖析的难题
当生产环境出现缓慢问题时,您所需的数据就在问题发生的机器上。在大多数企业中,开发人员没有生产主机的 SSH 访问权限,因此即使是使用 jcmd 执行一次简单的堆转储,开发人员也无法独立完成。而附加一个完整的剖析器通常根本不可行,因为它会加载一个原生剖析代理,可能带来无法控制的额外开销。
APM 工具和持续剖析器无法解决这一问题。它们记录的是宽泛的监控数据:面向所有 JVM 的仪表板、链路追踪和告警。然而,它们无法记录用于深入分析的剖析快照。
轻量级信号,深度采集
jvmguard 由一台带有 Web UI 的服务器和一个运行在每个受监控 JVM 内部的 Java 代理组成。该代理是纯 Java 实现,支持 Java 8 及更高版本,并且只对您显式定义为事务的方法进行插桩。在常规运行期间,它仅收集轻量级数据:
- 堆、CPU、线程和 GC 等内置遥测数据
- 来自所选 MBean 或您自己带有注解的方法的遥测数据
- 您已配置的事务


默认情况下不会记录深度采集。深度采集共有四种,并且仅按需运行:
- 时长受限的 JFR 录制
- HPROF 格式的堆转储
- 线程转储
- JProfiler 快照
对于任何已连接的 JVM,都可以从 Web UI 手动启动采集。结果会保存到 jvmguard 收件箱中,经过授权的用户可以在其中下载。
使用触发器自动采集
触发器在 VM 组上配置,并对事件的发生速率作出响应。触发器共有三种:
- 阈值触发器:当某个遥测指标过于频繁地越过其界限时触发
- 策略触发器:当过多的事务属于慢速、极慢、超期或以错误结束时触发
- 连接触发器:当已连接 JVM 的数量降至最低值以下时触发
当触发器触发时,jvmguard 会执行一个可配置的操作列表。数据采集操作会记录 JFR 或 JProfiler 快照,或者从受影响的 JVM 获取堆转储或线程转储。通知操作会写入 jvmguard 收件箱、发送电子邮件或调用 webhook。
一个典型的配置是:策略触发器在慢速事务过多时触发,并记录一个 JFR 快照。


与 JProfiler 的集成
最深入的分析来自 JProfiler 快照。为此,服务器会从我们的下载站点下载匹配的 JProfiler 代理包,并将其传输给代理。这是服务器主动发起的唯一对外连接;在物理隔离的服务器上,您也可以自行将该包预先复制到其缓存目录中。
JProfiler 代理会按需加载到正在运行的 JVM 中,并以采样方式记录 CPU 数据,从而将生产环境的开销保持在较低水平。在 JProfiler 录制操作中,您可以选择所需的子系统,例如 JDBC、JPA、HTTP、gRPC、Kafka 或 LLM 调用。JVMTI 代理一旦加载,在 JVM 重启之前便无法卸载,但其空闲开销低于 1%。
AI 智能体
jvmguard 内置了一个 MCP 服务器。编码智能体可以完成与人工在 Web UI 中相同的操作:发现可用的 JVM、读取遥测数据和事务、采集剖析快照以及获取结果。
让 AI 智能体访问生产环境中的 JVM 需要严格的硬性限制。jvmguard 提供了服务器范围的只读模式、按组配置的护栏以控制允许的采集类型、速率限制和冷却期,以及兼容 SIEM、覆盖智能体每一次操作的审计记录。
jvmguard MCP 服务器与 JProfiler MCP 服务器形成一个闭环:jvmguard 在生产环境中采集快照,AI 智能体则使用 JProfiler 进行分析。
在生产环境中安全运行
为了让生产环境中的剖析安全可靠,jvmguard 提供了一系列特性:
- 默认运行期间开销极低且完全可控。
- Admin(管理员)、Profiler(剖析人员)和 Viewer(查看人员)三种访问级别可将一台服务器划分给不同的团队使用。用户可通过本地账户、LDAP 或 SSO 进行身份验证,并且默认启用双因素身份验证。
- 代理连接可通过 TLS 加密并进行双向身份验证。
- 完整的审计日志会记录每一次剖析操作:何人、何时、执行了何种操作。
- 不回传任何数据。代理只连接到您的服务器,所有记录的数据都保留在您的网络内部。采集器、内嵌的 H2 数据库和 Web UI 在单一进程中运行,在物理隔离环境中同样可以正常工作。
快速上手
这是 jvmguard 的第一个发布版本。Windows、macOS 和 Linux 的安装程序可在下载页面获取,文档可在网站上查阅。
安装完成后,使用标题栏中的“添加 VM”按钮生成 -javaagent 选项,并将其添加到每个 JVM 的启动命令中。
源代码托管在 GitHub 上。如果您觉得 jvmguard 对您有用,在 GitHub 上点一个星标可以帮助更多人发现这个项目。