url自动发现脚本:

[root@jenkins scripts]# cat  urlDiscovery.py

#!/usr/bin/env python
#coding:utf-8 import os
import sys
import json #这个函数主要是构造出一个特定格式的字典,用于zabbix
def 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 jsonStr if __name__ == "__main__":
print web_site_discovery() 

url响应时间监控脚本:

[root@jenkins scripts]# cat urlResponse.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os,sys
import pycurl
from subprocess import Popen,PIPE
class Http_Test:
def __init__(self):
self.contents = ''
def body_callback(self,buf):
self.contents = self.contents + buf
def 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 info
def getUrlList(urlfile):
urlList=[]
with open(urlfile,'r') as fd:
for i in fd:
urlList.append(i.split())
return urlList
def 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+响应时间监控的更多相关文章

  1. zabbix 自动发现端口并添加监控设置

    自动发现端口并添加监控设置UserParameter=net.listen.discovery,sudo /etc/zabbix/scripts/discovery_listport.sh #!/bi ...

  2. zabbix的自动发现、自定义添加监控项目、配置邮件告警

    1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...

  3. zabbix之 自动发现磁盘io util 监控

    一.iostat Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个.iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之 ...

  4. 【zabbix】自动注册,实现自动发现agent并添加监控(agent不需要任何配置)

    更新: 后来在实际使用中发现,与其使用zabbix自动注册,不如直接调用zabbix的api主动发起添加服务器的请求,这样就不需要在zabbixserver上配置host信息了.实现全自动.具体调用方 ...

  5. imm自动发现有问题,监控项不再支持

    IPMI是计算机系统的远程"关闭"或"带外"管理的标准接口.它可以独立于操作系统直接从所谓的"带外"管理卡监视硬件状态.华为的服务器叫做BM ...

  6. zabbix磁盘的自动发现与磁盘指标监控

    由于最近项目上需要对服务器监控进行规范化监控,再磁盘这块有几种方式 1.如果每台设备的磁盘是一样的 比如都有vda,vdb两块磁盘那么可以采用 1.1 每台客户端写脚本,服务端每台设备去加上监控项(- ...

  7. ZABBIX自动发现Redis端口并监控

    由于一台服务器开启许多Redis实例,如果一台一台的监控太耗费时间,也非常容器出错.这种费力不讨好的事情我们是坚决杜绝的,幸好ZABBIX有自动发现功能,今天我们就来用该功能来监控我们的Redis实例 ...

  8. zabbix实现自动发现功能添加磁盘监控

    zabbix实现对磁盘动态监控 - Lenwood 原文  http://www.cnblogs.com/baizhantang/p/3253246.html 主题 Linux命令 zabbix 前言 ...

  9. zabbix通过自动发现tomcat应用端口监控连接数

    192.168.10.98上 netstat -anp | wc -l netstat -anp|grep 8094 | grep ESTABLISHED | wc -l netstat -anp|g ...

随机推荐

  1. podofo 一点小分享

    PDF 的开源库,大多是Java,或C#的,但C++也有一个很不错的PDF开源库:PoDoFo 我司的PDF签章产品中,我就是用这个PoDoFo库来做的底层 但是国外开源库对中文支持都是或多或少有点问 ...

  2. js判断当前页面是否有父页面,页面部分跳转解决办法,子页面跳转父页面不跳转解决 (原)

    //如果当前页面存在父页面,则当前页面的父页面重新加载(即子页面父页面连带跳转) if(top.location!=self.location){         window.parent.loca ...

  3. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

  4. python number

    一.number类型转换 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real ...

  5. NHibernate初学者指南系列文章导航

    NHibernate初学者指南系列文章导航   前面的话 经过三个多周的时间,终于将这个系列完成了,谢谢大家的关注和支持,有很多不足之处还望大家包涵. 本系列参考的书籍为NHibernate 3 Be ...

  6. linux命令-查找所有文件中包含某个字符串

    查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...

  7. html5-文本属性

    /*p{color: red;width: 50%;text-align: center;background: blue;}p{text-align: end;}p{text-align: end; ...

  8. hdu4870 高斯消元

    题意 一个人打比赛 ,rating 有p的概率 为加50分 有1-p的概率为 x-100分 最大值为 1000 最小值为0 有两个号 每次拿较小的号来提交 , 计算最后到达 1000分得期望场数是多少 ...

  9. SiteCore Experience Analytics-体验分析

    体验分析   Sitecore Experience Analytics为营销人员和营销分析师提供仪表板和报告,以识别从其网站和可能的其他外部数据源收集的体验数据的模式和趋势. 体验分析报告示例:   ...

  10. for-each 循环原理

    for-each 循环原理1,for-each 是在java5 之后出现的.for是java 上的一个关键字,在jdk 找不到任何for的底层实现的.是因为for的底层实现被封装到了编译器中.所以通过 ...