python 实现监测consul服务状态,发送邮件短信

# -*-coding:utf-8-*-
import redis
import urllib2
import json
import smtplib
import time
from qcloudsms_py import SmsMultiSender
from qcloudsms_py.httpclient import HTTPError
from email.mime.text import MIMEText
from email.header import Header

#consul 配置
Url='http://127.0.0.1:8500/v1/health/state/any'

#腾讯短信配置
appid = xxx
appkey = "xxx"
phone_numbers = ["xxx", "xxx"]
template_id = xxx

#mail配置
mail_user='xx'
mail_passwd='xx'
mail_host='xx'
mail_port=xx

#redis配置
redis_host='127.0.0.1'
redis_port=6379
redis_db=1
redis_sms_key='96ca8302-7b68-11e8-bc4a-1e00b000003e'
redis_email_key='7203896e-7b69-11e8-abd0-1e00b000003e'

#收件人列表
to_list=["xxx","xxx","xxx"]
#邮件主题
title="%s  Consul异常通知"%(time.strftime('%Y-%m-%d', time.localtime(time.time())))

#初始化短信
ssender = SmsMultiSender(appid, appkey)
#初始化redis
redis_connect = redis.Redis(host=redis_host, port=redis_port,db=redis_db)
#连接consul api
req = urllib2.Request(Url)
resp = urllib2.urlopen(req)

def send_mail(to_list,subject,content):
    me = mail_user
    msg = MIMEText(content,'html',_charset='utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib.SMTP_SSL(mail_host, mail_port)
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_passwd)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

data=[]
for server in json.loads(resp.read()):
    if server['Name'] != 'Serf Health Status'  and server['Status'] != 'passing':
        data.append({"Node":server['Node'],"Service":server['Name'].replace('Service \'','').replace('\' check',''),"Status":server['Status']})

html='''
<style type="text/css">
table.gridtable {
    font-family: verdana,arial,sans-serif;
    font-size:15px;
    color:#333333;
    border-width: 1px;
    border-color: #666666;
    border-collapse: collapse;
}
table.gridtable th {
    border-width: 1px;
    padding: 12px;
    border-style: solid;
    border-color: #666666;
    background-color: #dedede;
}
table.gridtable td {
    border-width: 1px;
    padding: 12px;
    border-style: solid;
    border-color: #666666;
    background-color: #ffffff;
}
</style>
<div>
<table class="gridtable">
<tr><th>主机</th>  <th>服务</th> <th>状态</th>
<tr>

'''

for i in data:
    html = html + u"""
        <tr>
        <td>%s</td>  <td>%s</td>  <td>%s</td>
    </tr>
        """%(i['Node'],i['Service'],i['Status'])

html+=u"""
</table>
</div>
"""

if len(data) >=1:

if redis_connect.get(redis_sms_key) is None:
        result = ssender.send_with_param(86, phone_numbers,template_id, [])
        redis_connect.set(redis_sms_key,"")
        redis_connect.expire(redis_sms_key,60*60*24)

if redis_connect.get(redis_email_key) is None:
        redis_connect.set(redis_email_key,"")
        redis_connect.expire(redis_email_key,60*60)
        for i in to_list:
            send_mail(i,title,html)

添加计划任务

*/1 * * * * /usr/bin/python /data/bin/consul.py

短信间隔24小时发一次,邮件间隔1小时发送一次,如需修改更改Key过期时间

原文地址:http://blog.51cto.com/11889458/2134225

时间: 2024-10-12 02:18:22

python 实现监测consul服务状态,发送邮件短信的相关文章

redis 基本操作-python 使用redis-手机验证接口-发送短信接口

目录 复习 今日内容 redis python使用redis 手机验证接口 发送短信接口 复习 """ 1.git项目开发 提供公钥成为开发者.copy项目.开发项目 先commit.再pull(可能出现冲突).最后push 特殊功能可以新建dev的子分支进行开发:git checkout -b 子分支, 切换回dev分支合并子分支内容:git merge 子分支 2.短信 注册并申请通信短信服务应用 安装指定模块,根据申请的应用配置得到发送短信的对象,对象调用方法完成短信的

4、下行短信发送WebService、下行短信发送服务 -功能详细设计 --短信平台

3.  下行短信发送WebService 开发一个WebService,供第三方系统调用,用于发送短信.WebService接收数据后,将信息存储入数据库的短信发送数据表中. WebService参数包括:应用标识.手机号码(字符串数组类型).短信内容.扩展码(3-8位数字).优先级(数字1至5).定时发送时间(可null为即时发送).发送人ID(内部机构人员管理系统的ID).发送人全路径. 同时开发另一个WebService,与原有旧系统接口完全相同,用于调用旧短信平台的第三方系统无缝切换到新

Web服务之简单短信接口开发

--order by yang 最近没事看了一下关于WCF的技术,也学了一点点,菜鸟级别.无奈无处用WCF,无意间看到短信验证码,就想使用WCF创建一个短信接口!说起短信接口,搞开发的都一定不会陌生,但一般中大型的互联网网站使用的短信接口我想都是移动或者联通电信已经做好的短信接口,无奈环境制约,想要调用他们的接口肯定有一套很复杂的申请流程,而且也不是所有人都能申请到的.作为个人学习更是不可能.无奈只能另辟办法,想到自己有一部安卓手机,于是打起它的主意.接下来就理所应当的想到了adb工具.那么AD

【Python web 开发】云片网发送短信验证码

发送短信验证码 是要使用第三方服务的,运营商是不可能提供对外的个人发送短信服务功能,我们本身也没有能力去发送验证码,云片网是目前提供这种服务使用率较高的服务商之一 我们先来看下云片网国内单条发送短信的api 根据api 写了一个脚本,这个appkey 我还没申请 如何使用云片网发送短信? 1.首选要申请签名 + 填写 短信模板 2.签名审核,短信模板审核 3.一定要将自己的服务器的ip地址填写到  [云片网--设置--ip 白名单--添加服务器的IP地址] 不然会发送失败 本机测试查到本机的IP

Python使用redis-手机验证接口-发送短信验证

python使用redis 安装依赖 >: pip3 install redis 直接使用 import redis r = redis.Redis(host='127.0.0.1', port=6379) 连接池的使用 import redis pool = redis.ConnectionPool(host='127.0.0.1', port=6379) r = redis.Redis(connection_pool=pool) 支持高并发 缓存使用:要额外的安装django_redis模块

c#简单易用的短信发送服务 悠逸企业短信服务

 悠逸企业短信发送服务,是一种比较简单易操作的短信发送服务,使用POST的方式,请求相应地址就可以实现短信发送功能 1 /// <summary> 2 /// 短信发送服务 3 /// </summary> 4 public class ShortMsgHelper 5 { 6 /// <summary> 7 /// 短信服务 账号 8 /// </summary> 9 private static string uid = ConfigurationMan

智能短信服务授权 信析宝智能短信是否收费

智能短信是移动互联网新的智能化服务分发及场景化流量入口 智能短信是在移动终端设备上搭载信析宝应用程序和能力,将传统文本短信解析重构成卡片式短信,可实现双向交互,提供生活场景服务的新一代短信产品. 它包含短信公众号.卡片短信.短信浮窗.短信通知栏.短信浮窗.短信卡夹.短信分类.智能穿戴方案等产品形态. 珠海市小源科技有限公司 智能短信概念提出者与先行者 珠海市小源科技有限公司(以下简称小源科技)成立于2011年,是一家专注于移动互联网领域产品研发和运营的创业公司.公司总部位于珠海,分别在北京和深圳

3、应用注册模块、监控模块 -功能详细设计 --短信平台

三.功能详细设计 系统包括下行短信发送WebService.下行短信发送服务.提交报告获取服务.状态报告获取服务.上行短信获取服务.上行短信获取守护服务.上行短信处理服务.状态监控服务.以及应用注册模块. 1.  应用注册模块 由于本系统为公共性短信发送平台,需要对接并服务于若干第三方系统,需要对所有发送和接收的短信统一管理并分别处理. 应用注册模块的具体功能有: A)应用注册:只有注册过的应用才能够发送短信. B)扩展码分配:云MAS系统的号码为12位,并预留8位共我们扩展使用,此8位扩展码,

发送短信——java

闲来无事研究一下调用第三方接口发送短信的技术 这一次我们使用阿里的短信服务 一.进行平台相关服务的注册和设置 下面请参照阿里的短信服务文档进行设置,只要按照文档步骤来差不多30分钟就能搞定服务注册: 阿里云短信服务文档使用指引 更新时间:2017-12-05 16:23:43 短信使用流程见下图: 入驻阿里云 1.阿里云注册入口:点击注册页面 2.实名认证:点击进行实名认证 实名认证相关帮助链接:①查看如何选择实名认证方式/实名认证介绍方式集锦,②个人客户如何完成实名认证,③企业如何完成实名认证