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

发布于 2018-10-16  258 次阅读


本文所用到脚本、模板均改至 github 大神qiueer

各文件下载地址:链接: https://pan.baidu.com/s/1tlUpIqqn6d8EllouNccc0g  提取码: fats

详细步骤看下面~

01

服务端安装 zabbix_server 和客户端安装 zabbix_agent,在这里就不详说了

配置需要监控的 java 应用的启动信息,我这里是 tomcat

在/home/tomcat/tomcat80/bin 目录下新建 setenv.sh 文件并写入对应信息,切记修改适当权限

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"  //关闭用户认证

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

02

首先在 zabbix_agent 中的 zabbix 目录下新建 log、scripts、zabbix_agentd.d 三个目录,当然,如果本身就有,就可以不用新建目录了

切记把 zabbix_agent 的 zabbix 目录下所有目录、文件的权限均设置用户和用户组问 zabbix,权限 755,预防因权限导致的各种问题

log 目录是为了存放自动产生的 zabbix 日志

scripts 目录是为了存放 python 脚本、类目录和 jar 包

zabbix_agentd.d 目录是为了存放 jvm 配置文件

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

03

下载我在百度云中分享的 python 脚本、类目录、jar 包、conf 配置文件并上传到对应目录,同时修改权限

python 脚本/类目录/jar 包:jvm.py、qiueer、cmdline-jmxclient-0.10.3.jar

放到/etc/zabbix/scripts 目录下,注意修改权限

conf 配置文件:jvm.conf

放到/etc/zabbix/zabbix_agentd.d 目录下,注意修改权限

如图所示:

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

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

04

下载我在百度云中分享的 JMX 自动发现模板文件,放到本机,备用

如图所示:

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

05

至此,准备工作基本完成,开始应用

打开 zabbix web 界面

导入 JMX 模板

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

利用 zabbix 自动发现方式监控 java 应用(基于 jdk8)设置对应主机链接模板

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

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

静待自动发现规则获取信息

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

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

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 上使用,用作测试是否能正常获取数据