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场景,再单击右上角的 ...
随机推荐
- PHP——做服务
xml的写法和特点 <?xml version='1.0' encoding='utf-8'?><Info><code>c001</code><n ...
- php中while($row = $results->fetch_row())调用出错
php中while($row = $results->fetch_row())调用出错 错误处在sql语句上
- android最佳实践的建议(翻译自android-best-practices)
Best practices in Android development Use Gradle and its recommended project structure 使用Gradle和其推荐的 ...
- git 工作模式
个人在学习Git工作流的过程中,从原有的 SVN 模式很难完全理解Git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解: 我们以使用SVN的工作流来使用Git有什么不妥? Gi ...
- 微信小程序3 - 对象的合并
ES6中 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). 限制: 只是浅拷贝, 即 内部对象 不会拷贝,只是 引用 ...
- 【BZOJ】3401: [Usaco2009 Mar]Look Up 仰望(单调栈)
http://www.lydsy.com/JudgeOnline/problem.php?id=3401 还能更裸一些吗.. 维护一个递减的单调栈 #include <cstdio> #i ...
- Log4j 汇总
一.概念 .1. log4j是 是线程安全的 日志框架,高度可配置,可通过在运行时的外部文件配置. 默认情况下,日志管理在CLASSPATH 查找一个名为 log4j.properties 的文件. ...
- 上传文件ie7
https://www.cnblogs.com/front-end-develop/p/6214818.html 第一步:html中引入jQuery-1.7.1.js和ajaxFileUpload.j ...
- Win10下Hyper-V设置网络连接
具体方法如下. 1.点击虚拟交换机管理 2.创建虚拟交换机 选择内部 3.选择链接类型
- 亲测Google开源JPEG图片压缩算法,可将JPEG文件缩小%35
具体方法如下(windows 平台) GitHub上下载guetzli源码,地址https://github.com/google/guetzli GitHub上下载 vcpkg源码,地址https: ...