监控系统

基本概念

监控的定义

通过技术手段发现服务异常,持续优化业务可用性与用户体验。这句话的关键词是 发现、持续优化、可用性,体验。

监控告警是对某一个具化的对象做采集、存储、分析、展示、告警、处理的过程。

一个业务线、一台物理服务器、一个接口都是监控对象,监控对象也是有关联关系的,一个机器挂掉了你不能指望着这台机器上的接口还是健康的吧

监控的方式

主动:程序内部埋点,服务主动上报自身的运行情况,一般都是具化为业务的各个属性或者指标,这种方式准、快、灵活性好,指标丰富。但是在非标准框架下会有一定的代码改造成本。

被动:无需埋点,从外部探测或获取服务的运行情况,例如ping探测、日志采集分析等等。

旁路:与程序逻辑无关,对服务质量与口碑的监控,例如舆情分析。

监控方式图

监控的类型

  • 基础监控:这里的基础监控囊括范围比较广,主要指IAAS层(服务器、系统、网络等)
  • 服务端监控:一般指后台服务,例如QQ的后台消息服务。
  • 客户端监控:一般指app,手Q的客户端与微信的客户端。
  • WEB监控:一般指网站,例如对网站域名的拨测。
  • 用户端监控:一般指用户舆情监控,例如某个APP的口碑好坏。

监控的目标

持续优化业务服务质量,并建设质量体系。

  • 监控对象足够全
  • 性能好,实时性强
  • 监控准确,不漏报,少误报

监控的本质也是数据驱动的业务,设计业务监控时一样要思考数据路径,勾勒用户行为,体会用户活动及其产生的价值
监控告警数据闭环图

  • 数据生产:(例如一台服务器上报的各种基本的 OS 指标数据,如 CPU 使用率,内存使用量等。这就产生了若干待消费的原始数据,那么我们能用这些数据干什么呢,业务量没变,cpu使用率上升是不是有问题,业务量上升cpu使用率变高是不是就没问题?)
  • 数据消费:对这些上报的原始数据整理可以用作视图展示,例如图形化展示该服务在最近一个小时的 CPU 使用率。 又或者对这些原始数据设定阈值,当超过某个阈值的时候,就产生告警通知。这些都是最直接的消费的场景。

发散思维

先看下出行工具的控制面板


摩托车控制面板

汽车控制面板

飞机控制面板


传统的驾驶舱布局特点是使用表和操作开关向飞行机组传达和交互信息.其特点是由系统表提供原始数据给飞行机组,然后由飞行机组整合数据变成机组可用的关于飞机’环境和任务等有关的信息,该信息获取的方式是机组基于手头的工作或任务,由机组通过眼睛,耳朵或触觉等扫描仪表或读取数据或感知飞机态势,在设计时主要反映人机功效水平,即空间’灯光’外部环境”振动’噪声’可达性’易达性等
玻璃驾驶舱的布局特点在传统的基础上,使用了多功能显示器显示和控制组件,更多的自动化功能,使机组可以获得比传统飞机超容量的海量信息,并且是深加工后的数据信息,客观上可以大大降低飞行机组的工作负担研究报告


思考题

  1. 如果所在业务线存在状态机流转,考虑下如果不通过聚合查询,仅通过添加埋点,是否能实时监控各个状态的分布情况.
  2. 整理一个业务的实现方式(一系列接口调用,消息处理,前端点击..)把它们想办法配置成一个监控图,观察两天,看看有啥有趣或无聊的结果,或者你认为不能仅仅通过接口反应业务的原因到底是什么.
监控系统 语言 成熟度 扩展性 性能 社区活跃度 容器支持 使用情况
Zabbix C +PHP
Nagios C
Open-Falcon Go
Prometheus Go

Prometheus架构图

open-falcon

监控指标分类

类型 说明 示例
基础指标 设备相关指标,指标类型和数量确定,指标模型稳定 CPU使用率
应用指标 应用服务相关指标,主要展现程序的状态和性能,模型不稳定,需要调整 延时 流量 错误等
业务指标 和业务收益相关的指标,报警策略复杂,需要对数据进行多维度分析,可能还需要调整历史数据 订单量,支付成功率

数据收集

指标收集

Push 实现方式简单

Pull 方式的优势是能够自动进行上游监控和水平监控,配置更少,更容易扩展,更灵活,更容易实现高可用。展开来说就是 Pull 方式可以降低耦合。由于在推送系统中很容易出现因为向监控系统推送数据失败而导致被监控系统瘫痪的问题,所以通过 Pull 方式,被采集端无须感知监控系统的存在,完全独立于监控系统之外,这样数据的采集完全由监控系统控制,增强了整个系统的可控性。

日志收集

LOGSTASH

报警

现在已知数据上报周期为1min,报警扫描周期为1min,忽略执行时间(数据上报和报警扫描都看作瞬时动作).那么从发生报警事件到收到报警的最长时间是多少?

拓展

时间序列是指将某种现象某一个统计指标在不同时间上的各个数值,按时间先后顺序排列而形成的序列。 时间序列法是一种定量预测方法,亦称简单外延方法,在统计学中作为一种常用的预测手段被广泛应用。

时间序列异常检测

DTW算法

系统监控报警时,和报警指标正相关或负相关的趋势图能否自动筛选出来,给解决故障或问题定位提供有效辅助

文章链接 https://fangzongzhou.github.io/2020/09/24/计算机/分布式系统/监控系统/