编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

详解如何用同一个zabbix监控模板来监控tomcat不同端口

wxchong 2024-10-25 18:01:02 开源技术 132 ℃ 0 评论

概述

zabbix监控tomcat只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达。

数了下目前生产的用不同的tomcat端口大概有30个,如果用一个tomcat端口对应一个Tomcat模板那我得整几十个,每个模板对应监控项和触发器也得改,想了想还是放弃了,自己写个脚本来做吧!

考虑到一台应用服务器上最多两个需要监控的tomcat,分别设定tomcat监控模板(12345)和tomcat监控模板(12346),如果一台服务器上有2个需要监控的tomcat,则添加这两个模板进去即可。

今天主要介绍一下怎么自定义脚本去监控tomcat。


1、zabbix客户端配置监控tomcat状态脚本

# cat /etc/zabbix/zabbix_agentd.d/tomcat_status.sh 
================================================================================================
#!/bin/bash
#this script is used to get tomcat status
#copyright by hwb
metric=$1
#cmdline-jmxclient.jar包用来获取jmx信息
jarfile=/etc/zabbix/zabbix_agentd.d

#监控tomcat线程、流量、请求
case $metric in
   version)
          #这里要注意2>&1的用法,没有这个无法输出想要的结果
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:type=Server serverInfo 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   thread_max)
          #这里要注意2>&1的用法,没有这个无法输出想要的结果
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=ThreadPool maxThreads 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   thread_current)
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=ThreadPool currentThreadCount 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   thread_busy)
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=ThreadPool currentThreadsBusy 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   http_received)
          #单位换算,字节划算成M,代表tomcat接收了多少M流量
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor bytesReceived 2>&1|awk '{a[$NF]}END{for(k in a)print k/1024/1024}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   http_sent)
          #单位换算,字节换算成M
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor bytesSent 2>&1|awk '{a[$NF]}END{for(k in a)print k/1024/1024}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   request_count)
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor requestCount 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   request_error)
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor errorCount 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
   request_time)
          output=$(java -jar $jarfile/cmdline.jar - 127.0.0.1:12345 Catalina:name=\"http-nio*\",type=GlobalRequestProcessor processingTime 2>&1 | awk '{print $NF}')
          if [ "$output" == "" ];then
             echo 0
          else
             echo $output
          fi
        ;;
         *)
          echo -e "\e[033mUsage: sh $0 [version|thread_max|thread_current|thread_busy|http_received|http_sent|request_count|request_error|request_time]\e[0m"
esac
================================================================================================



2、添加自定义参数

# cat /etc/zabbix/zabbix_agentd.d/tomcat.conf
================================================================================================
UserParameter=tomcat.status[*],/etc/zabbix/zabbix_agentd.d/tomcat_status.sh $1
================================================================================================



3、授权

chown -R zabbix:zabbix /etc/zabbix
chmod -R 755 /etc/zabbix



4、重启客户端

 systemctl restart zabbix-agent



5、在zabbix服务端测试

zabbix_get -s XX  -p 10050  -k tomcat.status[thread_current]
zabbix_get -s xx  -p 10050  -k tomcat.status[http_sent]
zabbix_get -s xx  -p 10050  -k tomcat.status[request_count]



6、zabbix网页配置监控项

配置监控项后可到配置-主机-监控项(对应模板)查看是否生效

1)tomcat版本

--tomcat版本
名称:Tomcat version
类型:Zabbix客户端
键值:tomcat.status[version]
信息类型:字符
更新间隔:3h

2)tomcat线程

--tomcat最大线程数
名称:tomcat最大线程数
类型:Zabbix客户端
键值:tomcat.status[thread_max]
信息类型:浮点数
单位:
--tomcat当前线程数
名称:tomcat当前线程数
类型:Zabbix客户端
键值:tomcat.status[thread_current]
信息类型:浮点数
单位:
--tomcat繁忙线程数
名称:tomcat繁忙线程数
类型:Zabbix客户端
键值:tomcat.status[thread_busy]
信息类型:浮点数
单位:

3)网络流量统计

--tomcat接收的流量
名称:tomcat接收的流量
类型:Zabbix客户端
键值:tomcat.status[http_received]
信息类型:浮点数
单位:MB
--tomcat发送的流量
名称:tomcat发送的流量
类型:Zabbix客户端
键值:tomcat.status[http_sent]
信息类型:浮点数
单位:MB


4)tomcat请求

--tomcat请求数
名称:tomcat请求数
类型:Zabbix客户端
键值:tomcat.status[request_count]
信息类型:数字
单位:
--tomcat出错请求数
名称:tomcat出错请求数
类型:Zabbix客户端
键值:tomcat.status[request_error]
信息类型:数字
单位:
--tomcat请求时间
名称:tomcat请求时间
类型:Zabbix客户端
键值:tomcat.status[request_time]
信息类型:浮点数
单位:s
更新间隔:1m



7、图形展示如下:



觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表