Aquila 脚本方式对接短信告警的demo

  其他常见问题
内容纲要

概要描述

Aquila 支持通过webhook 或者 脚本的方式,将告警对接到短信平台。

以下为某银行脚本方式对接短信告警的参考demo。

详细说明


版本要求

Aquila >=9.3.4

登录 Aquila,打开通知策略

这里使用的是脚本告警示例V2(支持sendsms.sh对接短信平台和告警收敛)

其中 脚本路径(节点:kv3) 需要放入短信发送脚本send_msg.py,以及告警推送的执行脚本 sendsms.sh

将脚本放到 Aquila Insights Server 节点的 /var/lib/transwarp-manager/master/scripts目录中。

file

send_msg.py 脚本参考如下:

import requests
import hashlib
import json
from datetime import datetime
import urllib.parse
import argparse

def SendMsg(mobile, msg):
    """
    发送短信。
    :param mobile: 接收短信的手机号
    :param msg: 发送的短信内容
    :return: 请求结果
    """
    # 测试环境
    # url = "http://111.11.111.111:8082/sms/v2/std/send_single"

    # 生产环境
    url = "http://111.11.111.111:8082/sms/v2/std/send_single"

    # 用户名
    userid = "XXXXX"
    # 密码
    pwd = "XXXXXX"
    # 获取时间戳
    now = datetime.now()
    timestamp = f"{now.month:02}{now.day:02}{now.hour:02}{now.minute:02}{now.second:02}"
    print(timestamp)

    # 字符串
    token_str = userid + "00000000" + pwd + timestamp

    # MD5加密
    md5 = hashlib.md5()
    md5.update(token_str.encode('utf-8'))
    md5_str = md5.hexdigest()
    print(md5_str)
    print(len(md5_str))

    # 发送内容编码
    msg = msg.encode('UTF-8')
    content = urllib.parse.urlencode({"par": msg}).split("=")[1]
    print(content)

    # return
    data = {
        "userid": userid,
        "pwd": md5_str,
        "mobile": mobile,
        "content": content,
        "timestamp": timestamp
    }

    js_data = json.dumps(data)
    print(data)
    headers = {"Content-Type": "application/json"}

    resp = requests.post(url, headers=headers, data=js_data).json()
    print(resp)

#mobile = "186……"
#msg = "【公务卡月报统计】: 流程运行成功.请到后管系统中查看!"
#SendMsg(mobile, msg)
if __name__ == "__main__":
    # 配置命令行参数解析
    parser = argparse.ArgumentParser(description="发送短信脚本")
    parser.add_argument("--mobile", required=True, help="接收短信的手机号")
    parser.add_argument("--msg", required=True, help="短信内容")
    args = parser.parse_args()
    args.msg += " \n\n 拒收请回复R"  # 自动拼接

    # 调用发送函数
    SendMsg(args.mobile, args.msg)

注意
其中

url = "http://111.11.111.111:8082/sms/v2/std/send_single"
# 用户名
userid = "XXXXX"
# 密码
pwd = "XXXXXX"

为短信平台的接口和用户名密码。

sendsms.sh 脚本参考如下

#!/bin/bash
#TIMESTAMP=date "+%F %T"
#echo $TIMESTAMP $1 $2  >> /var/lib/transwarp-manager/master/scripts/alter.log

python3 /var/lib/transwarp-manager/master/scripts/send_msg.py --mobile 186…… --msg "$1"

注意
其中
1、–mobile 参数为告警短信的发送对象手机号码;
2、–msg "$1" 参数为告警内容,通过 $1 传递获取。
3、注释的部分为告警内容写入alter.log文件,可以用于检查告警信息以及排除问题。
4、sendsms.sh 脚本需要增加执行权限: chmod +x /var/lib/transwarp-manager/master/scripts/sendsms.sh

打开通知策略 ,推送告警验证

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。