Zabbix

zabbix4.0 实现tomcat性能监控的自动化发现脚本和模

2020-07-27  本文已影响0人  vampire_bf0f

1, zabbix 自动发现脚本编写,采用python

在网上搜索一番,实现方式大部分是采用 zabbix-java-gateway,这个对监控几个的tomcat比较简单方便,但是我一台机器运行的tomcat有十多个,那就显得很傻逼了。

还有就是采用visualvm 这个工具,这个工具能够实时查看tomcat性能参数,包含 堆内存、线程数,元空间等。缺点就是他的数据数据不会存下来,只看到你打开这个工具的开始后的数据。

网上找到的模板和脚本,脚本可以用,但是模板无法导入,由于自己在zabbix在自己编写模板这块不是很熟悉,决定痛定思痛,自己全部写一遍,所有文章脚本和模板这些都是我结合网上的资料和自己的情况下,进行原创的。

前期准备工作,需要修改tomcat的catalina.sh 启动参数添加性能远程监控接口

我这边部署都是批量模板部署,前期我就写好了批量修改启动参数模板和脚本的,所以这边我把模板文件修改下,执行脚本,所有的工程就修改好了。

-Dcom.sun.management.jmxremote.port={jmxport}  #修改远程端口,默认12345

-Djava.rmi.server.hostname={ip} #修改成tomcat 运行机器的ip 内网地址

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

实现思路:

执行脚本返回一个jason 格式数据,包含应用的名称,jmx 端口,http端口,

我这边tomcat都是批量部署,都在同一个路径下,

应用名称通过 os.listdir 处理,获取名称和觉得路径

ip, jmx端口通过 进程命令获取

http 端口,通过读取server.xml 获取。

2,监控脚本编写

实现思路就说python调用sh命令,执行命令:/app/jdk1.8.0_121/bin/java -jar /usr/lib/cmdline-jmxclient-0.10.3.jar - 192.168.254.26:12345 java.lang:type=Memory HeapMemoryUsage 

命令直接执行效果图

解析输出结果获取相关结果。

这里分两种情况,

a,有的命令执行的结果是包含我们监控的三个维度的结果,如上图示例。对结果我们需要分别解析返回结果

b,还有就是就是我们需要的结果,直接提取数据,如下:

所以我在设计了一个监控字典:{项目名称:{需要执行的命令:需要取的值}}

对b情况就直接赋值同一个值 normal

在上图中这里是有点命令是需要转义的,不能会提示找不到命令类,这里需要提供http端口,我这采用有格式化传值,有的人可能 http-bio这里可能需要注意下,脚本中也处理了。

最终脚本执行结果如下:

3,将脚本上传到zabbix服务器和监控主机,验证监控项目和脚本

被监控段机器下,新建 /etc/zabbix/zabbix_agentd.d/userparameter_tomcat.conf,添加下面内容,需要重启监控zabbix-agent

UserParameter=tomcat.discovery,/usr/bin/python2 /etc/zabbix/discovery_tomcat.py

UserParameter=tomcat.status[*],/usr/bin/python2 /etc/zabbix/tomcat_monintor.py  $1 $2 $3 $4

zabbix-server机器,执行

zabbix_get -s 192.168.0.116 -p 10050 -k tomcat.status[192.168.0.116,12351,9050,HeapMemoryUsageused]

执行结果

获取到结果,正常。如果不行,可以尝试重启下zabbix-server

3,zabbix监控模板编写

创建模板

点击创建自动发现规则

创建自动发现规则

设置发现规则的key值

创建监控原型

填入监控key

后面的触发器 图像,在我模板中都有设置

如果运行的tomcat比较多,由于我这边监控原型会有38个,监控项目在zabbixserver端生成很多监控项目,造成server的压力,需要把 /etc/zabbix/zabbix_server.conf 修改

StartPollers=150   

我这边在模板默认关闭了项目的监控,需要的主机去模板中打开接口,防止突然造成服务器压力

最终在zabbix 效果图如下:

如果我的文章对你有用可以给我赞赏哟!

cmdline-jmxclient-0.10.3

脚本和模拟板

上一篇下一篇

猜你喜欢

热点阅读