本文根据github上的一位大神写的进行简单修改得来
已经更改了模板 模板内容可以在这里下载jvm模板

zabbix想要监控java,tomcat等最常见的就是运用jmx来监控,这样的话当监控多个tomcat或者java进程的时候会出现普遍的添加端口方式 操作起来比较麻烦,下面我们运用python脚本结合自动发现规则来实现监控一台机器上的多个java进程

上传脚本和修改配置文件
jvm.py
cmdline-jmxclient-0.10.3.jar


 1.将cmdline-jmxclient-0.10.3.jar、jvm.py拷贝到/usr/local/zabbix/scripts/目录下

    注意更改权限属主:chown -R zabbix.zabbix /usr/local/zabbix/scripts/ && chmod +x jvm.py

 2.然后更改zabbix_agentd的配置,文件中需包含如下配置,注意脚本的位置:

    UserParameter=jmx.jvm.discovery, python /usr/local/zabbix/scripts/jvm.py --list
    UserParameter=jmx.jvm.item[*],python /usr/local/zabbix/scripts/jvm.py -b "$1" -k "$2" -p "$3"

 3.配置完成后,重启zabbix agent,例如:

    [root@koby ~]# service zabbix_agentd restart

使用示例

1.调整java进程启动参数
-Dcom.sun.management.jmxremote.port=${jmxport} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false #jmxport为jmx监控端口

2.获取jmxport列表
$ [root@koby scripts]# python jvm.py --list
{
       "data":[
              {
                     "{#JVMPORT}":10100,
                     "{#PID}":9989,
                     "{#RUNUSER}":"root"
              }
       ]
}

3.采集数据
[root@koby scripts]# python jvm.py -b 'java.lang:type=Threading' -k 'ThreadCount' -p 10100
134
[root@koby scripts]# python jvm.py -b 'java.lang:type=Memory' -k 'HeapMemoryUsage.committed' -p 10100
182452224

4.其他
JVM监控,使用解析如下的命令的输出来获取jmxport
ps -ef | grep 'jmxremote.port=' | grep -v grep 2>/dev/null

这里需要注意的是上传模板监控的时候MemoryPool的监控项会出现问题 原因是jvm版本问题在8的版本上把MemoryPool的值给更改了这里我们可以用命令查看一下

[root@koby ~]#  java -jar /usr/local/zabbix/scripts/cmdline-jmxclient-0.10.3.jar - localhost:10100 |grep MemoryPool
java.lang:name=Compressed Class Space,type=MemoryPool
java.lang:name=Metaspace,type=MemoryPool
java.lang:name=PS Old Gen,type=MemoryPool
java.lang:name=PS Eden Space,type=MemoryPool
java.lang:name=PS Survivor Space,type=MemoryPool
java.lang:name=Code Cache,type=MemoryPool

注意在脚本文件的377行里面指定的logpath = “/tmp/zabbix_jvm_info.log” 这个日志的权限一定要是zabbix用户的权限 否则会报错
在这里希望大家多多评论因为我也有很多不懂的知识也有一些可能写错的地方希望前辈们能够指出
以上内容有问题的也可直接与我联系qq:654547615
注:本文根据github上的一位大神写的进行简单修改得来

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐