#!/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监控的更多相关文章

  1. zabbix自动发现功能实现批量web url监控

    需求: 现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警. 需求详细分析: 大量的url,且url经常变化,现在监控用的是zabbix,如果手 ...

  2. python url监控 并邮件报警

    import timeimport requestsimport smtplibfrom email.mime.text import MIMETextimport datetime def Send ...

  3. 利用curl 实现URL监控

    #curl 命令介绍 curl命令在运维中经常使用,但运维中常用的参数也并不多,因此也是列表如下 -I/--head  显示响应头信息 -m/--max-time <seconds>  访 ...

  4. zabbix web url监控

    一, web监控 这个监控为通过cookie的值来监控网站是否能正常使用 这里测试环境为bbs网站 二, 配置web监控 01, 创建web监控项 02,配置步骤1 查看数据是否成功 第一查看首页时候 ...

  5. 调用链监控 CAT 之 URL埋点实践

    URL监控埋点作用 一个http请求来了之后,会自动打点,能够记录每个url的访问情况,并将以此请求后续的调用链路串起来,可以在cat上查看logview 可以在cat Transaction及Eve ...

  6. zabbix系列(八)zabbix添加对web页面url的状态监控

    通过zabbi做web监控不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码,或者响应时间做报警 1.对需要监控的主机添加web监控   在configuration—hosts 中打开主机列 ...

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

    url自动发现脚本: [root@jenkins scripts]# cat  urlDiscovery.py #!/usr/bin/env python #coding:utf-8 import o ...

  8. zabbix自动发现 url 以及对http返回状态码监控实现 告警

    2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com ...

  9. zabbix添加对web页面url的状态监控

    zabbix3.0.4添加对web页面url的状态监控 1.应用集配置 在配置—>主机中打开主机列表,选择需要添加监控主机的web,创建应用集 2.web监测配置 选择web场景,再单击右上角的 ...

随机推荐

  1. 第二百一十二节,jQuery EasyUI,Combo(自定义下拉框)组件

    jQuery EasyUI,Combo(自定义下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Combo(自定义下拉框)组件的使用方 ...

  2. 图像处理之拼接---图像拼接opencv

    基于SURF特征的图像与视频拼接技术的研究和实现(一)      一直有计划研究实时图像拼接,但是直到最近拜读西电2013年张亚娟的<基于SURF特征的图像与视频拼接技术的研究和实现>,条 ...

  3. 《linux系统及其编程》实验课记录(二)

    实验 2:获取对使用命令的帮助 实验环境: 安装了 Red Hat Enterprise Linux 6.0 可运行系统,并且是成功验证系统.有另外一个无特权用户 student,密码 student ...

  4. call to unavailable function system not available on ios 解决方案

    编译时报错:call to unavailable function system not available on iOS 原因:iOS11已经将system删除 解决方案:system(comma ...

  5. $routeParams传递路由参数

    $routeParams传的值是一个对象数组. 案例: index.html <!DOCTYPE html> <html lang="zh-cn" data-ng ...

  6. NEU710(wanghang走迷宫)

    题目链接:传送门 题目大意:给你一个图,要从起点走到终点并且要吃够足够的金币才能出去,图上有金币(只能吃一次), 有传送门(用一次消耗1金币,必须有金币才能使用),问最少需要多少步才能出去.不能出去输 ...

  7. SQL-修改: 将日期修改为空NULL、修改为空的记录

    1.将日期修改为空NULL update 表 set 字段=null where 字段='' 如果设置为‘’,会默认1900-01-01 2.修改为空的记录 update [dbo].[pub_ite ...

  8. Oracle-Rman(物理备份)

    Rman(物理备份) Rman -recover manager Rman 备份的对象 数据文件 数据文件 (Data File) 控制文件 控制文件 (Control File) 参数文件 参数文件 ...

  9. ini_set('date.timezone','Asia/Shanghai');

    w 同样的代码,不一样的php ENV.

  10. DHTML 简介

    DHTML, 动态的 html, 不是一门语言, 是多项技术综合体的简称.其中包括了 html, CSS, DOM, javascript. HTML : 负责提供标签, 对数据进行封装,目的是便于对 ...