网络上有很多open-falcon短信报警的教程,但是很多都是通过open-falcon官网推荐的LinkedSee灵犀来配置的,灵犀包含短信服务、邮件服务和电话服务。但是因为目前公司已经有了下发短信的平台,就不用再开灵犀的账号了。
open-falcon短信报警的逻辑如下:
配置短信接口地址–>配置告警策略–>绑定主机–>触发报警–>调用短信接口–>发送接收人电话号码+短信内容给短信发送平台–>短信发送平台下发短信
所以目前主要需要做的就是写一个调用短信的接口接收报警信息并上传到短信发送平台。然后再配置文件里配置这个接口即可。
1、编写短信接口脚本
接口是用python写的,使用的是Flask框架,Flask默认监听5000端口。脚本内容如下:
from flask import Flask, request
import json
import urllib
import urllib.request
app = Flask(__name__)
# 只接受post方法访问
@app.route("/sms/send", methods=["GET","POST"])
def check():
# 默认返回内容
if request.method == 'POST':
return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': False}
# 判断入参是否为空
if request.args is None:
return_dict['return_code'] = '5004'
return_dict['return_info'] = '请求参数为空'
return json.dumps(return_dict, ensure_ascii=False)
# 获取传入的params参数
mobile = request.form['tos']#获取收件人手机号
content = request.form['content']#获取短信内容
mobile = mobile.split(',')
for i in mobile:
# 对参数进行操作
send(i,content)#循环给每一个手机号发送短信内容
return(content)
def send(mobile,content):
account = 'aaa' #短信下发平台账号
password = 'aaa'#短信下发平台密码
text = '监控报警:' + content + '。'
data = {'account': account, 'password' : password, 'content': text, 'mobile':mobile,'format':'json' }
req = urllib.request.urlopen(
url = 'http://106.ihuyi.com/webservice/sms.php?method=Submit',#平台发送短信请求地址
data = urllib.parse.urlencode(data).encode('utf-8')
)
content = req.read()
print(content)
if __name__ == "__main__":
app.run(debug=True)
2、脚本生成可执行文件:
Pyinstaller -F open-falcon-sms.py
生成的可执行文件在脚本同级目录下的dist目录下。
后台运行可执行文件
nohup ./open-falcon-sms >/dev/null 2>log &
3、配置短信接口地址:
open-falcon 的报警模块为alarm模块,配置短信和邮件、微信报警的配置文件为alarm/config/cfg.json,内容如下:
在红框中填写短信接口,如我配置的接口就是Flask框架的端口+配置的url:sms/send。
配置完成之后重启alarm模块即可。
重启方式为进入open-falcon路径下,使用如下命令启动:
./open-falcon restart alarm
4、配置告警策略
因为有几台windows服务器有时候会异常重启,为了及时响应,我以此为例配置一个短信告警策略。策略截图如下:
- Max:最大报警次数,如果告警了之后没有及时处理,会进行下一次告警,做多告警Max此。告警间隔为5分钟
- P:告警等级,如果告警等级小于3,表示短信、邮件都告警;如果告警等级大于等于3,表是只进行邮件告警。
- note:告警时发送的备注内容
- 第二行的一整行内容为策略内容:这一行意思是如果有一次启动时间小于10min即会告警(#后的数值表示连续发生的次数,如果为#2,表示连续两次发生这个事情才会告警)
在此处配置接收告警的组,该组中配置了组员信息。
5、将策略绑定到主机上
进入HostGroup模块中,添加新的HostGroup,hosts中添加endpoint,templates中选择策略绑定即可。
现在可以重启某一个服务器,过一会即可收到短信告警。