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)

时间: 2024-10-20 03:44:01

zabbix监控多tomcat实例的相关文章

Zabbix应用五:Zabbix监控多Tomcat

利用Zabbix Trapper方式监控多Tomcat实例 Zabbix自带的模版(JMX Tomcat.JMX Generic)默认只能在一台机器上监控一个tomcat实例(因为监控项中的key不能重复),而实际生产环境中一台服务器往往会启动多个tomcat实例,这就显得比较鸡肋. 然而,zabbix的牛逼是有道理的,其LLD是zabbixzh d

zabbix监控单机多实例redis脚本

zabbix监控单机多实例redis脚本 公司节省成本,充分利用资源,部署了单机多实例的线上情况.作为python新手,果断决定写个很low的脚本,然后实现监控功能. 下面这个脚本实现了,discovery自动发现,然后通过一个status监控实现了,其它监控信息的自动汇报功能.其中很low的地方在于,每个主机上的脚本必须定义本地的redis信息,比如端口,密码之类的:其实这个可以通过配置中心获取的,但是因为分享出来,所以就写了个定义的实例:还有一点大神都一般自己写socket发送数据,我这里很

zabbix监控mysql多实例和mariadb自定义脚本及其部署

最近新部署zabbix监控,发现有很多DB服务器都是mysql多实例的状态,mpm默认的mysql监控无法有效的监控mysql的运行状态和复制关系,故针对双实例的mysql制作的手工的zabbix脚本监控如下 首先新建新的zabbix的mysql多实例监控模板,操作如下 名称 为模板信息名称 类型 因为使用的脚本出发所以修改成zabbix捉捕器 键值 脚本返回的信息,可以为数值,也可以是字元,这里定义为字元 数据类型 字元 同时也可以设置主动捕捉,如下:监控多实例端口状态 名称 为模板信息名称

Zabbix监控redis多实例(low level discovery)

对于多实例部署的tomcat.redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作. 注:Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.创建模板 模板名称: Template_Redis_Monitor 2.创建自动发现规则 给已创建好的模板Template_Redis_Monitor添加自动发现规则. 3.添加监控项原型 从上面截图可以看到,我已经创建了4个,具体如下: 看看其中一个: 再来看看主机关联模板后的监控项:

zabbix监控 openstack 的实例的资源使用情况

领导提出的需求: 在不给云主机安装客户端的情况下,监控云主机的 cpui 内存 网络 io,并且能出图. 想了几个方案: 1.ceilometer取数据,存入mangodb,用zabbix来读mangodb数据绘图 2 ceilometer 取数据 ,gnocchi来聚合数据, grafana来出图 3 ceilometer 取数据,直接把取到的数据通过zabbix trapper 丢给 zabbix,由zabbix来维护数据 4 干脆跳过 ceiometer,直接用zabbix 调libvir

Zabbix监控Mysql多实例自动添加

1.定义每个实例的端口 cat mysql_port 3306 3307 3308 3309 3310 3311 3312 3313 2.给所有实例创建一个zabbix用户只允许本地访问,生产环境具体权限各位看官自己看着给吧O(∩_∩)O GRANT ALL PRIVILEGES ON *.* TO [email protected]'127.0.0.1' IDENTIFIED BY 'zabbix'; 3.创建自动发现MySQL端口脚本 cat /data/PRG/zabbix/scripts

zabbix监控MySQL多实例实践

一.实践背景:一台机器上部署了多个MySQL实例,每个实例使用不同的端口,需要通过zabbix将其都纳入监控中. 二.实践方法及原理说明:1.在Zabbix上创建监控MySQL数据库使用的模版,导入案例模版:链接: https://pan.baidu.com/s/1nXooNPMXrmaAQidRrxVOLg 提取码: ure1 2.在模版上创建自动发现的规则,在自动发现规则中需要定义两个东西:a.键值 用来自动获取MySQL实例的端口,需要使用到主机宏{$MYSQLPORT} b.监控项原型

zabbix监控mysql多实例自发现监控

系统运维工程师   李超 1.定义每个实例的端口 cat mysql_port  33063307330833093310  331133123313 2.给所有实例创建一个zabbix用户只允许本地访问,生产环境具体权限各位看官自己看着给吧O(∩_∩)O GRANT ALL PRIVILEGES ON *.* TO [email protected]'127.0.0.1' IDENTIFIED BY 'zabbix'; 3.创建自动发现MySQL端口脚本 cat /data/PRG/zabbi

ZABBIX监控一台机器上的多tomcat实例落地经验步骤

以前做过通过jmx监控单个tomcat实例,但是有的时候公司一台服务器上有10个tomcat容器那怎么办呢,来吧往下看吧 1,注意操作文件路径: zabbix安装路径: /data/zabbix/etc/zabbix_agentd.conf.d/jmx_discovery.sh /etc/zabbix/zabbix_agentd.conf 配置文件中 UnsafeUserParameters=1 必须打开,否则模板的自动发现功能报错. 该模板的监控和触发属性在自动发现中配置,所以导入模板后,下属