设为首页 收藏本站
查看: 1244|回复: 0

[经验分享] 添加zabbix自动发现(监控多tomcat实例)

[复制链接]

尚未签到

发表于 2017-12-25 19:43:02 | 显示全部楼层 |阅读模式
说明
  何为自动发现?首先我们监控多tomcat实例,如果一个个实例地添加或许可以完成当前需求。但是日后随着实例的增多,再手动一个个去添加就十分不方便了。这时候需要自动发现这个功能,来帮助我们自动添加监控tomcat实例。本文就以监控tomcat线程为例,来实现这个自动发现的功能。这里zabbix版本为3.0。
  
DSC0000.jpg

创建自动发现脚本
  可以理解为这个脚本能够打印出当前服务器上所有的tomcat实例名称。zabbix会定期执行这个脚本,做到自动发现当前所有的tomcat实例,脚本放在zabbix-agent安装路径的scripts目录下。而下一步就是给找到的tomcat实例添加所需要监控的值。下面先看脚本:
# cat discover_jvm.py  
#!/usr/bin/python2.7
  
#Usage: discover tomcat_app
  
#Last Modified:
  
import subprocess
  
import json
  

  
#args为自己定义查找项目名字的方式,由于各自部署方式的不同,这里需要根据实际情况来写命令。
  
args="find /opt/app/applications -name 'catalina.properties' | sort -n | uniq | awk -F'/' '{print $5}'"
  
t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
  

  
apps=[]
  

  
for app in t.split('\n'):
  if len(app) != 0:
  apps.append({'{#APP_NAME}':app})
  
#打印出zabbix可识别的json格式
  
print json.dumps({'data':apps},indent=4,separators=(',',':'))
  执行打印结果如下所示:
# chmod a+x discover_jvm.py 赋予执行权限  
# chown zabbix:zabbix discover_jvm.py 添加属主为zabbix用户
  
# ./discover_jvm.py
  
{
  "data":[
  {
  "{#APP_NAME}":"app1"
  },
  {
  "{#APP_NAME}":"app2"
  }
  ]
  
}
  
这里打印出app1、app2两个实例,以后要是有其他实例,也能够同样打印出来。

创建监控项脚本
  这个脚本的作用是打印出tomcat实例需要监控的项,本例为线程数。该脚本执行需要两个参数,$1为实例名,$2为监控项名。打印的结果为一个整型的数字。记得跟上面的脚本放在同样的位置,并赋予执行权限和正确的属主。
# cat app_status.sh  
#!/bin/bash
  
#Usage: tomcat_app status
  
#Last Modified:
  

  
app=$1
  
status=$2
  
pid=`ps -ef | grep "$app" | grep -v grep | grep -v "$0"| awk '{print $2}'`
  

  
case $status in
  thread.num)
  /opt/programs/jdk1.7.0_67/bin/jstack "$pid" | grep http | wc -l
  ;;
  *)
  echo "Usage:$0 {app_name status[thread.num]}"
  exit 1
  ;;
  
esac
  

  
#执行
  
#./app_status.sh app_name thread.num
  日后如果需要添加新的监控项,只需修改上面的脚本,改变$2的选择即可。

zabbix客户端配置
  在客户端配置文件中添加自定义监控的key,其实就是给我们监控选项取个名字,然后如何获取这个值。示例如下:
#变量1的key为custom.discover.jvm_app,为自动发现的tomcat实例名,获取方式即为执行dicover_jvm脚本  
UserParameter=custom.discover.jvm_app,/opt/programs/bd-zabbix-agentd_3.0.4/scripts/discover_jvm.py
  
#变量2的key为custom.app.thread_num,
  • 表示需要变量支持,这里即为$1、$2(本例中$2的意义不同,监控项就不同)获取方式为执行app_status.sh脚本
      
    UserParameter=custom.app.thread_num
  • ,/opt/programs/bd-zabbix-agentd_3.0.4/scripts/app_status.sh $1 $2
      修改完后重启zabbix客户端。然后在服务端进行验证:
      

    #验证获取custom.discover.jvm_app的key值  
    zabbix-server_3.0.4/bin/zabbix_get -s 10.205.51.22 -p 20050 -k custom.discover.jvm_app
      
    #验证获取custom.app.thread_num的key值
      
    ./zabbix_get -s 10.205.51.22 -p 20050 -k custom.app.thread_num[app1,thread_num]
      
    如果正确的话,就会返回在客户端执行脚本一样的结果。
      

    zabbix界面添加自动发现模版
      为了便于后面更多的主机添加此监控,这里就创建一个模板来进行配置。首先创建一个发现规则,该规则就是用来自动发现tomcat实例的:
      
    DSC0001.jpg
      取一个名字,并填上我们之前定义的key,然后保存即可:
      
    DSC0002.jpg
      然后创建一个监控项:
      
    DSC0003.jpg
      取一个名字,也填上我们之前定义的key,注意这里的#APP_NAME为之前脚本输出的变量,要填写一致:
      
    DSC0004.jpg
      然后我们创建一个图像来观察数据:
      
    DSC0005.png
      同样取名字的变量要跟之前一致,并添加数据源为刚刚我们定义的监控项:
      
    DSC0006.jpg
      最后可以观察到图像:
      
    DSC0007.jpg
      当然我们还可以定义一个触发器,比如大于多少线程就告警,这里就不一一赘述了。

  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428002-1-1.html 上篇帖子: spring boot 部署到tomcat 下篇帖子: Idea+maven+tomcat部署第一个tomcat项目
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表