本篇主要阐述实现方案
关键词:open-falcon、javaxmail、apache-james

要实现完整的报警功能,我们需要5步:
  1. 创建规则
  2. 收集数据
  3. 将规则数据和收集到的数据进行比较
  4. 产生报警数据
  5. 推送报警数据
而在运管平台中,我们整合了小米开源监控系统open-falcon,对应上面分析的步骤,我们给出的方案是:
  1. k8s云管平台提供报警管理模块,可以管理报警规则
  2. 对open-falcon的agent模块进行了二次开发,整合了Cadvisor,使之不仅能获取主机数据,也能获取容器数据
  3. 使用open-falcon的judge模块进行报警事件的判断
  4. 对open-falcon的alarm模块进行了二次开发,使之能读取k8s云管平台数据库中规则相关的数据,结合judge产生的数据,生产完整的报警所需数据
  5. 对open-falcon的sender模块进行了二次开发,调用云管平台发送报警接口(目前只做了邮件报警),实现发送邮件的功能

简单画了个流程示意图如下:
这里写图片描述

从数据流转的角度我们可以看到:
1. 规则数据由平台负责,主要存储在mysql
2. 报警数据由open-falcon负责,主要存储在redis(持久化在rrd磁盘文件)
3. 最后将redis中完整的报警数据作为参数传给报警邮件发送接口,完成整个流程

下一篇,我我会具体写下open-falcon二次开发实现细节、java发送邮件关键代码实现,以及最后如何部署一个邮箱服务器(Apache-James)实现邮件的发送

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐