Dawn's Blogs

分享技术 记录成长

0%

夜莺监控系统学习笔记 (1) 架构

夜莺监控系统

架构

夜莺的核心组件包括三个:采集器 categraf、和前端交互的模块 webapi、数据转发和告警引擎模块 server。

  • categraf:采集器,用于采集监控数据,比如 OS 的 CPU、内存、IO 相关指标,数据库的指标,中间件的指标等等,都统一使用 categraf 来采集。
  • webapi:用于和前端 JavaScript 交互的模块,对数据库做增删改查
  • server:server 模块是随着时序库走的,一套时序库对应一套 server,server 核心有两个作用:
    • 一个是接收监控数据的推送,转发给时序库。
    • 另一个是作为告警引擎,从数据库同步告警规则,然后为每个告警规则启动 goroutine,周期性的查询时序库,判断是否应该生成告警事件。

除了夜莺自身的3个组件,夜莺还依赖 MySQL 和 Redis。

  • MySQL 用于存放各类用户配置,比如监控大盘、告警规则、屏蔽规则、订阅规则等。
  • Redis 有两个作用:
    • 在 webapi 侧,是存放 jwt token。
    • 另一个是在 server 侧,作为一个注册中心,存放存活的 server 和 ident 列表(之后 server 的心跳放在了 MySQL 中),各个 server 模块就可以从 Redis 这里,知道全局活着的 server 列表,知道有哪些 ident 存活,便于生成 target_up 的指标数据。

image-20221219113915622