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

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

1、监控脚本:

[[email protected] 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把域名变成你们自己的域名即可):执行结果:

[[email protected] scripts]# python web_monitor.py web_name_discovery
{
    "data": [
        {
            "{#NAME}": "www.baidu.com"
        }, 
        {
            "{#NAME}": "www.hao123.com"
        }
    ]
}

**这个{#NAME}就是我们要返回的宏变量;

3、web在anent定义这个key和在web UI定义:

[[email protected] 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

测试结果:

[[email protected] 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

时间: 2024-08-10 14:55:58

zabbix lld结合pycurl批量监控网站服务质量的相关文章

使用Zabbix批量监控网站可用性方案二

一 应用场景描述 在上一篇文章中介绍了 使用Zabbix批量监控网站可用性方案一 Zabbix自带的Web监控只是利用libcurl库在Zabbix server或者proxy端来检测所有的url,这样实际上是不能检查到区域访问各个url的网络质量的.本文则使用Zabbix LLD,pycurl模块以及Zabbix sender来收集不同区域的Zabbix agent访问各个url的网络质量. 二 编写脚本 三 制作Zabbix模板 参考文档: http://john88wang.blog.51

监控网站服务质量出图学习后续篇

前面我们已经学习过了,如何收集网站服务质量的一些相关数据,然后通过入库出图,开始打算是用rrdtool做画图,但是经过一段时间的研究,发现echarts出图合理和美观,下面贴出我实时收集到的数据和出图展示部分: 1.数据收集,并且格式化形成字典: #!/usr/bin/env python # -*- coding: utf-8 -*- import os,sys,json import time import sys import pycurl class Test: def __init__

pycurl 模块监控web服务质量应用

做过运维的应该都做过http服务了.像一些电子商城,或者是一些互联网公司,web的服务之类是至关重要的,近期看了刘天斯大哥的书觉得自己运维平台应该也可以这样去监控服务之类,今天学习了pycurl模块,这里记录一下: 模块相关说明: c = pycurl.Curl()    #创建一个curl对象   c.setopt(pycurl.CONNECTTIMEOUT, 5)    #连接的等待时间,设置为0则不等待   c.setopt(pycurl.TIMEOUT, 5)    #请求超时时间  

zabbix自动发现实现批量监控docker状态

最近在搞zabbix监控docker以及docker内部应用状态信息,网上找的资料好少,只找到了一个大神的一篇文章,用的是python实现监控docker容器的基本状态,我在他给的脚本基础上进行修改,另外,增加了docker内部常用应用的状态监控,目前在测试环境上部署成功了,具体还需要在线上环境部署后才能检验出效果如何. 好了,根据惯例,废话讲完了,开始进入正题了. 首先,介绍下该监控套件有三个脚本,一个是自动发现主机上的docker容器脚本,另一个是用python写的获取每个docker容器的

Zabbix通过Nginx状态来监控网站并发量

一.开 启Nginx状态 一.安装Nginx 执行命令:yum install nginx 二.启动Nginx 执行命令:systemctl start nginx 三.配置Nginx开启Status 1.执行命令:vim /etc/nginx/nginx.conf,添加如下配置: 2.重启Nginx服务: 执行命令:systemctl restart nginx 四.访问Nginx配置的ngx_status页面 1.打开浏览器,输入:http://<nginx-server ip>/ngx_

Zabbix监控(十五):自动批量监控WEB页面

参考官方文档: https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery 参考自动监控Linux端口文档: http://ywzhou.blog.51cto.com/2785388/1580160 说明:本节将使用脚本形式批量监控WEB页面,再多的URL都可以写在weblist文件中进行自动监控:由于监控网页不需要依赖某台监控主机,因此直接在Zabbix Server上配置即可. 1.新建脚本文件

Zabbix agent自动注册功能实现主机批量监控

Zabbix agent自动注册功能实现主机批量监控 Zabbix auto registration 功能很强大,当每新增一台agent,只需在server添加一个触发器,在agent修改几个参数,就能自动加入监控当中.这功能在批量监控中有莫大作用,如果后续需要增加某项监控,只需要模板中添加item即可. 1.克隆新的模板.创建新的主机组 模板克隆 [组态]à[模板]à手选一个模板à[全克隆] 如果已经做好模板,就直接调用即可:如果没有做好模板,后续要更改的话,最好还是用一个新的模板. 新增主

Zabbix 监控网站的访问量

需求:监控网站pv和uv的总量和5分钟内的pv和uv的增量1. PV.UV是什么?UV:独立访客,每个独立上网电脑视为一位访客,一天之内网站的访客数量PV:访问量,页面浏览量或者点击量,用户每访问一次记录一次 2. 根据的访问日志统计网站PV 和UV总量[[email protected] scripts]# cd /usr/local/zabbix/scripts/[[email protected] scripts]# cat pvuv_number.sh#/bin/bash#desc: u

python实现自动监控网站并发送邮件告警

通过定时执行python脚本,可以实现定期批量访问网站,如果发现网站打不开,第一时间发邮件到管理员邮箱进行预警 这里用的是python3.5 需要安装的插件: smtplib:发邮件需要用到 pycurl:访问网站时会需要用到 linecache:在读取txt网站清单时需要用到 具体思路: python程序从txt里面批量读取到网站的信息,通过Curl.py模拟浏览器去访问网站,并且把访问的结果写入到以自己的网站名称-日期.txt格式的文件中记录;有几种情况: 1.如果发现打不开了,直接发邮件提