分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

自动发现实现url+响应时间监控

发布时间:2023-09-06 02:06责任编辑:蔡小小关键词:url响应时间

url自动发现脚本:

[root@jenkins scripts]# cat  urlDiscovery.py

#!/usr/bin/env python#coding:utf-8import osimport sysimport json#这个函数主要是构造出一个特定格式的字典,用于zabbixdef web_site_discovery(): ???web_list=[] ???web_dict={"data":None} ???with open("/etc/zabbix/server_list","r") as f: ???????for url in f: ???????????dict={} ???????????dict["{#SERVICENAME}"]=url.strip().split()[0] ???????????dict["{#SITENAME}"]=url.strip().split()[1] ???????????web_list.append(dict) ???web_dict["data"]=web_list ???jsonStr = json.dumps(web_dict, sort_keys=True, indent=4) ???return jsonStrif __name__ == "__main__": ???print web_site_discovery() 

url响应时间监控脚本:

[root@jenkins scripts]# cat urlResponse.py

#!/usr/bin/env python# -*- coding:utf-8 -*-import os,sysimport pycurlfrom subprocess import Popen,PIPEclass Http_Test: ???def __init__(self): ???????self.contents = ‘‘ ???def body_callback(self,buf): ???????self.contents = self.contents + bufdef getUrlInfo(url): ???c = pycurl.Curl() ???t = Http_Test() ???c.setopt(pycurl.URL,url) ?#指定请求的url ???c.setopt(pycurl.MAXREDIRS,5) ?#设置最大重定向次数 ???c.setopt(pycurl.CONNECTTIMEOUT,10) ?#定义请求的等待连接时间 ???c.setopt(pycurl.TIMEOUT,300) ?#定义请求的超时时间 ???c.setopt(pycurl.USERAGENT,‘Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)‘) #配置请求HTTP头的User-Agent ???c.setopt(pycurl.ENCODING, ‘gzip‘)#采用gzip传输 ???c.setopt(pycurl.DNS_CACHE_TIMEOUT,600) #设置保存DNS的时间 ???c.setopt(pycurl.WRITEFUNCTION,t.body_callback) ???try: ???????c.perform() ????????????????????#提交请求,返回生成内容 ???????code = c.getinfo(pycurl.HTTP_CODE) #获取 HTTP 状态码 ???????conn_time = round((c.getinfo(pycurl.CONNECT_TIME)*1000),2) #获取连接建立的时间 ???????pre_tran = round((c.getinfo(pycurl.PRETRANSFER_TIME)*1000),2) #准备传输时间 ???????start_tran = round((c.getinfo(pycurl.STARTTRANSFER_TIME)*1000),2) #开始传输时间 ???????total_time = round((c.getinfo(pycurl.TOTAL_TIME)*1000),2) #获取传输的总时间 ???????size = c.getinfo(pycurl.SIZE_DOWNLOAD) #获取下载数据包大小 ???????namelookup = round((c.getinfo(pycurl.NAMELOOKUP_TIME)*1000),2) #获取DNS解析时间 ???????headerSize = c.getinfo(c.HEADER_SIZE) #HTTP头大小 ???????downloadSpeed = c.getinfo(c.SPEED_DOWNLOAD) #获取下载速度 ???except Exception as e: ???????#print(‘connection error:‘+str(e)) ???????c.close() ???????code = 0 ???????conn_time = 0 ???????pre_tran = 0 ???????start_tran = 0 ???????total_time = 0 ???????size = 0 ???????namelookup = 0 ???????headerSize = 0 ???????downloadSpeed = 0 ???‘‘‘info=""" ????????响应状态码:%s ????????Dns解析时间:%.3f ms ????????连接建立时间:%.3f ms ????????准备传输时间:%.3f ms ????????传输开始时间:%.3f ms ????????总共传输时间:%.3f ms ????????数据包大小:%s bytes ????????http头大小:%s bytes ????????平均下载速度:%s bytes/s ????????"""%(code, namelookup, conn_time, pre_tran, start_tran, total_time, size, headerSize, downloadSpeed) ???‘‘‘ ???info={"httpCode":code,"connTime":conn_time,"preTran":pre_tran,"startTran":start_tran, ????????"totalTime":total_time,"size":size,"namelookup":namelookup,"headerSize":headerSize,"downloadSpeed":downloadSpeed} ???return infodef getUrlList(urlfile): ???urlList=[] ???with open(urlfile,‘r‘) as fd: ???????for i in fd: ???????????urlList.append(i.split()) ???return urlListdef sendData(zabbixConf,tmpfile): ???args="/usr/bin/zabbix_sender -c {0} -i {1} -vv" ???process=Popen(args.format(zabbixConf,tmpfile),shell=True,stdout=PIPE,stderr=PIPE) ???stdout,stderr=process.communicate() ???#os.unlink(tmpfile)if __name__==‘__main__‘: ???urlList=getUrlList("/etc/zabbix/server_list") ???tmpfile="/tmp/tmpfile" ???zabbixConf="/etc/zabbix/zabbix_agentd.conf" ???f=open(tmpfile,‘w‘) ???for i,j in urlList: ???????urlinfo=getUrlInfo(j) ???????for k,v in urlinfo.items(): ???????????key=‘url.info[{0},{1},{2}]‘.format(i,j,k) ???????????f.write("- %s %s\n" % (key, v)) ???f.close() ???sendData(zabbixConf,tmpfile)

url监控列表:

[root@jenkins scripts]# cat /etc/zabbix/server_list
api https://www.xxxxx.de/rest/v1/tags
AWScdn https://d3m2x14ac3st9e.cloudfront.net

url访问会出现不稳定的情况,需要调整/etc/zabbix/zabbix_agentd.conf 的超时时间

Timeout=30

添加url监控配置文件

[root@jenkins zabbix_agentd.conf.d]# cat userparameter_url.conf
UserParameter=web_site_discovery,/usr/bin/python ?/etc/zabbix/scripts/urlDiscovery.py
UserParameter=url.info,/usr/bin/python /etc/zabbix/scripts/urlResponse.py >/dev/null 2>&1 && echo 0 || echo 1

zabbix的监控模板

zbx_url_templates.xml

自动发现实现url+响应时间监控

原文地址:https://www.cnblogs.com/imcati/p/9379213.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved