当前位置: 首页 > news >正文

zabbix监控多tomcat实例

首先得介绍一下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,并将服务器关联模板即可


来自为知笔记(Wiz)


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

相关文章:

  • 小小小游戏
  • ApacheHttpServer出现启动报错:the requested operation has failed解决办法
  • Inodes 清理
  • vmware虚拟化无法迁移虚拟机
  • Docker for windows10 配置阿里云镜像
  • Hadoop集群搭建步骤
  • 网站开发流程以及HTML5简介(九)
  • windows 下的tcping 小插件
  • 当数据库字段是图片URL时怎样在单元格中显示图片
  • 快速删除段落间多余的空行
  • 编写grains自定义脚本
  • html分页插件
  • ArcGIS for android访问天地图
  • 4、flume的自定义拦截器Iterceptor
  • Ubuntu Docker安装运行出错Cannot connect to the Docker daemon
  • Google 是如何开发 Web 框架的
  • JavaScript-如何实现克隆(clone)函数
  • [数据结构]链表的实现在PHP中
  • 08.Android之View事件问题
  • AHK 中 = 和 == 等比较运算符的用法
  • Flex布局到底解决了什么问题
  • HTTP中的ETag在移动客户端的应用
  • JavaScript HTML DOM
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpiderData 2019年2月13日 DApp数据排行榜
  • vue.js框架原理浅析
  • 实现菜单下拉伸展折叠效果demo
  • 使用API自动生成工具优化前端工作流
  • 试着探索高并发下的系统架构面貌
  • 小程序01:wepy框架整合iview webapp UI
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • AI算硅基生命吗,为什么?
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​批处理文件中的errorlevel用法
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $.proxy和$.extend
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (十八)SpringBoot之发送QQ邮件
  • (转)我也是一只IT小小鸟
  • .aanva
  • .NET 8.0 中有哪些新的变化?
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • @Data注解的作用
  • @Mapper作用
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @Repository 注解
  • [20161214]如何确定dbid.txt
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [AutoSar]BSW_Com02 PDU详解
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C++] 统计程序耗时
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法