参考来源:极客时间专栏-运维监控系统实战笔记,作者:秦晓辉
通过监控系统的典型架构,看看监控系统由哪些模块组成,各个模块是如何相互协同的。
一、监控系统的典型架构图
监控系统的典型架构图,从左往右看,采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。然后就是对时序库的数据进行分析和可视化,分析部分最典型的就是告警规则判断(复杂一些的会引入统计算法和机器学习的能力做预判),
即图上的告警引擎,告警引擎产生告警事件之后交给告警发送模块做不同媒介的通知。可视化比较简单,就是图上的数据展示,通过各种图表来合理地渲染各类监控数据,便于用户查看比较、日常巡检。
下面我们就来逐一分析一下每个模块的职能和设计。
1.1 采集器–两种典型部署方式-分布式、集中式
采集器负责采集监控数据,有两种典型的部署方式
一种是跟随监控对象部署,
比如所有的机器上都部署一个采集器,采集机器的 CPU、内存、硬盘、IO、网络相关的指标;
另一种是远程探针式,
比如选取一个中心机器做探针,同时探测很多个机器的 PING 连通性,或者连到很多 MySQL 实例上去,执行命令采集数据。
常见的采集器选型参考
机器层面的监控,我推荐 Telegraf 和 Categraf,内置了监控脚本、进程 / 端口监控,CPU