xiaoyu28 发表于 2015-12-15 10:20:35

python 监控 api 脚本

这个脚本的作用是: 访问 url,返回码大于500就发送报警邮件

主要用了 requests 模块, 所以跑监控脚本的 机器要先安装 requests
pip install requests




[*]#!/usr/bin/env python

[*]# -*- coding: utf-8 -*-
[*]
[*]import smtplib
from email.mime.text import MIMEText
import sys
[*]import requests
[*]
[*]
[*]urls=[]
[*]urls.append('http://www.abc.cn/v1/users.json')
[*]urls.append('http://www.abc.cn')
[*]
[*]
[*]# 报警邮件参数设置, 前三行是用来发件的邮箱的配置
[*]mail_host = 'smtp.exmail.qq.com'
[*]mail_user = 'xj@abc.cn' #qq邮箱这个地方必须写全!
[*]mail_pass = "123456"
[*]mail_postfix = 'suibianxie.com'
[*]admin_email = 'admin@youremail.com'
[*]
[*]
[*]
[*]
[*]# 邮件发送函数
[*]def send_mail(to_list,subject,content):
[*]    me = mail_user+""
[*]    msg = MIMEText(content)
[*]    msg['Subject'] = subject
[*]    msg['From'] = me
[*]    msg['to'] = to_list
[*]
[*]
[*]    try:
[*]      s = smtplib.SMTP()
[*]      s.connect(mail_host)
[*]      s.login(mail_user,mail_pass)
[*]      s.sendmail(me,to_list,msg.as_string())
[*]      s.close()
[*]      return True
[*]    except Exception,e:
[*]      print str(e)
[*]      return False
[*]
[*]
[*]# 主体部分
[*]for url in urls:
[*]    try:
[*]      r = requests.get(url,timeout=3)
[*]      if r.status_code >= 500:
[*]            msg = 'Error: ' + str(r.status_code) + ' ' + url
[*]            print "send email"
[*]            send_mail( admin_email,"api error",msg)
[*]            print "done"
[*]    except requests.exceptions.ConnectionError as e:
[*]      print "These aren't the domains we're looking for."
[*]    except requests.exceptions.ConnectTimeout as e:
[*]      print "Too slow Mojo!"
[*]    except requests.exceptions.HTTPError as e:
[*]      print "And you get an HTTPError:", e.message
之后放 crontab 里面运行就行
页: [1]
查看完整版本: python 监控 api 脚本