发布时间:2020-05-16 14:50:28来源:阅读:
何为自动发现?首先我们监控多tomcat实例,如果一个个实例地添加或许可以完成当前需求。但是日后随着实例的增多,再手动一个个去添加就十分不方便了。这时候需要自动发现这个功能,来帮助我们自动添加监控tomcat实例。本文就以监控tomcat线程为例,来实现这个自动发现的功能。这里zabbix版本为3.0。
可以理解为这个脚本能够打印出当前服务器上所有的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('
'):
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的选择即可。
在客户端配置文件中添加自定义监控的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]
如果正确的话,就会返回在客户端执行脚本一样的结果。
为了便于后面更多的主机添加此监控,这里就创建一个模板来进行配置。首先创建一个发现规则,该规则就是用来自动发现tomcat实例的:
取一个名字,并填上我们之前定义的key,然后保存即可:
然后创建一个监控项:
取一个名字,也填上我们之前定义的key,注意这里的#APP_NAME为之前脚本输出的变量,要填写一致:
然后我们创建一个图像来观察数据:
同样取名字的变量要跟之前一致,并添加数据源为刚刚我们定义的监控项:
最后可以观察到图像:
当然我们还可以定义一个触发器,比如大于多少线程就告警,这里就不一一赘述了。
tomcat7.0 (Web 应用服务器)官方版
9.3M
自动投票软件(投票刷票神器) v3.8 免费版
52KB
2寸照片生成器(标准照片自动调整软件)v1.0 免费版
453KB
AI全自动剪辑软件下载
162.5M
Directory Monitor汉化版 (文件夹监控软件) v 2.12.1.3 汉化破解版
6.5M
EXCEL全自动检索录入 v10.0.0.0免费版
2.11 MB
Netlimiter (互联网流量监控工具) v4.1.10.0 破解版
7.2M
Sidebar Diagnostics(电脑硬件监控软件) v3.5.9 官方版
3.73M
Yuntel电话自动拨号
51.5M
b站录播机(自动录屏软件) v1.6.10 破解版
129.1M
dvr4000监控软件下载
17.5M
后台挂尔雅浏览器(自动刷课浏览器) 2021 免费版
88.7MB
心蓝IP自动更换器下载
5.5M
掌上看家采集端(远程监控软件) v5.0.3 中文版
6.1M
文件自动分类 v3.3 绿色版
288.11K
楼月键盘屏幕全记录(电脑监控软件) v3.4 破解版
955KB
神奇照片自动打印软件 v3.0.0.278 官方版
14.4M
系统之家一键重装系统(系统自动安装工具)12.5.48.1830 最新版
28.4M
绿点鼠标自动点击器下载
2.34MB
网路岗(网络监控软件)9.03.60 免费版
28.3M
2020-06-07
Nginx和Apache如何设置ajax跨域
Vista系统中本地连接图标丢失,如何处理?
EasyCapture打开无画面的解决方案
SureSAS112存储硬盘状态说明
一体机Realtek网卡安装驱动报错的临时解决方案
Linux环境下RPM方式JDK安装及配置
Win8.1如何安装Microsoft .NET Framework 3.5
内存不能为read修复工具
Thinkpad Z60 - 用恢复光盘恢复系统后硬件口令重设功能失效的解决方法