设计高可用系统 - 监控

2023/2/7

我们以设计一个保证系统服务 SLA 等于 4 个 9 的监控报警体系为例。监控系统包括三个部分:基础设施监控报警、系统应用监控报警,以及存储服务监控报警。 接下来,我就围绕这三个最核心的框架带你设计一个监控系统,并基于监控系统的设计,让你了解到系统哪些环节会影响系统整体的可用性,从而在面试中对系统高可用设计有更加清晰的掌握

# 基础设施监控

基础设施监控由三个部分组成:监控报警指标、监控工具以及报警策略 监控报警指标分为两种类型:

  1. 系统要素指标:主要有 CPU、内存,和磁盘
  2. 网络要素指标:主要有带宽、网络 I/O、CDN、DNS、安全策略、和负载策略

为什么我们要监控这些指标?因为它们是判断系统的基础环境是否为高可用的重要核心指标 监控工具常用的有ZABBIX(Alexei Vladishev 开源的监控系统,覆盖市场最多的老牌监控系统,资料很多)、Open-Falcon(小米开源的监控系统,小米、滴滴、美团等公司内部都在用)、Prometheus(SoundCloud 开源监控系统,对 K8S 的监控支持更好)。这些工具基本都能监控所有系统的 CPU、内存、磁盘、网络带宽、网络 I/O 等基础关键指标,再结合一些运营商提供的监控平台(如阿里云),就可以覆盖整个基础设施监控

监控报警策略一般由时间维度报警级别阈值设定三部分组成 为了方便你理解监控报警策略,我举个例子。假设系统的监控指标有CPU、内存和磁盘,监控的时间维度是分钟级,监控的阈值设置为占比。那么你可以定义出如下的监控报警策略: 为了第一时间监测到指标的健康度,报警级别可以分为紧急、重要,以及一般。当 CPU、内存,以及磁盘使用率这三项指标的每分钟采集的指标达到 90% 使用率时,就触发“紧急报警”;达到 80% 触发“重要报警”;70% 触发“一般报警”

# 系统应用监控

业务状态监控报警,关注点在于系统自身状态的监控报警。和基础设施监控一样,它也是由监控指标,监控工具,报警策略组成,不同的是,系统应用监控报警的核心监控指标主要有流量、耗时、错误、心跳、客户端数、连接数等 6 个核心指标,监控工具有 CAT、SkyWalking、Pinpoint、Zipkin 等

# 存储服务监控

一般来讲,常用的第三方存储有 DB、ES、Redis、MQ 等 对于存储服务的监控,除了基础指标监控之外,还有一些比如集群节点、分片信息、存储数据信息等相关特有存储指标的监控

对于存储服务监的内容细节,我这里就不再一一介绍,在面试中,你只需要基于监控系统的三个核心组成部分(基础设施监控、系统应用监控、存储服务监控)来回答问题即可,比如,你可以回答:我为了确保系统的健康可靠,设计了一套监控体系,用于在生产环境对系统的可用性进行监控,具体的指标细节可以结合业务场景进行裁剪,比如你们是游戏领域,所以很关注流量和客户端连接数 总的来说,让面试官认可你有一个全局的监控视角,比掌握很多监控指标更为重要

# 参考

  1. 《架构设计面试精讲》