写在前面

监控这个话题太大了,本文谨记录本人在参与我司监控系统重构开发过程中的一些思考。
包括技术上、产品形态上的一些内容。

监控系统的架构

本次重构脱胎于open-falcon,所以架构上复用了很多falcon的组件。

存储(graph)

  • 仍使用经典时序数据库RRDtool。

transfer/query

  • 分别在入方向和出方向使用相同的一致性hash算法做分片。

index

  • 接收存储推送的数据,生成索引,用于indexing,方便绘图链路和报警链路的counter补全。

judge

  • 根据用户配置的报警策略,通过pull的方式查询index/query(graph),获取数据,生成事件。

alarm

  • 通过判断judge过来的事件,决定其需要报警、收敛、屏蔽,还是callback。
  • 通过调用各通道api的方式,将需要通知的内容发往对应通道。

config

  • 作为配置中心,为judge、alarm等组件提供各种策略的查询接口。

web

  • 提供用户交互的api,例如策略的插入、查询,绘图展示等。

agent

  • 部署到所有目标节点,周期性的采集基础指标,
  • 提供接口接收用户自定义的数据上报。
  • 同时在每个目标节点上,提供类似tail -f + grep -c功能的组件,用于采集用户日志。
  • 基于statsd的组件,作为用户埋点上报的通道。

中心收集

  • 提供中心式的上报接口,提供高性能的中心收集器,以供用户上报监控数据。

-EOF-