本文参考自 清风拂面 《python实现zabbix批量监控WEB网站和批量监控主机端口》 修改,使得以后添加web时更加方便,zabbix agent端完成1-3步,在zabbix web端直接导入模板即可使用。
web监控模板(zbx_web_monitor_templates.xml)
1、agent端批量添加脚本/data/zabbix/scripts/web_site_moniter.py
#!/usr/bin/env python # coding:utf-8 import os, sys, json # 将要监控的web站点url添加到urllist列表 # urllist = ["http://baidu.com", # "http://www.qq.com", # "http://www.sina.com.cn/"] files='/etc/zabbix/test/WEB.txt' fd = open(files,'r') urllist=[] for i in fd.readlines(): if i[0] != '#': urllist.append(i.strip('\n')) fd.close() # 这个函数主要是构造出一个特定格式的字典,用于zabbix def web_site_discovery(): web_list = [] web_dict = {"data": None} for url in urllist: url_dict = {} url_dict["{#SITENAME}"] = url.split('|')[0] url_dict["{#URL}"] = url.split('|')[1] web_list.append(url_dict) web_dict["data"] = web_list jsonStr = json.dumps(web_dict, sort_keys=True, indent=4) return jsonStr # 这个函数用于测试站点返回的状态码,注意在cmd命令中如果有%{}这种字符要使用占位符代替,否则会报错 def web_site_code(): cmd = 'curl --connect-timeout 10 -m 20 -o /dev/null -s -w %s %s' % ("%{http_code}", sys.argv[2]) reply_code = os.popen(cmd).readlines()[0] return reply_code if __name__ == "__main__": try: if sys.argv[1] == "web_site_discovery": print web_site_discovery() elif sys.argv[1] == "web_site_code": print web_site_code() else: print "Pls sys.argv[0] web_site_discovery | web_site_code[URL]" except Exception as msg: print msg # 这里对脚本传递进来的第一个参数做判断去执行不同的函数,为什么要这样,因为通过一个脚本写了两个功能
2、zabbix agent配置文件添加如下内容,内容含义请参考《python实现zabbix批量监控WEB网站和批量监控主机端口》 已经详细解释说明
UnsafeUserParameters=1 UserParameter=web_site_discovery,/data/zabbix/scripts/web_site_moniter.py web_site_discovery UserParameter=web_site_code[*],/data/zabbix/scripts/web_site_moniter.py web_site_code $1
3、zabbix agent添加需要监控web /data/zabbix/test/WEB.txt
#SITENAME|URL
#QQ|www.qq.com
BAIDU|www.baidu.com
新浪|www.sina.com
#号将表示取消web监控
修改zabbix agent配置后需要重启agent生效
4、导入web监控模板zbx_web_monitor_templates.xml
Configuration ---> Templates ---> Import --->选择模板zbx_web_monitor_templates.xml
5、模板导入之后Configuration ---> Templates可以找到Templates Web Monitor 模板
6、选择Templates Web Monitor模板进行管理主机组或者主机
7、Configuration ---> Hosts --->某主机Applications
可以发现Templates Web Monitor: Web Monitor Service监控项目
8、查看监控项目