发布时间:2020-06-23 18:45:54来源:阅读:
由于网络的问题,zabbix自带web模块用不了,后台研发2b,老是更新正式环境安装包,导致一直出问题,老是给他们擦屁股,早说过这事,他们不配合,现在出问题了,挺爽,这锅我表示不背,就找了pycurl这个模块写个监控。
pycurl模块用法:
(这块是抄的,引用地址:http://blog.csdn.net/xsj_blog/article/details/52102652)
c = pycurl.Curl() #创建一个curl对象
c.setopt(pycurl.CONNECTTIMEOUT, 5) #连接的等待时间,设置为0则不等待
c.setopt(pycurl.TIMEOUT, 5) #请求超时时间
c.setopt(pycurl.NOPROGRESS, 0) #是否屏蔽下载进度条,非0则屏蔽
c.setopt(pycurl.MAXREDIRS, 5) #指定HTTP重定向的最大数
c.setopt(pycurl.FORBID_REUSE, 1) #完成交互后强制断开连接,不重用
c.setopt(pycurl.FRESH_CONNECT,1) #强制获取新的连接,即替代缓存中的连接
c.setopt(pycurl.DNS_CACHE_TIMEOUT,60) #设置保存DNS信息的时间,默认为120秒
c.setopt(pycurl.URL,"http://www.baidu.com") #指定请求的URL
c.setopt(pycurl.USERAGENT,"Mozilla/5.2 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50324)") #配置请求HTTP头的User-Agent
c.setopt(pycurl.HEADERFUNCTION, getheader) #将返回的HTTP HEADER定向到回调函数getheader
c.setopt(pycurl.WRITEFUNCTION, getbody) #将返回的内容定向到回调函数getbody
c.setopt(pycurl.WRITEHEADER, fileobj) #将返回的HTTP HEADER定向到fileobj文件对象
c.setopt(pycurl.WRITEDATA, fileobj) #将返回的HTML内容定向到fileobj文件对象
c.getinfo(pycurl.HTTP_CODE) #返回的HTTP状态码
c.getinfo(pycurl.TOTAL_TIME) #传输结束所消耗的总时间
c.getinfo(pycurl.NAMELOOKUP_TIME) #DNS解析所消耗的时间
c.getinfo(pycurl.CONNECT_TIME) #建立连接所消耗的时间
c.getinfo(pycurl.PRETRANSFER_TIME) #从建立连接到准备传输所消耗的时间
c.getinfo(pycurl.STARTTRANSFER_TIME) #从建立连接到传输开始消耗的时间
c.getinfo(pycurl.REDIRECT_TIME) #重定向所消耗的时间
c.getinfo(pycurl.SIZE_UPLOAD) #上传数据包大小
c.getinfo(pycurl.SIZE_DOWNLOAD) #下载数据包大小
c.getinfo(pycurl.SPEED_DOWNLOAD) #平均下载速度
c.getinfo(pycurl.SPEED_UPLOAD) #平均上传速度
c.getinfo(pycurl.HEADER_SIZE) #HTTP头部大小
代码如下:
#!/usr/bin/env python
# __*__coding:utf8__*__
#Author:wangpengtai
#Blog:http://wangpengtai.blog.51cto.com/
import pycurl
import sys
import StringIO #引用该模块的原因是:使用pycurl后会打印出页面内容,我们不需要看到这个内容,只需要获取页面反馈信息就行了,只能将其写入缓存中,目前没找到好办法,学艺不精,不会使用重定向写到os.devnull中,无奈初次下策。。。
#开始使用的是写入临时文件,但是会有权限问题,导致zabbix无法获取到数据。
class WebStatus(object):
def __init__(self, url):
self.url = url
self.curl = pycurl.Curl()
self.string = StringIO.StringIO()
# 连接等待时间,0则不等待
self.curl.setopt(pycurl.CONNECTTIMEOUT, 5)
# 超时时间
self.curl.setopt(pycurl.TIMEOUT, 5)
# 下载进度条,非0则屏蔽
self.curl.setopt(pycurl.NOPROGRESS, 1)
# 指定HTTP重定向最大次数
self.curl.setopt(pycurl.MAXREDIRS, 5)
# 完成交互后强制断开连接,不重用
self.curl.setopt(pycurl.FORBID_REUSE, 1)
# 设置DNS信息保存时间,默认为120秒
self.curl.setopt(pycurl.DNS_CACHE_TIMEOUT, 60)
# 设置请求的Url
self.curl.setopt(pycurl.URL, self.url)
self.curl.setopt(pycurl.WRITEFUNCTION, self.string.write)#将页面内容写入缓存
self.curl.perform()
def request_value(self):
data = {
"Http_code": self.curl.getinfo(pycurl.HTTP_CODE),
"Speed_download": self.curl.getinfo(pycurl.SPEED_DOWNLOAD),
"Connect_time": self.curl.getinfo(pycurl.CONNECT_TIME),
"Total_time": self.curl.getinfo(pycurl.TOTAL_TIME),
"Dnslookup_time": self.curl.getinfo(pycurl.NAMELOOKUP_TIME),
"Redirect_time": self.curl.getinfo(pycurl.REDIRECT_TIME),
"Redirect_count": self.curl.getinfo(pycurl.REDIRECT_COUNT)
}
return data
def __end__(self): #释放内存和连接,做一个有始有终,有责任心的运维狗
self.string.close()
self.curl.close()
if __name__ == "__main__":
Usage = """
Usage: python web_monitor.py url [Http_code|Speed_download|Connect_time|Total_time|Dnslookup_time|Redirect_time|Redirect_count]
"""
try:
url = sys.argv[1]
request = sys.argv[2]
try:
s = WebStatus(url)
try:
print s.request_value()[request]
except KeyError:
print "Make sure 2nd argument is right!"
except pycurl.error:
print "Make sure the url is right or reachable!"
except IndexError:
print "Must be 2 arguments given!%s" % Usage
验证:www.baidu.com一直是我测(攻)试(击)的对象
这个相对来说比较灵活,可以找一台机器专门用来做监控,只需要在这台机器上配置以下内容就可以监控多个URL了。
zabbix界面中可以配置一个模版,将其挂在该机器上就行了。
[root@zabbix-12-195 scripts]# pwd
/etc/zabbix/scripts
[root@zabbix-12-195 scripts]# vim web_monitor.py
[root@zabbix-12-195 scripts]# chmod +x web_monitor.py
[root@zabbix-12-195 scripts]# cat /etc/zabbix_agentd.conf
UserParameter=web[*],/etc/zabbix/scripts/web_monitor.py $1 $2
[root@zabbix-12-195 scripts]# service zabbix-agentd restart
直接上图了,后续的添加就自由发挥了,好多返回值可以出图,可以做触发器告警等。不多叙述了。
webcrack(路由器密码破解工具)v4.0 中文版
1.13MB
Netlimiter (互联网流量监控工具) v4.1.10.0 破解版
7.2M
Simplewall(进程监控工具) v3.1 免费版
696.6K
Teleport Ultra(网站页面下载工具) v1.65 绿色中文版
1.15M
dvr4000监控软件(安防监控录像工具) 7.4 免费版
17.5M
海康播放器(监控录像专用的视频播放器)V7.4.2 官方版
24.9M
网路岗8(上网行为监控软件)破解版
45.22MB
考无忧2018职称计算机模块
62.3 MB
考无忧2018职称计算机模块-AutoCAD2004 v18.1
51.66 MB
长角牛网络监控机下载
2.8M
webAcappella Grid(网页布局设计软件) v1.6.12 破解版
69.6M
webCamera中文破解版 v2.2.0
54.7M
webPS (线图片编辑器) 1.1 最新版
523.1K
webTool下载
71.6M
webTorrent(bt资源下载工具) v0.20.0 免费版
58.36 MB
webcam Capture v1.7 官方版
1.66M
IETester(web浏览器调试工具)0.5.1汉化版
39MB
Lauyan TOweb(web网页制作软件) v9.06 免费版
107.3M
Nektra SpyStudio下载
39.0M
OpenwebMonitor下载
51.1M
2020-06-09
消费台式热点问题汇总及系统恢复宝典
Vista下如何通过计划任务设置自动宽带连接?
PC-cillin 2007如何设置升级代理服务器
人像识别不准
具有AMT功能的主板DIMM1插槽没有插入内存时开机风扇声音异常大
Realtek HD声卡驱动程序版本问题导致部分机型出现蓝屏问题
Win7系统如何进行系统还原
IdeaPad Y330系列改装XP后摄像头图像颠倒180度的案例分析
机器学习之数据探索——数据质量分析