`

open-falcon之短信报警

 
阅读更多
工作中现在要用小米的open-falcon,准备都OK了,现在想通过短信来进行报警,但是找了官网,只提供了关于邮件的报警mail-provider,并没有短信SMS的。研究了一段时间。终于搞定了。

首先我的运行环境是CentOS6.5。前期搭建open-falcon的顺序是按照官方文档来的,不再提了。

短信发送重要的模块之一就是sender模块。
官网链接:http://book.open-falcon.org/zh/install_from_src/sender.html

sender模块的配置文件cfg.json

{
    "debug": true,
    "http": {
        "enabled": true,
        "listen": "0.0.0.0:6066"
    },
    "redis": {
        "addr": "127.0.0.1:6379", # 此处配置的redis地址要和后面的judge、alarm配置成相同的
        "maxIdle": 5
    },
    "queue": {
        "sms": "/sms", # 短信队列名称,维持默认即可,alarm中也会有一个相同的配置
        "mail": "/mail" # 邮件队列名称,维持默认即可,alarm中也会有一个相同的配置
    },
    "worker": {
        "sms": 10, # 调用短信接口的最大并发量
        "mail": 50 # 调用邮件接口的最大并发量
    },
    "api": {
        "sms": "http://192.168.1.101:8080/sms/sms/send", # 短信地址是自己的HTTP短信服务接口
        "mail": "http://11.11.11.11:9000/mail" # 邮件地址随你写
    }
}

何为短信接口?说白了,就是自己拿tomcat开一个http协议的接口服务呗。

我随便拿我的一个MVC工程搞了一份:



package com.sms.controller;  
  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.ResponseBody;  
  
import com.taobao.api.ApiException;  
import com.taobao.api.DefaultTaobaoClient;  
import com.taobao.api.TaobaoClient;  
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;  
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;  
  
/** 
 * Handles requests for the application home page. 
 */  
@Controller  
@RequestMapping("/sms")  
public class HomeController {  
  
    /** 
     * Simply selects the home view to render by returning its name. 
     */  
    @ResponseBody  
    @RequestMapping("/send")  
    public String sendStr(String content,String tos) {  
        StringBuffer sb = new StringBuffer();  
        sb.append(content.split("]")[2].replace("[", ""));  
        sb.append(content.split("]")[4].split(" ")[0].replace("[", ""));  
        sb.append(content.split("]")[5].split(" ")[2].split(":")[0]);  
        sb.append(":");  
        sb.append(content.split("]")[5].split(" ")[2].split(":")[1]);  
        String url = "阿里的短信接口api";  
        String appkey = "阿里的appkey请自行注册";  
        String secret = "阿里的secret请自行注册";  
        TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);  
        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();  
        req.setExtend("123456");  
        req.setSmsType("normal");  
        req.setSmsFreeSignName("测试签名");  
        req.setSmsParamString("{\"name\":\"XXXX\",\"message\":\""+sb.toString()+"\"}");  
        req.setRecNum(tos);  
        req.setSmsTemplateCode("阿里的SMS短信模块编号");  
        AlibabaAliqinFcSmsNumSendResponse rsp;  
        try {  
            rsp = client.execute(req);  
            System.out.println(rsp.getBody());  
            return rsp.getBody();  
        } catch (ApiException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return "";  
    }  
}  


我用的阿里的短信api写的。没什么好说的。具体流程就是Agent收集信息传给Transfer,Transfer一式两份,分别传给graph做图形后续处理,
,又传给Judge做告警判断,我们短信主要走的是Judge的告警这条线,Judge接下来将告警任务下发到redis队列中去,由Alarm模块从redis队列中取得,然后根据报警event来处理具体是发短信还是发邮件,发短信就是调用sender模块中cfg.json配置的sms的api了。
重点来了:但是你看sender模块中cfg.json的api的时候会发现,官网demo中写的api服务仅仅是一个URL但是没有写参数对吧?你可能会问,他的参数怎么传过来呢?其实自己在调用cfg.json的api的时候,把参数默认给带上了,上面我的java代码方法中的两个参数是必须要写的,他会在调用api的时候不知不觉就赋值了!
比如说:
content参数(警告内容):“[P0][PROBLEM][g-09][][ all(#1) mem.memfree.percent  64.28836<=100][O1 2016-11-27 09:31:00]”这个和web中Alarm模块的警告信息是一个!。

tos参数(短信发送的电话号码):这个其实是你在配Portal策略时,绑定的group用户组中用户的电话号码传过来的。


哈哈,知道了吧?其实你只要有个http接口,sender配置好了,Portal策略绑定的用户手机号码填写好,就OK了,不用管其他的!当然其他模块的配置文件也要配置好,每个模块都要看./control tail!OK,结束!
0
0
分享到:
评论

相关推荐

    open-falcon-v0.3.0.tar.gz

    1. **模块化设计**:Open-Falcon采用模块化设计,包括数据采集、传输、存储、报警等多个独立模块,使得系统具有高度的可扩展性和灵活性。 2. **实时性**:基于Go语言开发,Open-Falcon能够处理大规模并发,实现秒级...

    open-falcon安装V1.1.docx

    下载Open-Falcon的最新版本,解压至指定目录,如 `/opt/openfalcon`。 **三、组件安装 - 绘图组件** **3.1 配置Graph** Graph组件负责收集和存储监控数据,然后提供图表展示。配置主要包括设置数据库连接信息,如...

    open-falcon

    "open-falcon" 是一款开源的监控报警系统,专为云环境和大规模分布式系统设计,旨在提供实时性能监控、故障预警以及数据分析能力。它由一系列组件构成,包括 graph、judge、gateway、public、api、agent、nodata、...

    开源监控系统 open-falcon

    6. **Falcon-Alarm**:报警服务,当Judge判断出异常时,通过多种方式(如邮件、短信、微信)通知运维人员。 7. **Falcon-Gateway**:API网关,对外提供统一的HTTP接口,用于配置监控项、查询监控数据、管理报警规则...

    小米开源监控系统 open-falcon

    2. **falcon-alarm**:报警模块,负责处理监控数据中的异常情况,根据预设规则触发告警,并通过多种方式(如邮件、短信、电话等)将告警信息通知相关人员。falcon-alarm-2.0.2.tar.gz包含该组件的最新版本,确保及时...

    lh-falcon:基于Python开发的服务器监控平台。参考了Zabbix和小米的open-falcon架构设计思路,实现包括系统性能,端口和进程存活,应用服务等监控

    参考了小米的open-falcon架构设计思路,实现包括系统性能,端口和进程存活,应用服务等监控。根据不同的告警的条件和策略及时给用户短信或邮件发送报警信息;实现监控数据的存储和查询;对不同服务器所需监控的指标...

    falcon-plus.zip

    OpenFalcon是一款由小米公司开发并开源的企业级监控系统,其设计目标是提供高可用性和可扩展性,以满足大规模分布式系统的监控需求。这个压缩包文件"**falcon-plus.zip**"包含了OpenFalcon的源代码,特别是"**falcon...

    MixProvider:MixProvider是按照Open Falcon监控系统短信报警接口规范开发的提供者程序

    MixProvider是按照Open Falcon监控系统短信报警接口规范开发的提供程序。 主要功能: HTTP服务器接收请求 发送中断消息到企业微信接口 发送正确短信到容联云通讯接口 发送中断电话到容联云通讯接口 低优先级报警...

    falcon-monit-scripts-源码.rar

    4. **OpenFalcon API的使用**:源码中可能会有调用OpenFalcon API的例子,这有助于理解如何将收集到的数据上报到监控平台。 5. **自动化运维思想**:了解如何通过脚本实现自动化监控,这能帮助我们在实际工作中提高...

    Open Falcon企业级监控系统 v0.3-源码.zip

    Open Falcon是一款专为企业级环境设计的监控系统,其开源版本v0.3提供了全面的监控解决方案,涵盖了系统性能、服务状态、应用指标等多个层面。源码的发布使得开发者和技术团队可以深入理解其内部机制,根据自身需求...

    基于Python开发的服务器监控平台源码+项目说明.zip

    参考了小米的open-falcon架构设计思路,实现包括系统性能,端口和进程存活,应用服务等监控。 根据不同的告警的条件和策略及时给用户短信或邮件发送报警信息;实现监控数据的存储和查询;对不同服务器所需监控的指标...

Global site tag (gtag.js) - Google Analytics