51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

zabbix 监控 java 进程 ( java gateway)

UserParameter=gzm_eres, ps -ef | grep `cat /var/run/gzm_eres.pid`  | grep -v grep -c

进程信息

[root@Server2012 eres]# cat start.sh 
#!/bin/bash
source /etc/profile
#nohup java -jar -server /home/lzw/gzm/eres-1.0.0-SNAPSHOT.jar > /dev/null &
LOG_HOME=/mnt/vdb/log/gzm/eres  
java  -Dspring.profiles.active=prod   -jar /home/lzw/gzm/eres-service-1.0.0-SNAPSHOT.jar > /dev/null &
echo $! > /var/run/gzm_eres.pid

{#more-13633}

比如我们要监控:

java -jar math-game.jar

如何在不修改源码的基础上进行监控呢?

安装: java gateway (类似中间件 ,在任何一台服务器上安装就可以)

这里我在219上装的,监控219的服务,减少对 zabbix server 压力

 yum -y install zabbix-java-gateway

 systemctl enable --now zabbix-java-gateway.service

验证:

netstat -tnulp|grep 10052

三、配置服务端连接Java-gateway

vim  /etc/zabbix/zabbix_server.conf

JAVAGatway 是配置的 刚才 java-gateway 所在的服务器地址

systemctl restart zabbix-server.service 

Java 应用开启 JMX 协议

下载一个阿尔萨斯的测试jar包 来测试一下

curl -O https://arthas.aliyun.com/math-game.jar

然后 运行:

nohup java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=18080 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.17.15.252 \
-jar math-game.jar > math-game.log 2>&1 &

hostname 的 ip 一定多尝试几次, 不然总是报错。(jar 包运行所在主机的ip)

172.17.15.252 是服务所在ECS的内网地址。 这里要注意, 如果 部署后报错 ssl 问题,那么就用用公网ip。

参数说明:

-Dcom.sun.management.jmxremote【开启JMX远程监控】
-Dcom.sun.management.jmxremote.port=18080【JMX远程连接端口】
-Dcom.sun.management.jmxremote.local.only=false【是否仅本机】
-Dcom.sun.management.jmxremote.authenticate=false【不进行认证】
-Dcom.sun.management.jmxremote.ssl=false 【不适用SSL】

详情可查看【远程JVM监控的JMX配置】这里不再赘述。

配置 JMX 监控

创建主机群组

创建主机:

这里要注意,如果是云服务器,IP address 要写外网地址,端口号与-Dcom.sun.management.jmxremote.port=配置的保持一致。

选择模版:

添加后JMX未高亮,可能是配置错误,如果配置正确可通过重启zabbix-java-gateway解决:

出错:

zabbix SSL peer shut down incorrectly: service:jmx:rmi:///jndi/rmi:

多尝试了几次,无缘无故就好了。 把hostname 参数的 ip 改成内网Ip 就好了

nohup java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=18080 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.17.15.252 \
-jar /mnt/data/zzy/softwares/math-game.jar > math-game.log 2>&1 &
echo $! > /var/run/math.pid

查看图形监控

Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)-CSDN博客

【运维知识进阶篇】Zabbix5.0稳定版详解8(Zabbix监控Java项目+详解JMX与Zabbix-Java-Gateway原理+详解监控Java项目流程原理)-CSDN博客

测试程序 代码 math-game.jar

[root@Server2012 softwares]# cat startmath.sh 
#!/bin/bash

nohup java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=18080 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.17.15.252 \
-jar /mnt/data/zzy/softwares/math-game.jar > math-game.log 2>&1 &
echo $! > /var/run/math.pid

stopmath.sh

[root@Server2012 softwares]# cat stopmath.sh 
#!/bin/bash

PID=$(cat /var/run/math.pid)
kill -9 $PID
赞(7)
未经允许不得转载:工具盒子 » zabbix 监控 java 进程 ( java gateway)