阿里云语音服务配合alertmanager实现电话告警

整体思想

使用python封装一下阿里云的语音服务,暴露一个restapi地址,配置到alertmanager的receiver url上,脚本接收到alertmanager发过来的消息之后,获取告警的信息,再将告警信息转化成语音服务API的入参

脚本

# -*- coding: utf-8 -*-

import urllib, urllib2, sys
import logging
import json
from logging.handlers import TimedRotatingFileHandler
from flask import Flask
from flask import request

app = Flask(__name__)
app.config["JSON_AS_ASCII"] = False

logger = logging.getLogger('voicealert')
logger.setLevel(logging.DEBUG)
fileHandler = TimedRotatingFileHandler("alert.log", when='D', encoding="utf-8")
fileHandler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)



def call_voice_notify(phone_number,variables):
    host = 'http://yzxyytz.market.alicloudapi.com'
    path = '/yzx/voiceNotifySms'
    method = 'POST'
    appcode = '3b74f48651134c5cabc32a491d36c6cd'
    querys = 'phone='+phone_number+'&templateId=TP18040817'

    url = host + path + '?' + querys
    headers={'Authorization': 'APPCODE ' + appcode}
    bodys = urllib.urlencode({})
    
    voicerequest = urllib2.Request(url, data=bodys, headers=headers)
    response = urllib2.urlopen(voicerequest)
    content = response.read()
    if (content):
        logger.debug("voice alert api response:"+json.dumps(content, ensure_ascii=False))
        return content;

@app.route('/alert/voice',  methods=['POST'])
def voice_alert():
    alert_info = json.loads(request.data)
    logger.debug("message sent by alertmanager:"+json.dumps(alert_info, ensure_ascii=False))
    phonenums = ["17839707556"]
    alert_status = alert_info['status']
    if alert_status == "firing":
        for phonenum in phonenums:
            #result=call_voice_notify(phonenum,alert_info['groupLabels']['alertname'])
            result={"return_code":"10001"}
    elif alert_status == "resolved":
        result = {"return_code": "问题已修复","order_id": "NA"}
    return result

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=6666, debug=True)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值