url监控
#!/usr/bin/env python
#coding:utf-8 import MySQLdb,requests
import time
from datetime import datetime global sendtime
global flag
global monitor_time number = 0
to_email = []
params = {}
timedic = {}
a=[]
b=[]
c=[] def sendmail(mail_list, message):
url = "http://api.sendcloud.net/apiv2/mail/send"
for number in range(len(mail_list)):
params['apiUser'] = ""
params['apiKey'] = ""
params['from'] = ""
params['fromName'] = "bill"
params['subject'] = "warning"
params['html'] = "your html is abnormal: " + message
params['to'] = mail_list[number]
r = requests.post(url, files={}, data=params)
print r.text #get请求
def get_status(url):
g = requests.get(url,allow_redirects = False)
return g.status_code,g.content #post请求
def post_status(url):
p = requests.post(url,allow_redirects = False)
return p.status_code , p.content if __name__ == '__main__': while True: conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='734815', db='url_monitor')
cur = conn.cursor()
# 查找所有的
reCount = cur.execute('select * from url_test;')
# 获取所有的url及相关参数
all_urls = cur.fetchall() for item in all_urls:
#设置初始值
if number == 0:
timedic[item[0]] = 0
flag = 0 #监控间隔
monitor_time = int(item[5]) #判断是post还是get请求
if item[1] == 'get':
current_status = get_status(item[0])
else:
current_status = post_status(item[0]) to_email = item[3].split(',')
#print to_email
a = []
b = []
c = [] #此时存在数据库与直接获取的页面都存在空白符,所以需要去掉,用函数去出现问题
#数据库
for n in range(len(item[4])):
if item[4][n] != '\r' :
a.append(item[4][n])
for n in range(len(a)):
if a[n] != '\n':
c.append(a[n])
#直接获取
for n in range(len(current_status[1])):
if current_status[1][n] != '\n':
b.append(current_status[1][n]) #请求之后的状态跟预设的状态不一致,或者请求的页面与预设的页面不一致
if current_status[0] != int(item[2]) or c != b: #异常发送
if timedic[item[0]] == 0:
# 标志着此时的状态是不正常的
flag = 1
sendtime = datetime.now()
timedic[item[0]] = 1
message = item[0] + '\t' + str(current_status[0]) + ' is mismatch with preset! ' + 'The preset is ' + str(item[2])+'or the reponse is error'
sendmail(to_email, message)
#print message currenttime = datetime.now()
if (currenttime-sendtime).seconds >= 3:
timedic[item[0]] = 0 #如果此时恢复正常
if current_status[0] == int(item[2]) and c == b: if flag == 1:
message = item[0] + '\tChange from abnomaly to normal!'
sendmail(to_email, message)
flag = 0
#print message
else:
print item[0]+'\t is normal!'
# 正常状态 number = 1
# 控制监控的间隔,有数据库的监控间隔决定
time.sleep(monitor_time)
cur.close()
conn.close()
url监控的更多相关文章
- zabbix自动发现功能实现批量web url监控
需求: 现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警. 需求详细分析: 大量的url,且url经常变化,现在监控用的是zabbix,如果手 ...
- python url监控 并邮件报警
import timeimport requestsimport smtplibfrom email.mime.text import MIMETextimport datetime def Send ...
- 利用curl 实现URL监控
#curl 命令介绍 curl命令在运维中经常使用,但运维中常用的参数也并不多,因此也是列表如下 -I/--head 显示响应头信息 -m/--max-time <seconds> 访 ...
- zabbix web url监控
一, web监控 这个监控为通过cookie的值来监控网站是否能正常使用 这里测试环境为bbs网站 二, 配置web监控 01, 创建web监控项 02,配置步骤1 查看数据是否成功 第一查看首页时候 ...
- 调用链监控 CAT 之 URL埋点实践
URL监控埋点作用 一个http请求来了之后,会自动打点,能够记录每个url的访问情况,并将以此请求后续的调用链路串起来,可以在cat上查看logview 可以在cat Transaction及Eve ...
- zabbix系列(八)zabbix添加对web页面url的状态监控
通过zabbi做web监控不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码,或者响应时间做报警 1.对需要监控的主机添加web监控 在configuration—hosts 中打开主机列 ...
- 自动发现实现url+响应时间监控
url自动发现脚本: [root@jenkins scripts]# cat urlDiscovery.py #!/usr/bin/env python #coding:utf-8 import o ...
- zabbix自动发现 url 以及对http返回状态码监控实现 告警
2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com ...
- zabbix添加对web页面url的状态监控
zabbix3.0.4添加对web页面url的状态监控 1.应用集配置 在配置—>主机中打开主机列表,选择需要添加监控主机的web,创建应用集 2.web监测配置 选择web场景,再单击右上角的 ...
随机推荐
- 使用command对象添加删除查询记录
private void button1_Click(object sender, EventArgs e) { //实例化数据库连接对象 SqlConnection sqlcon = new Sql ...
- poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙
/** 题目:poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙 链接:http://poj.org/problem?id=3680 题意:给定n个区间,每个区间(ai,bi ...
- PHP上传类 图片上传 upload class实现image crop resize 缩略图
manage uploaded files, and manipulate images in many ways through an HTML form, a Flash uploader, XM ...
- php linux 创建文件夹权限问题
$path = "DataMsg/"; if(is_dir($path)==false){ @mkdir($path,0777); } windows 上创建没问题.但在linux ...
- 2018 ACM-ICPC 北京赛区小结 @ Reconquista
Statistics TYPE: Onsite Contest NAME: 2018 - ICPC Regional - Asia EC - Beijing PLAT: Hihocoder TIME: ...
- hdu 4706:Children's Day(模拟题,模拟输出大写字母 N)
Children's Day Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 用MathType编辑上下尖括号有什么技巧
在MathType中,同一个数学符号可以进行各种变换方向的使用,就比如箭头符号,任意方向都可以使用,这也是很常见的.数学中的符号能够根据各种特殊需要进行灵活使用,除了箭头符号之外,其它符号也可以,比如 ...
- css横向 弹性盒子布局的一些属性
<head> <meta charset="utf-8"> <meta name="viewport" content=" ...
- DIV高度设置全屏
<div class="full"></div> .full{ height:100%; position:fixed; } 使用position的fixe ...
- 在ubuntu机器上部署php测试环境
在ubuntu机器上部署php测试环境 一.部署环境 Ubuntu11.10_X86_32,编译安装相应的软件:nginx+mysql+php. 二.软件安装 2.1 软件下载 libiconv-1. ...