Zabbix 自带监控系统的内存利用率和 CPU 利用率, 但是系统内存并不能反应 JVM 内存情况
在本地我们可以通过 jconsole 或者 jvisualvm 进行监控 jvm 内存情况
不过正是环境一般都是部署在 Linux 上, 且不是桌面版, 这个时候想监控, 可以通过 zabbix 集成 jmx 实现
jvisualvm 使用方式, 参考 https://www.cnblogs.com/gossip/p/6141941.html
效果:
这是使用的 jdk 自带的监控工具
当然, 如果需要远程监控的话, 需要在 catalina 文件设置下启动参数, 这里不做账号密码限定, 所以 authenticate=false
Windows 修改 catalina.bat
通过 set 设置, 引用变量使用 %%
在 rem ----- Execute The Requested Command --------------------------------------- 下面添加
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Linux 修改 catalina.sh
不用添加 set, 引用变量使用 $
在 rem ----- Execute The Requested Command --------------------------------------- 下面添加
- CATALINA_OPTS="$CATALINA_OPTS
- -Dcom.sun.management.jmxremote
- -Djava.rmi.server.hostname=127.0.0.1
- -Dcom.sun.management.jmxremote.port=12345
- -Dcom.sun.management.jmxremote.ssl=false
- -Dcom.sun.management.jmxremote.authenticate=false"
java 直接运行 jar 包
java -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar chy.jar
之后就可以通过远程连接并且监控 jvm 详情了, 如上效果图
Linux 测试
需要下载 cmdline-jmxclient-0.10.3.jar 包
通过上述方式启动之后如下
再通过命令进行查看, 比如查看非堆内存使用情况
java -jar cmdline-jmxclient-0.10.3.jar - 39.105.97.50:12345 java.lang:type=Memory NonHeapMemoryUsage
zabbix 的 jmx 监测
具体查看官方文档
zabbix 可以集成 jmx, 用于监控 jvm 内存情况集成 jmx 步骤逻辑
在 zabbix 服务器上安装配置 zabbix-java-gateway, 并且配置相关参数.
配置 tomcat 服务器, JMX 服务相关参数, 上传依赖包 (如果是 jar 包运行, 直接添加参数即可)
zabbix web 端添加监控
启动 tomcat 服务, 查看 zabbix Web 端监控运行状态, 排错 (java -jar 运行)
自定义图形和监控项
1. 安装 zabbix-java-gateway 并配置
安装
yum -y install zabbix-java-gateway
配置
- grep "^[A-Z]" /etc/zabbix/zabbix_java_gateway.conf
- LISTEN_IP="0.0.0.0" #监听本机所有 ip
- LISTEN_PORT=10052 #在 10052 端口提供服务
- PID_FILE="/var/run/zabbix/zabbix_java.pid"
- START_POLLERS=5
启动服务
systemctl start zabbix-java-gateway
配置 zabbix-server
- grep "^[A-Z]" /etc/zabbix/zabbix_server.conf|grep Java
- JavaGateway=127.0.0.1 #JavaGateway 所在服务器的 IP
- JavaGatewayPort=10052 #JavaGateway 的默认端口
- StartJavaPollers=5 #JVM 进行监控轮询实例数, 默认是 0
重启 zabbix-server
systemctl restart zabbix-server
2. 配置 tomcat 服务器
由于我是直接 jar 包运行, 直接通过启动参数设置即可, 如果是 tomcat 的话, 修改 catalina 文件即可
java -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=39.105.97.50 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar tale-latest.jar --server.port=80
3.zabbix Web 端添加监控
配置 jmx 接口 配置→主机→创建主机
添加链接模板 template App apache tomcat jmx 和 template App generic java jmx
4. 查看 zabbix Web 端监控运行状态
添加完毕, 查看 jmx 是否是绿色
如果是红色, 查看具体原因, 可能是端口暴露问题, 或者是启动的参数设置问题
5. 自定义图形和监控项
jmx 为绿色, 标志着添加成功, 之后自定义图形, 设置监控项即可
第一步创建图形
第二步, 添加你需要的监控项即可
这里选取四项, 查看效果图
ok, 其余的配置再摸索, 监控多个 java 进程的 jvm 还须研究
来源: https://www.cnblogs.com/chywx/p/11496528.html