JVM的SNMP监控配置
近期看了一下JVM对监控的支持,除了常规的JMX外居然还有SNMP, 有点意思, 这个网管协议适配的地方还真多,那么就先测试一下。
先随便找一个能在后台持续运行的java小程序,如我手头的BIO的socket服务器。
JVM端SNMP的配置
启动SNMP需要两个地方更改,(http://docs.oracle.com/javase/7/docs/technotes/guides/management/snmp.html)
- 在jvm的system properties上加一个
com.sun.management.snmp.port=PORT_NUMBER, PORT_NUMBER指JVM监控的SNMP端口,常规应该是161
- 还需要Copy the ACL template file from JRE_HOME/lib/management/snmp.acl.template to JRE_HOME/lib/management/snmp.acl.
将这个原始的模板文件改一下,解注释掉一些comments,变为以下格式:
acl = { { communities = public, private access = read-only managers = localhost } } trap = { { trap-community = public hosts = localhost } }
然后操作系统改一下,让这个acl文件只有一个owner,就是启动java的这个用户的名字,如何改参考这个文章http://docs.oracle.com/javase/6/docs/technotes/guides/management/security-windows.html
如果这步不搞,启动时会报错
Error: Password file read access must be restricted: C:\Program Files\Java\jre7\
lib\management\snmp.acl
我这里嫌麻烦,直接将启动参数设成不检查(com.sun.management.snmp.acl=false),这样能跳过这个检查
java -Dcom.sun.management.snmp.port=161 -Dcom.sun.management.snmp.acl=false com.tool.server.MyBIOServer
这里JVM这边的配置就都OK了。
SNMP管理端的配置
先到这个地址下JVM的SNMP MIB文件:http://java.sun.com/j2se/1.5.0/docs/guide/management/JVM-MANAGEMENT-MIB.mib
然后找一个SNMP客户端,我用的是iReasoning MIB Browser,load这个下过来的MIB文件。
地址填上localhost, 端口用我们之前设置的161, 直接walk一下被管理端JVM的所有暴露出来的属性
可以看到各种JVM内部信息都有, jvmClassessLoadedCount 等,还支持trap,低内存警告,还是不错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?