利用 zabbix 自动发现方式监控 java 应用(基于jdk8)

本文所用到脚本、模板均改至 github 大神 qiueer
各文件下载地址:链接: https://pan.baidu.com/s/1tlUpIqqn6d8EllouNccc0g 提取码: fats
详细步骤看下面~


01

服务端安装 zabbix_server 和客户端安装 zabbix_agent,在这里就不详说了
配置需要监控的 java 应用的启动信息,我这里是 tomcat
在 /home/tomcat/tomcat80/bin 目录下新建 setenv.sh 文件并写入对应信息,切记修改适当权限
最后当然还要重启 tomcat 啦~

CATALINA_OPTS="
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=3333  //设置监测端口
-Djava.rmi.server.hostname=localhost  //设置监测IP,localhost即可
-Dcom.sun.management.jmxremote.ssl=false  //关闭ssl加密
-Dcom.sun.management.jmxremote.authenticate=false"  //关闭用户认证

02588-49a3xd8rn1e.png


02

首先在 zabbix_agent 中的 zabbix 目录下新建 log、scripts、zabbix_agentd.d 三个目录,当然,如果本身就有,就可以不用新建目录了
切记把 zabbix_agent 的 zabbix 目录下所有目录、文件的权限均设置用户和用户组问 zabbix,权限 755,预防因权限导致的各种问题
log 目录是为了存放自动产生的zabbix日志
scripts 目录是为了存放python脚本、类目录和jar包
zabbix_agentd.d 目录是为了存放jvm配置文件
18236-o3cp5nq761n.png


03

下载我在百度云中分享的 python 脚本、类目录、ja r包、conf 配置文件并上传到对应目录,同时修改权限
python 脚本/类目录 /jar 包:jvm.py、qiueer、cmdline-jmxclient-0.10.3.jar
放到 /etc/zabbix/scripts 目录下,注意修改权限
conf 配置文件:jvm.conf
放到 /etc/zabbix/zabbix_agentd.d 目录下,注意修改权限
如图所示:
10652-f3f2e6ovsnl.png

74853-medq7qqg0vs.png


04

下载我在百度云中分享的 JMX 自动发现模板文件,放到本机,备用
如图所示:
99888-55qecw54e8y.png


05

至此,准备工作基本完成,开始应用
打开 zabbix web 界面
导入 JMX 模板
79504-4iveiw67gq3.png

18284-8jnj4z0sa0d.png

设置对应主机链接模板
01604-k2bxaeengwc.png

72825-xh8hp32uv0c.png

静待自动发现规则获取信息
51863-bak62qlxjws.png

51863-bak62qlxjws.png


06

至此,大功告成~


07

最后,做一些说明
001 叹号的是因为我是用的是默认设置,值为-1,无法正确识别的原因,你可以在tomcat或者java应用启动时指定值
002 新生代垃圾回收(吞吐量优,本质串行)-收集累计次数/秒 和 新生代垃圾回收(吞吐量优,并行)-收集累计次数/秒 在模板中是没有的,因为我发现写进模板中会导致无法正确获取信息,此处需自行添加监控项

新生代垃圾回收(吞吐量优,并行)-收集累计次数/秒 监控项设置
名称:[$3] 新生代垃圾回收(吞吐量优,并行)-收集累计次数/秒
类型:zabbix客户端
键值:jmx.jvm.item["java.lang:name=PS Scavenge,type=GarbageCollector",CollectionCount,3333]
主机接口:选择需要监控的主机
数值类型:数字(无正负)
更新间隔:60s
历史数据保留时长:7d
应用集:自行设置
其他保持不变
新生代垃圾回收(吞吐量优,本质串行)-收集累计次数/秒 监控项设置
名称:[$3] 新生代垃圾回收(吞吐量优,本质串行)-收集累计次数/秒
类型:zabbix客户端
键值:jmx.jvm.item["java.lang:name=PS MarkSweep,type=GarbageCollector",CollectionCount,3333]
主机接口:选择需要监控的主机
数值类型:数字(无正负)
更新间隔:60s
历史数据保留时长:7d
应用集:自行设置
其他保持不变

003 某些非关键监控项无法获取到信息,暂时还没看出哪里问题~
004 分享几条命令,用做测试获取信息的

python jvm.py -b 'java.lang:type=Threading' -k 'ThreadCount' -p 3333  //在zabbix_agent下使用的测试命令,可以测试下脚本是否正确执行,注意python脚本的路径
java -jar cmdline-jmxclient-0.10.3.jar - localhost:3333 |grep MemoryPool  //同上
zabbix_get -s zabbix_agent客户端IP地址 -k jmx.jvm.item["java.lang:name=Compressed Class Space,type=MemoryPool",Usage,3333]  //在zabbix_server上使用,用作测试是否能正常获取数据

zabbixjdk8java自动发现

我来吐槽

*

*