小米开源监控系统Open-Falcon安装使用笔记 (5)

监控系统产生报警事件之后需要发送报警邮件或者报警短信,各个公司可能有自己的邮件服务器,有自己的邮件发送方法;有自己的短信通道,有自己的短信发送方法。falcon为了适配各个公司,在接入方案上做了一个规范,需要各公司提供http的短信和邮件发送接口。

短信发送http接口:

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

falcon将这样调用该接口:

url=您公司提供的http短信接口
curl  $url-d"content=xxx&tos=18611112222,18611112223"

邮件发送http接口:

method: post
params:
 - content: 邮件内容
 - subject: 邮件标题
 - tos: 使用逗号分隔的多个邮件地址

falcon将这样调用该接口:

url=您公司提供的http邮件接口
curl -X POST $url-d"content=xxx&tos=ulric.qin@gmail.com,user@example.com&subject=xxx"

 

安装使用mail-provider

#这里使用小米提供的mail-provider,我是通过网友编译好的二级制包安装的,也可自行编译。

#githu地址: https://github.com/open-falcon/mail-provider

tar xf mail-provider-master.tar.gz 

 rm -rf mail-provider-master.tar.gz 

mv mail-provider-master mail-provider

cd mail-provider/

 

#修改配置文件cfg.conf

 

{

    "debug": true,

    "http": {

        "listen": "0.0.0.0:4000",

        "token": ""

    },

    "smtp": {

        "addr": "smtp.exmail.qq.com:25",

        "username": "xxxx@abc.com",

        "password": "12345",

        "from": "xxxx@abc.com"

    }

}

 

#启动

./control start

 

#测试邮件接口是否正常,收到邮件证明API 正常。

curl :4000/sender/mail -d "tos=29235373@qq.com&subject=xxxx&content=yyyy"

  建立sms-provider

#这里我自己写了个基于python的http server 作为短信接口http api

vi http_sms.py

#coding=utf-8 ‘‘‘ Created on 2016-10-17 @author: chenguomin  qq:29235373 @explain: 实现GET方法和POST方法请求 ‘‘‘ from  BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler import urllib import urllib2 def send_message(tos,txt): ‘‘‘ 此函数主要用于调用我公司内部的短信API(get方式),大伙可自行修改。 比如:需要加用户名密码,MD5,token的自行查看短信平台提供商手册,如何调用短信API。 下面提供一个url供大家参考。 ‘‘‘     #url  =  "http://www.sms.com:4000/sendsms?uid=16888&pwd=123456&mobile=%s&msg=%s" % (tos, txt)              url = "http://192.168.20.88:8080/SendSms/sendsms?mobile=%s&content=%s" % (tos, txt)     req = urllib2.Request(url)     res_data = urllib2.urlopen(req)     res = res_data.read()     print res class ServerHTTP(BaseHTTPRequestHandler):     def do_GET(self):         path = self.path         print path         #拆分url(也可根据拆分的url获取Get提交才数据),可以将不同的path和参数加载不同的html页面,或调用不同的方法返回不同的数据,来实现简单的网站或接口         query = urllib.splitquery(path)         print query         self.send_response(200)         self.send_header("Content-type","text/html")         self.send_header("test","This is test!")         self.end_headers()         buf = ‘‘‘‘‘<!DOCTYPE HTML>                 <html>                 <head><title>Get page</title></head>                 <body>                 <form action="post_page" method="post">                   mobile: <input type="text" name="tos" /><br />                   content: <input type="text" name="content" /><br />                   <input type="submit" value="POST" />                 </form>                 </body>                 </html>‘‘‘         self.wfile.write(buf)     def do_POST(self):         path = self.path         print path         #获取post提交的数据         datas = self.rfile.read(int(self.headers[‘content-length‘]))         datas = urllib.unquote(datas).decode("utf-8", ‘ignore‘)         mobile = datas.split(‘&‘)[0].replace("tos=","").replace(‘"‘,‘‘)         content = datas.split(‘&‘)[1].replace("content=","").replace(‘"‘,‘‘)         mm = mobile.split(‘,‘)         for i in mm:                 print i                 send_message(i,content)                 self.send_response(200)                 self.end_headers()                 buf = ‘‘‘‘‘<!DOCTYPE HTML>                 <html>                 <head><title>Post page</title></head>                 <body>Tos:%s  <br />Content:%s</body>                 </html>‘‘‘% (mobile, content)                 self.wfile.write(buf) def start_server(port):     http_server = HTTPServer((‘‘, int(port)), ServerHTTP)     http_server.serve_forever() if __name__ == "__main__":     #端口可自定义,不冲突就可以,这里设置为:4040     start_server(4040)

#运行python http server

nohup python http_sms.py &

#在浏览器访问,提供了简单的页面测试,只有get,post方法。

:4040/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwyfgx.html