Fork me on GitHub

Open-Falcon短信告警实现思路

Open-Falcon短信告警实现思路

概述

监控系统产生报警事件之后需要发送报警短信,基本上都是利用各类短信提供商,falcon为了适配各个公司,在接入方案上做了一个规范,需要各公司提供http的短信发送接口。
短信发送http接口:

1
2
3
4
method: post
params:
- content: 短信内容
- tos: 使用逗号分隔的多个手机号

整个逻辑流程如下:

1
2
3
4
5
报警信息----->封装http短信接口------------------->运营商短信接口----------------->发送短信给用户
method: post
params: 参数1:短信内容
- content: 短信内容 参数2:发送人列表
- tos: 使用逗号分隔的多个手机号 其他参数:app,key,短信模板等等

部署实践

以腾讯云的短信作为运营商做说明

腾讯云sms服务调试流程

  • 注册腾讯云账号,开通腾讯云SMS服务
  • 新建应用获取AppID及App Key完成后,创建签名及短信正文需要腾讯云审核通过才行
  • 根据个人情况下载对应SDK包,以Python为例进行讲解
  • 安装Python SDK包,使用指定模板群发短信demon进行测试,不指定模板容易出现1014各类模板错误问题,最终结果保证短信发送成功

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# pip install qcloudsms_py
# cat sendsms_id_m_version.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import sys
from qcloudsms_py import SmsMultiSender
from qcloudsms_py.httpclient import HTTPError

if len(sys.argv) != 3:
print "Usages: python %s sms_to_userlist, sms_message"
exit(1)

sms_to_userlist = sys.argv[1]
sms_message = sys.argv[2]
sms_to_userlist = sms_to_userlist.split(',')
sms_to_userlist = [ int(i) for i in sms_to_userlist ]

appid="xxx"
appkey="xxx"
sms_sign="xxx"
phone_numbers = sms_to_userlist
template_id = xxx
sms_type = 0

msender = SmsMultiSender(appid, appkey)
params = ["%s" % sms_message]

try:
result = msender.send_with_param(86, phone_numbers,
template_id, params, sign=sms_sign, extend="", ext="")
print ok
except HTTPError as e:
print(e)
except Exception as e:
print(e)

print(result)
# python sendsms_id_m_version.py # 测试发送结果
{u'ext': u'', u'result': 0, u'errmsg': u'OK', u'detail': [{u'fee': 3, u'mobile': u'13693645328', u'result': 0, u'sid': u'8:tNIvGUXyuK41wH8PFsV20180404', u'nationcode': u'86', u'errmsg': u'OK'}]}

其中脚本里面的变量可以配置yaml格式的配置文件,动态读取配置项,可以更灵活

封装http短信接口思路

将Open-Falcon post发送的content(短信内容)及tos(使用逗号分隔的多个手机号)提取到然后调用上一步的短信发送脚本即可

案例

python or go

参考资料

http://book.open-falcon.org/zh_0_2/distributed_install/mail-sms.html
https://cloud.tencent.com/document/product/382
https://github.com/qcloudsms/qcloudsms_py/

======================================================
希望各位朋友支持一下

本文作者:dongsheng
本文地址https://mds1455975151.github.io/archives/634a8ea0.html
版权声明:转载请注明出处!

坚持技术分享,您的支持将鼓励我继续创作!