您的位置:首页 > 运维架构 > 网站架构

zabbix lld结合pycurl批量监控网站服务质量

2016-07-24 00:09 567 查看
前两天看到博客有监控web的,之前也写过pycurl的监控状态;后面想想web监控咱们何不直接通过zabbix的方式监控;zabbix确实是个万花筒,这个也是我喜欢zabbix的一个原因之一吧;pycurl可以参考我之前写过的:http://xiaoluoge.blog.51cto.com/9141967/1616922。

1、监控脚本:
[root@monitor scripts]# cat web_monitor.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,sys
import time
import sys
import pycurl
import json
urllist=['www.baidu.com','www.hao123.com']
class Test:
def __init__(self):
self.contents = ''
def callback(self,curl):
self.contents = self.contents + curl
def test_gzip(url):
data = {}
t = Test()
c = pycurl.Curl()
c.setopt(pycurl.WRITEFUNCTION,t.callback)
c.setopt(pycurl.ENCODING, 'gzip')
c.setopt(pycurl.URL,url)
c.perform()
data['HTTP_CODE']=c.getinfo(c.HTTP_CODE)
data['NAMELOOKUP_TIME']=(c.getinfo(c.NAMELOOKUP_TIME))*1000
data['CONNECT_TIME']=(c.getinfo(c.CONNECT_TIME))*1000
data['PRETRANSFER_TIME']=(c.getinfo(c.PRETRANSFER_TIME))*1000
data['SPEED_DOWNLOAD']=c.getinfo(c.SPEED_DOWNLOAD)
return data
def web_name_discovery():
web_list=[]
web_dict={"data":None}
for url in urllist:
url_dict={}
url_dict["{#NAME}"]=url
web_list.append(url_dict)
web_dict["data"]=web_list
jsonStr = json.dumps(web_dict, sort_keys=True, indent=4)
return jsonStr
def get_web_status():
data=test_gzip(sys.argv[2])
return data[sys.argv[3]]
if __name__ == '__main__':
if sys.argv[1] == "web_name_discovery":
print web_name_discovery()
elif sys.argv[1] == "get_web_status":
print get_web_status()
2、web_name_discovery函数负责以json格式的形式返回我们要监控的网站域名(修改urllist把域名变成你们自己的域名即可):执行结果:
[root@monitor scripts]# python web_monitor.py web_name_discovery
{
"data": [
{
"{#NAME}": "www.baidu.com"
},
{
"{#NAME}": "www.hao123.com"
}
]
}
**这个{#NAME}就是我们要返回的宏变量;

3、web在anent定义这个key和在web UI定义:
[root@monitor scripts]# cat /usr/local/zabbix/etc/zabbix_agentd.conf.d/web_status.conf
UserParameter=get_web_name,/usr/local/zabbix/scripts/web_monitor.py web_name_discovery
UserParameter=get_web_status[*],/usr/local/zabbix/scripts/web_monitor.py get_web_status $1 $2


测试结果:

[root@monitor bin]# ./zabbix_get -s 192.168.10.100 -k get_web_name
{
"data": [
{
"{#NAME}": "www.baidu.com"
},
{
"{#NAME}": "www.hao123.com"
}
]
}


定义web UI的key(配置---》模板---创建自动发现规则---》定义第一个获取域名名称的key):





4、函数get_web_status获取网站各个服务质量的值:查看key设置效果:
# ./zabbix_get -s 192.168.10.100 -k get_web_status[www.hao123.com,HTTP_CODE]

200

5、这样的话获取key的返回值状态也找到了,剩下的就是在模板里定义监控原先和出图告警监控就好:





6、监控图形原型设置:





7、网站各状态响应时间:





网站平均下载速度:





网站的状态码:





到此已经完成,后期大家可以做些优化,或者想不到的地方大家可以修改:我用的是zabbix 3.0的,3.0的话直接下载模板导入,定义angent key即可:

zabbix视频可以查看:http://www.roncoo.com/details?cid=fb3050a5b34b42f39ccad83ebebc89c1

本文出自 “小罗” 博客,请务必保留此出处http://xiaoluoge.blog.51cto.com/9141967/1829233
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: