自动发现实现url+响应时间监控
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的监控模板
自动发现实现url+响应时间监控的更多相关文章
- zabbix 自动发现端口并添加监控设置
自动发现端口并添加监控设置UserParameter=net.listen.discovery,sudo /etc/zabbix/scripts/discovery_listport.sh #!/bi ...
- zabbix的自动发现、自定义添加监控项目、配置邮件告警
1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...
- zabbix之 自动发现磁盘io util 监控
一.iostat Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个.iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之 ...
- 【zabbix】自动注册,实现自动发现agent并添加监控(agent不需要任何配置)
更新: 后来在实际使用中发现,与其使用zabbix自动注册,不如直接调用zabbix的api主动发起添加服务器的请求,这样就不需要在zabbixserver上配置host信息了.实现全自动.具体调用方 ...
- imm自动发现有问题,监控项不再支持
IPMI是计算机系统的远程"关闭"或"带外"管理的标准接口.它可以独立于操作系统直接从所谓的"带外"管理卡监视硬件状态.华为的服务器叫做BM ...
- zabbix磁盘的自动发现与磁盘指标监控
由于最近项目上需要对服务器监控进行规范化监控,再磁盘这块有几种方式 1.如果每台设备的磁盘是一样的 比如都有vda,vdb两块磁盘那么可以采用 1.1 每台客户端写脚本,服务端每台设备去加上监控项(- ...
- ZABBIX自动发现Redis端口并监控
由于一台服务器开启许多Redis实例,如果一台一台的监控太耗费时间,也非常容器出错.这种费力不讨好的事情我们是坚决杜绝的,幸好ZABBIX有自动发现功能,今天我们就来用该功能来监控我们的Redis实例 ...
- zabbix实现自动发现功能添加磁盘监控
zabbix实现对磁盘动态监控 - Lenwood 原文 http://www.cnblogs.com/baizhantang/p/3253246.html 主题 Linux命令 zabbix 前言 ...
- zabbix通过自动发现tomcat应用端口监控连接数
192.168.10.98上 netstat -anp | wc -l netstat -anp|grep 8094 | grep ESTABLISHED | wc -l netstat -anp|g ...
随机推荐
- MySQL学习笔记--启动停止服务
右键点击计算机->管理->服务 windows所有的服务都在,mysql等等.可以在这里启动停止服务也可以在命令行 net start/stop <服务名> InnoDB还 ...
- 关于bjam编译自己模块出错的问题
将这个目录下C:\Users\Regubed的user-config.jam改为下面内容 # MSVC configurationusing msvc : 9.0 ; # Python configu ...
- Python_summary
Q: python中出现IndentationError:unindent does not match any outer indentation levelA:复制代码的时候容易出现缩进错误,虽然 ...
- python--教你做个最简单的tcp通信。。
TCP协议:建立在IP协议之上的,TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由I ...
- RDD、DataFrame、Dataset三者三者之间转换
转化: RDD.DataFrame.Dataset三者有许多共性,有各自适用的场景常常需要在三者之间转换 DataFrame/Dataset转RDD: 这个转换很简单 val rdd1=testDF. ...
- ling join 报错The specified LINQ expression contains references to queries that are associated with different cont
The specified LINQ expression contains references to queries that are associated with different cont ...
- 如何修改Xampp服务器上的mysql密码(图解)
https://www.jb51.net/article/111289.htm https://www.cnblogs.com/Leequik/p/5323795.html 1.点击MySQL的adm ...
- Keras中使用LSTM层时设置的units参数是什么
https://www.zhihu.com/question/64470274 http://colah.github.io/posts/2015-08-Understanding-LSTMs/ ht ...
- jQuery工具--jQuery.isNumeric(value)和jQuery.trim(str)
jQuery.isNumeric(value) 概述 确定它的参数是否是一个数字. $.isNumeric() 方法检查它的参数是否代表一个数值.如果是这样,它返回 true.否则,它返回false. ...
- 互联网级监控系统必备-时序数据库之Influxdb技术
时间序列数据库,简称时序数据库,Time Series Database,一个全新的领域,最大的特点就是每个条数据都带有Time列. 时序数据库到底能用到什么业务场景,答案是:监控系统. Baidu一 ...