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()

  

时间: 2024-10-06 04:12:37

url监控的相关文章

zabbix 批量web url监控

通过zabbix批量监控 web url,脚本借鉴其他博友的,测试完全ok.自定义的key需要一台服务器部署,这边是放在zabbix_server端. 监控脚本如下: # cat web_site_code_status.sh  #!/bin/bash  # function:monitor tcp connect status from zabbix    source /etc/bashrc >/dev/null 2>&1  source /etc/profile  >/de

druid+spring的url监控和spring监控开启

1,url监测: web.xml中配置以下代码: <!-- druid url monitor setting start --> <filter> <filter-name>DruidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> <init-param> <p

zabbix自动添加服务URL监控项

1.客户端添加url文件 [[email protected] root]# vim /home/zabbix/scripts/check_url meisooEurekaService~http://192.168.56.11:8761/chare/health 2.客户端格式化url文件脚本 #脚本文件 [[email protected] root]# vim /home/zabbix/scripts/upload_service_info.py #!/usr/bin/python imp

URL页面监控.

2015,应该是自动化的一年...从广州来到长沙新公司,,在新公司就一直在弄自动化这方面的东西...(代码自动化更新.回滚..LVS自动化管理, 离线日志分析, URL监控等等).. 由于太忙,一直都没时间整理代码开源分享出来,,趁着今天URL监控这最后一个项目,已进入第一版完成阶段,,那就准备把以前的项目整理出来开源,,好了..先看看现在第一版的URL监控的东西吧,,现在暂时只是第一版,,第二版还会加入更加详细的监控内容,,如果有好的想法,,大家可以一起交流下,,交流群330639584..

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

url自动发现脚本: [[email protected] 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/zab

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

2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com/small-wei/p/10911769.html 2.编写监控脚本 cd  /usr/lib/zabbix/externalscripts #本人存放脚本路径,存放路径可以自定义,这个定义文件在zabbix_server.conf中,及zabbix-server服务配置文件. vim  web_

开源监控系统中 Zabbix 和 Nagios 哪个更好?

监控平台的话,各有优劣,但基本都可以满足需求.等达到一定监控指标后,发现,最困难的是监控项目的管理. CMDB中小规模(服务器<=1k):Zabbix大规模(1k>=服务器<=10k):Nagios进行二次开发超大规模(服务器>=10k):开发适应自己平台的监控软件吧另推荐个牛逼的东西:http://prometheus.io 作者:好撑链接:https://www.zhihu.com/question/19973178/answer/131911060来源:知乎著作权归作者所有.

Zabbix监控系统

一.zabbix简介: zabbix是完全开源的工具,整合了cacti和nagios等特性 附:SNMP(udp 161  udp 162) 众多网络工具都支持此协议,比如常见路由交换,常见OS 其既可以做管理端也可以做被管理端 snmp协议大致有3个版本分别是v1 v2v3 无论是v1 和 v2 的安全性是比较差的,因为传输是明文的, V3的认证密码用MD5/SHA摘要算法加密 很多工具支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的.所以很多

在云计算时代,如何监控云服务的 SLA ?

当今已处于云计算时代,什么都云化了,从文件存储到视频转换,从服务器托管到后端接口,甚至于特定的应用逻辑,比如 IM 服务.好友关系服务等等,很多东西云厂商都帮我们做好了! 因而监控这个主题也貌似渐渐地谈得少了! 甚至于运维人员的需求也在逐渐变少了! 那我们就可以一劳永逸了吗? 不需要我们了解服务器和系统了? 不需要我们部署监控系统和服务了? 我们只需要写好代码发布就可以睡大觉了? No! 虽然云服务器厂商帮我们打理了一切的基础设施,但是 IaaS 厂商给我们的还只是一个个全裸的系统! 虽然 Pa