5+
最近在学习zabbix4.0,那如果用zabbix怎么去做jvm的监控呢?抱着这个目的cosmo在zabbix share里边找了一下发现官方提供的模板,是基于JMX的而且适配的是zabbix3.0. 之后又再网上找了一下,发现了这篇博文https://blog.51cto.com/xianglinhu/1757930 ,实现了jstat监控单机多jvm的情况。但cosmo对shell并不是很擅长,看shell脚本有点困难,并且版本较旧。就打算重复造个轮子,用来适配现在的zabbix-v4.0。记录下此文也给之后的同学留个参考。
1. 模板使用环境
zabbix-agent的版本是v4.0.13
python的版本是2.7.5
操作系统是centos7 64位
jdk版本是1.8
默认使用的是linux root用户
2. 下载模板与脚本
修改python脚本中的常量
这个常量是java进程存活时长阈值,当一个java进程存活时间大于此值时,才会被zabbix视为监控对象。此值的单位为秒。
3. 安装python依赖库
4. 修改zabbix-agent机器配置
4.1 关闭selinux
4.2 添加防火墙规则
4.3 对get-jvm-gc.py脚本提权
5. 模板导入与自动发现规则配置
5.1 模板导入
导入模板配置文件jvm8-template-auto-discover.xml.
5.2 zabbix_agentd.conf文件修改
5.3 自动发现配置
创建自动发现规则
这里监控的是192.169.4.0/255的所有机器
5.4 自动注册配置
创建自动注册行为
这里自动注册的作用是,当发现一台可以ping通的机器后,zabbix会自动以这台机器的hostname在zabbix中创建一个host。并关联jvm8-template-auto-discover, Template OS Linux两个模板。
6. 效果展示
启动zabbix-agent
zabbix-server只要能ping通这台服务器就会自动创建好host。并且自动关联jvm8-template-auto-discover, Template OS Linux两个模板。因为当前监控机器中并没有运行了10分钟以上java进程,所以jvm8-template-auto-discover不会创建对应进程的监控项。
现在我们启动一个java进程。
java代码为
项目为:https://github.com/chaoxxx/simple-example.git
等待一段时间后,发现host中多了很多监控项
数据也被采集了回来
关于监控项的含义请对照此篇文章。https://www.cnblogs.com/yjd_hycf_space/p/7755633.html
作者:cosmozhu --90后的老父亲,专注于保护地球的程序员
个人网站:https://www.cosmozhu.fun
欢迎转载,转载时请注明出处。