博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix监控多tomcat实例
阅读量:6116 次
发布时间:2019-06-21

本文共 2467 字,大约阅读时间需要 8 分钟。

首先得介绍一下zabbix自动探索功能,举个例子,一台服务器需要监控的根目录的磁盘容量,先自定义一个key:

 
  1. UserParameter=disk_use[*],/usr/local/disk_use.sh $1 #disk_use是自定义的key,之后的是取值脚本 [*]代表着脚本的入参变量 $1是给这个脚本入参的变量数 该脚本的功能是根据入参变量得出磁盘容量大小

,然后就能获取到使用情况了。但是服务器监控磁盘容量的话,肯定不会让你只监控一个根目录,比如还有/data目录,/proc目录…等等,每台服务器的情况都不同。这时候就需要使用自动探索功能了。针对这样的情况,需要定义2个key:

 
  1. UserParameter=dir_name,/usr/local/dir_name.sh #该脚本功能是获取目录名,并输出json格式
  2. UserParameter=disk_use[*],,/usr/local/disk_use.sh $1 #脚本功能不变,$1的参数由dir_name.sh获取,这样的话就可以监控多个目录磁盘容量

下面是监控多tomcat实例的内容,

  • 修改zabbix_agent配置
 
  1. vim /data/zabbix/etc/zabbix_agentd.conf
  2. Include=/data/zabbix/etc/zabbix_agentd.conf.d/*.conf #开启子配置文件的路径
  3. UnsafeUserParameters=1 #允许所有字符参数的传递
  • 自定义key值
 
  1. vim /data/zabbix/etc/zabbix_agentd.conf.d/jvm.conf
  2. UserParameter=jvm.name,/data/zabbix/shell/jvm_name.sh #获取tomcat名,并输出json格式
  3. UserParameter=jvm.thread.num[*],/data/zabbix/shell/jvm_thread_num.sh $1 $2 #脚本功能取tomcat线程数
  4. UserParameter=jvm.status[*],/data/zabbix/shell/jvm_status.sh $1 $2 #脚本功能取tomcat状态
  • 脚本内容
    • jvm_name.sh
 
  1. #!/bin/bash
  2. tomcat_name=`ps -ef | grep tomcat | grep -v grep | awk -F "=" '{print $NF}' | cut -d "/" -f 3`
  3. flag=0
  4. count=`ps -ef | grep tomcat | grep -v grep | wc -l`
  5. if [ $count == 0 ];then
  6. exit
  7. fi
  8. echo '{"data":['
  9. echo "$tomcat_name" |while read LINE;do
  10. echo -n '{"{#JVMNAME}":"'$LINE'"}'
  11. flag=`expr $flag + 1`
  12. if [ $flag -lt $count ];then
  13. echo ','
  14. fi
  15. done
  16. echo ']}'
  • jvm_thread_num.sh
 
  1. #!/bin/sh
  2. jvmname=$1
  3. pid=`ps -ef | grep "$jvmname" | grep -v grep | grep -v "$0"| awk '{print $2}' `
  4. jvm_status=`sudo -u ody /usr/local/java/jdk1.7.0_80/bin/jstack "$pid" > /data/zabbix/shell/jstack.txt`
  5. function all {
  6. cat /data/zabbix/shell/jstack.txt | grep http|wc -l
  7. }
  8. function runnable {
  9. cat /data/zabbix/shell/jstack.txt | grep http|grep runnable|wc -l
  10. }
  11. $2
  • jvm_status.sh #该脚本是通过读取文件来获取值的,文件生成是另外一个任务计划的脚本jstat.sh生成的,因为通过实时运行脚本的话,对系统资源消耗过大,所以通过这种方式来获取
 
  1. #!/bin/bash
  2. t=$1
  3. jvm_key=$2
  4. cat /data/zabbix/txt/"$t".gc | grep -w "$jvm_key" | awk '{print $2}'
  • jstat.sh 将该脚本加入任务计划每分钟执行一次
 
  1. #!/bin/bash
  2. tomcat_name=`ps -ef | grep tomcat | grep -v grep | grep -v "jvm_status.sh" | awk -F "=" '{print $NF}' | cut -d "/" -f 3`
  3. for t in ${
    tomcat_name[@]};do
  4. t_id=`ps -ef | grep "$t/" | grep -v "grep" | awk '{print $2}'`
  5. /usr/local/java/jdk1.7.0_80/bin/jstat -gc $t_id | awk 'BEGIN{FS=" "}{for(i = 1;i <= NF;i++) {array[i,NR]=$i}}END {for(i = 1;i <= NF;i++) {for(j = 1;j <= NR;j++) {printf "%s ",array[i,j]}printf "\n"}}' > /data/zabbix/txt/"$t".gc
  6. done
  • 最后重启agentd,并将服务器关联模板即可

转载于:https://www.cnblogs.com/bestlx/p/6098688.html

你可能感兴趣的文章
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
网易跟贴这么火,背后的某个力量不可忽视
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>
mysql的innodb中事务日志(redo log)ib_logfile
查看>>