一,需求:大数据的机器,很多jvm进程,需要监控特定的几个的进程的FGC,FGCT,YGC,YGCT,GCT。
- YGC:从应用程序启动到采样时年轻代中gc次数
- YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
- FGC:从应用程序启动到采样时old代(全gc)gc次数
- FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
- GCT:从应用程序启动到采样时gc用的总时间(s)
二,在服务器上可以通过命令查看
jps命令可以获取到进程的ID,jstat -gc ID ,获取gc的信息
三,编写自定义脚本(不会shell,用Python加命令凑的,尴尬)
cat jps1.py
#!/usr/bin/env python import os,sys jps_info = os.popen("/usr/bin/sudo /usr/local/java/bin/jps | grep %s | awk '{print $1}'"% sys.argv[1]) jps_info = jps_info.read() jps_id = jps_info.strip() jstat = {'YGC':'$13','YGCT':'$14','FGC':'$15','FGCT':'$16','GCT':'$17'} info = jstat[sys.argv[2]] command = "/usr/bin/sudo /usr/local/java/bin/jstat -gc "+jps_id+" | awk '{print "+info+"}'| /usr/bin/tail -n 1" os.system(command)
四,编辑zabbix agent配置文件
添加:UserParameter=jstat[*], /usr/bin/python /etc/zabbix/scripts/jps1.py $1 $2
五,其它地方的调整
在本机测试脚本是正常的,但是在zabbix server上测试有几个问题需要修改
编辑 /etc/sudoers文件,添加一行:
zabbix ALL=(ALL) NOPASSWD:ALL
这一行需要注释掉:#Defaults requiretty
六,创建item(数据类型选择浮点数)
七:展示