监控系统设计

监控与告警体系

在系统运维一章中我们就已经讨论了独立Linux服务器中简单的系统指标的获取与分析,本篇着重讨论复杂分布式系统下基于度量的监控解决方案,广义的监控往往还会涉及日志聚合与分布式追踪等。

监控系统流程

无论是开源的监控系统还是自研的监控系统,监控的整个流程大同小异,一般都包括以下模块:

  • 数据采集:采集的方式有很多种,包括日志埋点进行采集(通过LogstashFilebeat等进行上报和解析JMX标准接口输出监控指标,被监控对象提供REST API进行数据采集(如Hadoop、ES,系统命令行,统一的SDK进行侵入式的埋点和上报等。

  • 数据传输:将采集的数据以TCPUDP或者HTTP协议的形式上报给监控系统,有主动Push模式,也有被动Pull模式。

  • 数据存储:有使用MySQLOracleRDBMS存储的,也有使用时序数据库RRDTool、OpentTSDB、InfluxDB存储的,还有使用HBase存储的。

  • 数据展示:数据指标的图形化展示。

  • 监控告警:灵活的告警设置,以及支持邮件、短信、IM等多种通知通道。

Links