首页域名资讯 正文

zabbix监控多JMX端口

2024-11-14 3 0条评论

 

1. 开启Tomcat JMX功能

CATALINA_OPTS=”$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8889
-Dcom.sun.management.jmxremote. ssl =false
-Dcom.sun.management.jmxremote.authenticate=false”

重启tomcat即可;

注:java程序都会提供一个JMX接口去进行采集相关的数据,其他开启方式请参考相关说明,我主要是已tomcat监控为主;

2. 编写自动发现端口脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [ root @ trustauth.cn scripts ] # cat /etc/zabbix/scripts/jmx_discovery.sh #!/bin/bash # function:monitor tcp connect status from zabbix source / etc / bashrc > / dev / null 2 > & 1 source / etc / profile > / dev / null 2 > & 1 jmx_port_discovery ( ) { jmx_port = ( $ ( cat / etc / zabbix / scripts / java . txt | cut d “|” f2 ) ) Tomcat_Name = ( $ ( cat / etc / zabbix / scripts / java . txt | cut d “|” f1 ) ) printf ‘{\n’ printf ‘\t”data”:[\n’ for ( ( i = 0 ; i < $ { #jmx_port[@]};++i)) { num = $ ( echo $ ( ( $ { #jmx_port[@]}-1))) if [ “$i” != $ { num } ] ; then printf “\t\t{ \n” printf “\t\t\t\”{#JMX_PORT}\”:\”${jmx_port[$i]}\”,\n” printf “\t\t\t\”{#JAVA_NAME}\”:\”${Tomcat_Name[$i]}\”},\n” else printf “\t\t{ \n” printf “\t\t \n” printf “\t\t\t\”{#JMX_PORT}\”:\”${jmx_port[$i]}\”,\n” printf “\t\t\t\”{#JAVA_NAME}\”:\”${Tomcat_Name[$i]}\”}]}\n” fi } } case “$1” in jmx_port_discovery ) jmx_port _discovery ; ; * ) echo “Usage:$0 {jmx_port_discovery}” ; ; esac

编写/etc/zabbix/scripts/java.txt文件,内容如下:

1 2 3 [ root @ trustauth.cn scripts ] # cat /etc/zabbix/scripts/java.txt Tomcat_442 | 8880 Tomcat_8591 | 8881

注:其实这里有个弊端,不太智能,也就是需要把监控的jmx端口和相关服务名称写到这个文本里去,这里还需要网友提供一个更可靠的方法,还请大家不要栗色指教。

3. 编写jmx监控配置文件

1 2 3 4 5 [ root @ trustauth.cn ~ ] # cat /etc/zabbix/zabbix_agentd.conf.d/discovery_java_status.conf UserParameter = java . jmx . discovery , / etc / zabbix / scripts / jmx_discovery . sh jmx_port_discovery UserParameter = java . HeapMemoryUsage . status [ * ] , / usr / local / jdk1 . 7.0_71 / bin / java jar / etc / zabbix / scripts / cmdline jmxclient 0.10.3.jar 127.0.0.1 : $ 1 java . lang : type = Memory HeapMemoryUsage 2 > & 1 | grep $ 2 | cut d ” “ f2 UserParameter = java . NonHeapMemoryUsage . status [ * ] , / usr / local / jdk1 . 7.0_71 / bin / java jar / etc / zabbix / scripts / cmdline jmxclient 0.10.3.jar 127.0.0.1 : $ 1 java . lang : type = Memory NonHeapMemoryUsage 2 > & 1 | grep $ 2 | cut d ” “ f2 UserParameter = java . LoadClass . status [ * ] , / usr / local / jdk1 . 7.0_71 / bin / java jar / etc / zabbix / scripts / cmdline jmxclient 0.10.3.jar 127.0.0.1 : $ 1 java . lang : type = ClassLoading $ 2 2 > & 1 | cut d ” “ f6

4. 进行测试

zabbix监控多JMX端口 – 01

其实,整体大致就是如此,key都能定义好了,至于模板我相信大家都能写了。(我也是今天才刚刚弄了下,很多也还没有完善)有关不同java的服务,最好是查看一下相关的文档,比如tomcat官方文档。这里大家可以参考一下tomcat自带的模板,下面给大家展示一下效果图:

zabbix监控多JMX端口 – 02

zabbix监控多JMX端口 – 03

 

 

文章转载来自:trustauth.cn

文章版权及转载声明

本文作者:亿网 网址:https://edns.com/ask/post/150721.html 发布于 2024-11-14
文章转载或复制请以超链接形式并注明出处。