粉嫩小白的 OpenFalcon 的学习笔记
OpenFalcon
强大灵活的数据采集:自动发现,支持falcon-agent、snmp、支持用户主动push、用户
自定义插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value
tags)
水平扩展能力:支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询
高效率的告警策略管理:高效的portal、支持策略模板、模板继承和覆盖、多种告警方
式、支持callback调用
人性化的告警设置:最大告警次数、告警级别、告警恢复通知、告警暂停、不同时段不
同阈值、支持维护周期
高效率的graph组件:单机支撑200万metric的上报、归档、存储(周期为1分钟)
高效的历史数据query组件:采用rrdtool的数据归档策略,秒级返回上百个metric一年的
历史数据
dashboard:多维度的数据展示,用户自定义Screen
高可用:整个系统无核心单点,易运维,易部署,可水平扩展
开发语言: 整个系统的后端,全部golang编写,portal和dashboard使用python编写。
0.1.0 版本 主要有绘图组件和告警组件两大模块
环境准备:
安装 rdis ,安装 mysql (并初始化,具体代码见文档),安装 make,安装 gcc。
0.1.0 详细安装步骤,见官方文档。
官方文档:https://book.open-falcon.org/zh/intro/index.html(可能会失效或者版本更新)
离线文档:https://share.weiyun.com/545291ae9358a0ed83ea48d5b436db69 (密码:JGI2)
绘图组件 :
Agent: 采集,解析数据,上报至 transfer
1、基本涵盖系统层面监控指标,转换数据为 metricValue 形式,上报至 transfer
2、支持插件采集,代码插件可受git管理,放置在plugin目录,从HBS中获取执行周期,版本等
3、支持数据直接上报,提供HTTPAPI,将收到的数据转换为metricValue形式,上报至transfer
4、支持HTTP API对自身控制
Transfer :数据转发服务。
1、接受 agent 上报的数据,使用一致性 hash 规则,处理后转发至 judge ,graph
2、检验数据合法性,清理非法数据。
3、准备内存 Queue 中转数据,保证 judge 和 graph 平稳接收数据。
4、当后端宕机时做少量缓存,提供重试机制,但是容队列爆满之后会造成内存溢出
Graph: 1、存储 Agent push 的数据
2、为 query 提供查询数据接口
Query: 提供统一的绘图数据查询入口。query组件接收查询请求,根据一致性哈希算法去相应的
graph: 实例查询不同 metric 的数据,然后汇总拿到的数据,最后统一返回给用户。
Dashboard: 为用户展示监控数据
告警组件:
sender: 调用各个公司提供的 mail-provider 和 sms-provider,按照某个并发度,从redis中读取邮件、短信 并发送,alarm 生成的报警短信和报警邮件都是直接写入redis即可,sender来发送。
Fe: web入口,导航入口
portal: 设置报警策略;
维护机器分组,配置策略表达式、策略模板,设置机器维护周期,配置插件关联的分组
HBS: 心跳服务,至于 portal 的 DB 相关。
1、处理 agent 心跳请求,并将 agent 信息(ip、hostname、agent_version、plugin_version)等信 息入库(portal库)
2、为 agent 提供执行的 run api 白名单、提供执行的 plugin 插件、提供需要监控的进程和端口
3、缓存监控策略,为 judge 提供告警阈值
judge: 报警判断模块,依赖于 HBS。从transfer中接收数据,从 HBS 中获取报警策略,进行阈值报警判断
1、从 HBS 获取报警策略
2、接收 transfer 上报的数据,并存储最新几个点
3、判断阈值,产生报警事件
4、判断报警事件是否写入 redis
5、老旧报警数据的清理
alarm: 1、处理 judge 产生的告警 event
2、区分告警优先级,优先处理级别比较高的告警
3、为用户提供回调接口
4、生成告警 msg
5、展示未恢复的告警