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为之前脚本输出的变量,要填写一致:
然后我们创建一个图像来观察数据:
同样取名字的变量要跟之前一致,并添加数据源为刚刚我们定义的监控项:
最后可以观察到图像:
当然我们还可以定义一个触发器,比如大于多少线程就告警,这里就不一一赘述了。
zabbix监控Memcached状态
04-13
docker部署zabbix监控系统(nginx mysql)
06-28
使用zabbix监控K8s(kubernetes)异常POD
03-13
zabbix配置percona的插件获取更详细的mysql监控信息
03-16
使用zabbix根据时间监控多行格式的日志
04-03
使用Selenium抓取zabbix性能监控图
02-15
Apache tomcat JRE安装配置
04-09
Docker安装配置tomcat jdk
06-21
发现Lenovo R3220无线路由器有密码泄露的漏洞
03-26
9个常用iptables配置实例
03-29
zabbix 3.x客户端自动注册
04-07
zabbix3.0监控Apache2.4服务器状态
07-17
zabbix3监控Nginx性能状态
04-09
zabbix使用Pycurl模块监控web页面状态
06-23
AWK 两个文件字段合并处理实例
06-28
EDU6.5.0执行控制端程序时无法发现接收端解决方案
04-05
LJ3050D打印机单面打印正常,自动双面打印提示纸张错误
05-21
Linux modprobe自动处理可载入模块命令详解
05-25
MBR与GPT分区格式(实例-创建大于2TB的分区)
03-19
R520 G6X板载RAID配置,关闭RAID发现光驱无法引导
05-02
tomcat7.0 (Web 应用服务器)官方版
9.3M
下载自动投票软件下载
52KB
下载AI全自动剪辑软件 v10.1 官方版
162.5M
下载EXCEL全自动检索录入
2.11 MB
下载OpenWebMonitor(网页监控软件) v4.3.5 破解版
51.1M
下载Sidebar Diagnostics(电脑硬件监控软件) v3.5.9 官方版
3.73M
下载TP-LINK安防系统(远程视频监控软件) v2.10.5.138 电脑版
107.4M
下载Yuntel电话自动拨号软件 v5.2.6.0官方版
51.5M
下载dvr4000监控软件(安防监控录像工具) 7.4 免费版
17.5M
下载mc喊麦软件(全自动喊麦软件) V7.0 绿色版
8M
下载心蓝IP自动更换器官方版 v1.0.0.2
5.5M
下载文件自动分类 v3.3 绿色版
288.11K
下载楼月键盘屏幕全记录(电脑监控软件) v3.4 破解版
955KB
下载绿点鼠标自动点击器(鼠标自动点击工具) 3.20 中文版
2.34MB
下载网路岗(网络监控软件)9.03.60 免费版
28.3M
下载长角牛网络监控机下载
2.8M
下载2寸照片生成器下载
453KB
下载Directory Monitor下载
6.5M
下载Nektra SpyStudio下载
39.0M
下载Netlimiter 下载
7.2M
下载