ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

监控系统十年演进与实战:从Zabbix到Prometheus、Grafana的选型与告警设计

监控系统十年演进与实战:从Zabbix到Prometheus、Grafana的选型与告警设计 监控这个词十年前在圈子里是个挺朴素的概念。2014年我刚入行值夜班守机房所谓的监控就是隔几分钟看看网页图表确认服务器没宕机、交换机没掉线再盯着短信报警怕半夜被运维电话叫醒。十年过去同样是监控含义早就翻了好几倍既要盯服务器指标也要盯容器状态、网络流量、业务订单量甚至还要盯视频摄像头里的实时画面、冷库里的温度曲线、电商平台上的关键词动态、恶意域名的攻击路径。这个领域的演进不只是工具从Cacti换到Zabbix、Prometheus这么简单而是整个监控对象、监控思维和数据链路都被重新定义了。这篇文章我想把自己这十年里实际用过的监控方案、踩过的坑、沉淀下来的思路完整整理一遍。适合刚入行的运维、后端开发以及所有正在或准备搭建监控体系的团队参考。你会看到老牌工具Zabbix、Prometheus、Grafana怎么选型落地也会看到RTSP视频流结合YOLO检测、PLC冷库监控这类行业场景怎么复用同一套监控逻辑还会看到一些容易被忽略的细节比如指标准不准、告警轰炸怎么治、监控系统本身怎么防住黑产和攻击。1. 监控十年演进从看设备活没活到看业务好不好1.1 监控的边界是怎么被一步步拉大的头几年的监控本质上是在回答一个很原始的问题设备还活着吗那时候大家用ICMP ping探活用SNMP抓交换机CPU、端口流量用脚本检查磁盘和内存能凑出一张趋势图已经很开心。监控的对象边界非常清晰机房里的服务器、网络设备、存储基本就是全部。转折点大概出现在前后端分离和微服务普及之后。系统拆成了几十个服务光靠服务器层的指标已经完全看不出问题出在哪。你看到一台机器CPU打满可它是被谁打满的是哪个接口流量异常还是哪个SQL把连接池拖垮了于是APM、链路追踪、日志分析这类工具开始大量进入视野监控对象从宿主机下沉到了进程里的每一次调用。再往后业务方开始问数据库很健康、服务也没重启为什么订单量跌了你才发现监控还得往上走到业务指标层——注册用户数、支付成功率、核心接口耗时甚至第三方的竞品信息、舆情动态都可能成为需要持续观测的对象。这个过程用一句话概括监控的边界从基础设施一路扩展到应用、业务和外部环境。这不是技术炫技是被故障逼出来的。因为每一次你排不出来的故障背后几乎都是监控盲区——传统工具只告诉你机器高负载却没告诉你这是某个业务活动导致的预期内波动还是真正的问题前兆。1.2 一条主线无论对象怎么变数据链路始终是那五段对象千变万化但所有监控系统的骨架都是同一套采集、传输、存储、可视化、告警。早期Cacti用SNMP轮询把数据画成图本质也是这五段只是每段都很弱——采集靠手动配置存储是RRD环形数据库告警只有简单的阈值邮件。到了Prometheus体系数据链路被工程化了采集器按固定间隔抓取指标通过HTTP协议传送到TSDB用PromQL查询配Alertmanager做路由和告警分发。我在给团队设计监控方案时习惯先把这五段画在白板上再逐段选型。因为绝大多数监控项目烂尾都是因为没把链路想清楚就急着装工具。比如有人先用Zabbix盯了半年服务器突然说要看Kubernetes容器指标结果发现Zabbix的容器监控能力虽然也能做但要重新设计采集器、模板和存储策略不如一开始就在架构上留出扩展位。反过来有人一上来就上全套Prometheus全家桶但连裸金属的SNMP网络设备监控都没接好出现网络故障时照样瞎眼因为Prometheus对传统网络设备的原生支持并不算友好还得靠exporter桥接。所以我把这十年的演变浓缩成一句话工具会换代但采集-传输-存储-展示-告警这条链路永远不会变。先理清链路再谈选型是监控十年演进给所有人最大的方法论红利。2. 监控技术栈演进那些年我们追过的工具和它们背后的逻辑2.1 老一代的SNMP、Nagios、Cacti配置靠人肉告警靠邮件2015年我接手的第一套监控平台是Cacti。它的原理很简单通过SNMP协议周期性读取网络设备和服务器上的OID把CPU、内存、流量、温度这些值画成RRD图。那个年代没有标准化采集端的概念每加一台设备都要手写一条配置模板全靠复制粘贴。Nagios则更进一步把服务状态检查做成了框架可以用插件检查端口通不通、进程在不在、磁盘剩多少但它的画图能力几乎为零得配合Cacti或者Graphite才好看。这套老架构最大的问题不是功能少是维护成本高。我印象很深有一次公司加了200台云主机光批量生成监控配置就花了我一个周末还得手工处理命名规范、阈值参数、依赖关系。另一个痛点是指标精度低。SNMP轮询周期普遍是5分钟很多瞬时故障根本抓不到。你盯着图上一条几分钟的抖动等找到问题的时候早过去了。更要命的是告警设计粗糙一个阈值触发就全员邮件轰炸三个月下来大家对报警邮件完全免疫真正出大事时反而没人第一时间响应。这些教训到今天依然有效选监控工具先看它能否支持批量纳管、模板复用和灵活的告警策略而不是光看图标好不好看。Cacti和Nagios今天虽然不再是主流但它们的思路深深影响着后面的Zabbix和Prometheus尤其是插件化检查和趋势数据存储这两个理念。2.2 Zabbix传统监控的中流砥柱到现在依然能打大概2016年开始我大量使用Zabbix这个工具到今天还在很多企业的主力监控名单里说明它的设计确实皮实。Zabbix的核心优势是一站式采集、存储、告警、可视化都是一个产品闭环支持SNMP、agent、IPMI、JMX、自定义脚本模板社区也很成熟。相比Prometheus那套需要各种exporter和组件拼装的方案Zabbix在传统IT环境里的上手成本明显更低。我在帮朋友公司搭Zabbix监控Linux NAS存储时具体的做法是存储设备开启SNMPZabbix里导入现成的NAS模板重点盯磁盘空间、inode使用率、磁盘温度和RAID状态。因为NAS就是用来存数据的丢数据和盘坏是头等大事。另外用zabbix agent2监控存储服务器本身的CPU和内存再用自定义脚本定期执行smartctl读SMART信息看硬盘的健康度预测。这套搭下来大概半天但能覆盖90%的日常风险。Zabbix的分布式架构也很有意思通过proxy节点把采集压力分散到各个机房适合多分支企业。我在Zabbix 7.0上实测agent2的性能比老agent提升明显支持主动和被动两种模式Nginx前端也更顺滑。如果你是传统企业设备五花八门团队只有一两个人负责运维Zabbix依然是性价比很高的选择。它不像Prometheus那样对云原生有天然的亲和力但通过旁边的exporter也能接容器指标前提是你要愿意折腾模板。2.3 Prometheus Grafana云原生时代的默认答案但别盲目追2018年前后Kubernetes普及Prometheus几乎成了容器监控的标配。这个生态的核心是一个很有代表性的理念主动拉取模型。每个被监控对象暴露一个HTTP端点Prometheus Server每隔固定间隔去抓取指标配合标签系统做多维度的聚合查询再用Alertmanager做告警分发最终用Grafana把数据画成各种交互看板。整套体系很符合微服务和容器环境的特点——服务实例是动态伸缩的IP地址频繁变化靠注册中心发现目标比手工配置实例列表靠谱得多。我搭过一套运行监控grafanaprometheus使用手册其实就是给团队写的一份从零上手指南。关键点有三个指标命名统一namespace_job_name标签少量且互斥避免高基数标签爆炸查询尽量用relabel把无用series挡在外面不然TSDB会迅速膨胀告警规则先粗后细先用简单的CPU或内存阈值跑两周再慢慢加多项式预测或复杂的表达式。Grafana看板配置里最容易被忽略的是时间范围和步长很多新人把所有面板都设成最近6小时、步长30秒一旦数据量大查询会慢得让人误以为系统坏了。实际应该按数据保留周期和指标粒度把看板动态步长打开自动降采样。Prometheus不是银弹它的缺点也很明显传统网络设备、数据库、业务系统接入成本高很多要靠exporter改造单机TSDB在数据量大的时候需要做分片或者改用VictoriaMetrics这类兼容方案。我的经验是如果环境是云原生直接上Prometheus如果环境还是以物理机和虚拟机为主Zabbix仍然更顺手。2.4 轻量派Spring Boot Actuator、Beszel这些新玩家的价值监控工具越来越轻量是一个肉眼可见的趋势。比如Spring Boot应用只要引入Actuator依赖并开放端点就能暴露health、metrics、info等信息配合Prometheus的micrometer一个应用实例的可观测性几分钟就能见效根本不需要装agent。我在排查微服务故障时经常先看一眼/actuator/health和/actuator/metrics里的关键指标比如线程池活跃数、HTTP请求耗时、JVM内存分布很快就能定位是代码问题还是资源瓶颈。更轻量的是Beszel这类小工具主打用很小的资源搭建服务器或容器的监控面板。我自己实践过在VPS上装一个agent和中心端几十MB内存就能监控CPU、内存、磁盘、网络。它的界面简洁告警也够用适合个人开发者或小团队不想维护重型监控平台的情况。但也有人问beszel的监控指标准确吗——这个得实话实说。轻量工具为了低开销CPU计算往往采用抽样或简化的cgroup统计和标准工具的数值在个位数范围内有差异是正常的。我对比过Beszel和Prometheus node_exporter的数据CPU占用在波动剧烈的场景下误差可能到3到5个百分点但趋势是一致的。对于个人或小团队这个精度完全够用别拿它做严谨的容量规划就没事。3. 监控系统的三个核心环节采集、存储、告警的实战心得3.1 采集层主动拉还是被动推选错的代价很大采集是监控的第一公里也是最容易被忽略的一公里。两种主流模式Zabbix的agent主动上报加server拉取Prometheus的server主动拉取。主动拉取的好处是Server统一控制节奏新增被监控对象时只要发现机制做得好就能自动纳入坏处是如果被监控对象数量暴增Server会变成瓶颈。被动推送则适合大批量、高频率的数据上报但要求接收端有很强的写入吞吐能力。我在一个项目里就吃过亏。当时用Prometheus监控上千个Pod拉起Dashboard时很爽但到了业务高峰期采集频繁超时很多时间序列出现缺口。后面排查才明白单个Prometheus实例的采集器和TSDB写入是共享资源的拉取目标和查询负载一起上去整个进程就吃力。后来把采集任务拆给多个抓取器、用远程写转发到VictoriaMetrics才完全解决。这个教训说明一个道理采集层一定要先估算目标数量和数据量再决定拓扑。目标少单机完全没问题目标上了几百上千就要认真考虑联邦、分片和远程存储了。另外采集周期也不是越短越好。我见过有人把周期设成1秒盘很快就满了查询也越来越慢实际上业务根本不需要这么细的粒度。合理做法是按需设置基础设施指标用15到30秒业务指标用1到5分钟告警判断用最近几次采样值的趋势做判定而不是盯着瞬时值。3.2 存储层时序数据的取舍磁盘预算怎么算监控数据几乎都是时序数据存储层的选型直接决定你后续的查询体验和维护成本。早期Cacti用RRD数据库特点是文件固定大小、自动降采样好处是磁盘占用可控坏处是粒度丢失后没法回溯。后来InfluxDB、Prometheus TSDB、VictoriaMetrics这类专门为时序设计的数据库出现把标签索引、压缩算法、降采样策略玩得很成熟。我搭监控时有个很实用的习惯先估算磁盘预算。公式大致是单指标每秒产生的样本数 × 每个样本压缩后的字节数Prometheus大概1到2字节× 总指标数 × 86400秒 × 保留天数再乘一个安全系数。举个例子假如采集了10万个时间序列每个序列平均15秒出一个点保留15天那么大概的数据量是 100000 × (86400/15) × 15天 × 1.5字节约12.96GB。这个量级用单块盘就能扛但如果你有上千万时间序列还全保留30天那必须上对象存储或长期存储方案。算清楚了再设计就不会出现跑两个月磁盘爆掉的事故。存储层还有两个容易踩的坑。一个是标签基数失控比如把用户ID放进标签那series数量会瞬间爆炸另一个是保留策略没想好旧数据删不删、降采样降多少都要提前定规则。我的习惯是热数据保留7天原始粒度30天保留1分钟降采样超过30天只留5分钟聚合值。大部分查询根本不需要追溯到秒级这样能把磁盘成本降一个量级。3.3 告警层怎么让告警真正有效而不是天天狼来了告警是监控的价值出口也是运维团队最容易崩溃的地方。很多团队堆了几百条规则结果每天都在狼来了真正出问题时反而没人看。我总结了一套告警收敛的方法第一阈值连续判定比如连续3次采样都超过阈值才触发避免瞬时毛刺第二持续时间叠加比如CPU超过90%持续10分钟才发紧急告警5分钟以内只记录事件第三排班和路由上班时间走钉钉群深夜只给值班人发短信或电话不同级别对应不同通道。告警聚合和抑制机制也很重要。如果200台机器同时失联理论上你会收到200条告警但真正要处理的其实是机房的网络或电源问题。Zabbix里通过action条件去重Prometheus里用Alertmanager的group_by把同一标签组的告警合并成一条再有抑制规则让root cause告警屏蔽掉衍生告警。我实际用下来一个稳定运行的监控体系每天真正需要人去看的告警应该是个位数超过这个数字就要反思是不是阈值或规则有问题。还有一个被很多人忽略的点不管Zabbix、Prometheus还是自研系统告警规则都要积极维护上线后有话术、有巡检、有复盘。我见过最惨的项目是告警规则三年没动过新增业务系统完全没接监控旧规则反复触发但没人清理最后整个告警体系形同虚设。监控这件事七分在持续运营三分在搭建。4. 监控的行业场景化同一套逻辑在不同领域的长出不同形态4.1 视频监控与AI检测RTSP拉流、YOLO推理让摄像头自己看问题视频监控是这几年需求增长极快的方向。传统摄像头监控靠人盯屏幕成本高、效率低现在主流做法是把摄像头视频流接入AI检测系统自动发现异常事件。这里面最常见的链路是摄像头通过RTSP协议输出视频流平台用FFmpeg或OpenCV拉流解码按一定帧率抽帧送入YOLO这类目标检测模型做推理最后把检测结果写入消息队列由业务模块完成告警和联动。我搭过一个园区安防的小项目环境是海康摄像头输出RTSP流。代码层面最关键的是拉流不能和检测放同一个线程否则一旦模型推理变慢拉流会越积越多延迟越来越大。正确做法是单独线程拉流放进有界队列检测线程从队列取帧当中断或花屏时重新初始化连接sleep几秒再重连。还有一个细节OpenCV的cv2.VideoCapture直接拉RTSP容易出现延迟累积可以设置CAP_PROP_BUFFERSIZE来控制缓冲区大小。YOLO模型选型上我一般用YOLOv8s或更轻的n版本在普通工控机上能跑到20到30帧每秒足够覆盖闸机、周界、人员聚集这类场景。这个方案的价值在于它把事后看录像变成了实时发现并告警。但也要注意合规边界视频监控涉及隐私和合规要求部署前一定要确认区域内是否可以录像、是否有人脸识别需求、数据保存周期是否合法。技术本身是中性的但用在哪里、怎么用必须在规则允许的范围内。4.2 工业控制监控基于PLC的冷库监控系统设计温度就是生命线工业监控和IT监控完全是两种画风。拿冷库来说温度失控可能让整库货物报废所以监控系统必须做到实时、可靠、可追溯。典型方案是冷库内部布置温度传感器PT100热电阻或NTC通过模拟量模块接入PLCPLC用Modbus RTU/TCP协议把数据传给上位机或云平台上位机负责趋势曲线、报警阈值、历史报表发现温度异常时自动联动制冷机组和声光报警同时推送手机通知。我参与过一个项目现场用的是西门子S7-200 SMART系列PLC温度传感器接在EM231模拟量模块上上位机通过Modbus TCP轮询寄存器地址把温度值读出来。关键点是PLC程序里要有传感器断线检测因为热电阻一旦开路读出来可能是个极大值如果没做处理系统会误判冷库超温而报警。另外要把传感器本身故障和冷库温度真实升高区分开这是工业监控里最容易被忽视的坑。我在上位机里做了双重判定单点超阈值只提示连续3个采样周期超阈值才告警并且超过30分钟不恢复自动通知值班经理。工业环境还有个特点是设备协议多、现场环境差所以监控系统一定要能适配多种协议Modbus、OPC UA、Profinet最好留出协议转换层。现在很多PLC支持网口直连直接用Modbus TCP采集比老式的RS485转接稳定得多。冷库这类场景断电是最怕的所以监控主机一定要配UPS和异常断电主动上报机制否则一次停电后数据断档冷藏链的可追溯性就断了。4.3 嵌入式与环境监控小设备攒大气候数据量虽小但积少成多嵌入式环境监控的场景非常多粮库、机房、温室、养殖场、配电房都需要低成本、低功耗的温湿度、气压、PM2.5甚至有害气体监测。我做过一个小型环境采集节点主控用ESP32或STM32外接温湿度传感器通过Wi-Fi或LoRa把数据上报到MQTT Broker后端用Node-RED或自研服务做存储和展示。这类项目的数据量不大但要注意功耗设计和断网补传。嵌入式监控最常见的坑是传感器数据漂移。温湿度传感器用久了尤其是湿度容易和标准值出现偏差。我实践下来的办法是定期校准并在上位机里做双传感器比对如果两个传感器读数差超过一定范围就触发维护告警而不是直接使用其中一路数据。另外嵌入式设备经常处于弱网环境上报策略要有断线缓存机制本地存一批数据等网络恢复后按序补传不然监控曲线会有一大段空白。很多人觉得环境监控很小但它在整个监控体系里往往承担着底线防御的角色机房空调坏了第一个发现的不一定是Zabbix对服务器的检查而是温湿度传感器的告警。我用一句话总结嵌入式环境监控的价值不在数据量而在最后一公里的感知力把那些大平台够不着的地方都覆盖到。4.4 业务与内容监控闲鱼关键词、抖音新作品这类需求怎么在合规前提下做这几年监控的热词经常往业务信息监控方向跑比如闲鱼关键词监控、抖音新作品监控。这类需求的本质是把公开平台上的特定信息变成结构化数据持续跟踪变化。常见的使用场景是自己的电商店铺维护人员想及时了解竞品价格变化自媒体运营想第一时间发现自己关注的博主更新作品以及品牌方想要持续跟踪网络上的违规侵权内容。技术方案通常是对公开页面做定期采集再对内容做关键词匹配和变化检测触发通知。但这里必须强调合规前提不突破平台的反爬机制不破解接口鉴权不抓取用户隐私数据涉及个人信息的一律不做。我熟悉的正规做法是尽量使用平台官方开放的API或订阅能力遵守robots协议和用户协议辅助手段可以用人工整理工具把需要关注的账号和关键词做成清单定期人工巡检。这里面的设计核心是信息聚合和提醒而不是批量抓取和绕过限制。另一个很有意思的场景是浮动软件许可监控比如有人会遇到无法获得solidworks standard许可的问题。这本质上需要监控的是许可证服务端的授权占用情况。常见做法是周期执行lmstat -a这类FlexNet许可证命令解析当前授权使用数量当可用授权数低于阈值时告警并且结合日志判断是不是有僵尸会话占用授权导致正常用户无法获取。这类业务级监控技术上不复杂但直接关系到研发团队的效率和成本做得好非常加分。5. 监控的实践细节与踩坑记录指标准确性、恶意域名处置、常见问题速查5.1 指标准确性轻量工具和重型平台为什么对不上很多人问Beszel这类轻量监控的指标准确性我实测过结论是趋势准确绝对数值有误差。原因在于CPU占用率的计算方式。标准做法是用/proc/stat里的CPU时间增量来算而容器环境更复杂需要从cgroup的cpuacct统计中读取。不同工具对cgroup v1和v2的处理逻辑不一样对空闲时间和不可被抢占时间的归并口径不同算出来的百分比自然对不上。我建议大家在对比监控指标时不要死磕绝对值而是明确每个工具统计口径不同趋势一致就行。比如你要做容量规划应该用Prometheus的node_exporter数据加长时间窗口分析只是大概看看机器负载有没有异常Beszel足够。真要较真可以在同一台机器上同时跑两套采集连续记录一周把数据拉出来做百分比偏差对比确认处于可接受范围。另外一个和指标准确性直接相关的话题是前台进程监控。尤其在容器环境里PID 1进程如果挂了容器会直接退出但有些场景下我们希望监控的是具体某个前台程序是否还在正常提供服务。做法可以是systemd里配置Restartalways配合健康检查脚本周期性探测端口或进程状态也可以用supervisor启动并守护前台进程同时把它的状态输出到日志文件由监控平台读取。我经验里最不可靠的是只靠进程存在判断因为很多进程存在但已经僵死不如直接做业务探活比如请求一个关键接口看响应码。5.2 一次真实的安全监控闭环恶意域名和黑产反复攻击怎么从根上解决安全监控经常被当成事后诸葛亮直到真被黑产盯上才知道这套闭环有多重要。我经历过一次恶意域名指向并伴随黑产反复攻击的案例攻击者伪造了一个和我们业务高度相似的域名用来钓鱼和投放恶意脚本同时针对我们的主机做扫描暴破。当时分几步处理网络层先封禁攻击IP段和频繁暴破的来源IP在防火墙上加ACLDNS方面把恶意域名在内网DNS解析成空地址或指向内网蜜罐阻断内网用户误访问日志溯源方面把防火墙、Web服务器、认证日志集中到ELK排查攻击入口和横向移动路径主机加固方面关闭不必要服务、禁用root密码登录、改用密钥认证、部署fail2ban再在WAF或Nginx上配置规则拦截可疑User-Agent和恶意路径。最后是长期监控部署Suricata或Snort做IDS规则检测把恶意域名的证书信息、URL特征加入威胁情报库持续观察是否还有新的变体域名出现。整个过程里最重要的不是单点防御而是检测、阻断、溯源、加固、复测形成闭环。安全监控和基础设施监控的差别就在这里前者关注的是有没有人企图进来、谁进来了需要更多日志关联分析和行为基线而不是简单阈值判断。这个案例也提醒我安全监控一定要在平常就做好日志保留和攻击面梳理否则真出事的时候你连日志都没存够7天溯源根本无从谈起。现在我做任何监控项目都会单独规划一套日志采集和留存方案至少3个月以上并且要定期做攻击路径演练确保告警和阻断规则真的能联动起来。5.3 常见问题速查表从FTP监控到Drupal监控十年里被问过最多的问题我把这些年被问得最多的监控问题整理成了一张速查表都是可以直接抄作业的答案。问题核心思路推荐工具/方案FTP文件传输如何监控监听目录变化、文件新增大小和校验值传输完成后的落盘告警inotify脚本、Zabbix自定义监控项、Filebeat加规则Drupal站点如何监控外部探活首页能否访问、内部cron执行状态、安全更新提醒网站监控可以使用外部监控服务或Uptime Kuma模块更新用Drupal自带状态报告Vue项目编译如何监控关注CI里的构建时长、告警数、产物大小形成趋势曲线Jenkins/GitLab CI内置指标配合speed-measure-plugin无法获取SolidWorks许可监控License授权占用量预警临界状态清理僵尸会话FlexNet工具lmstat定时执行解析授权使用率Linux NAS存储怎么监控磁盘空间、inode、SMART健康度、RAID状态、网络吞吐Zabbix SNMP模板自定义smartctl脚本容器前台进程监控进程存在性业务探活两者结合判断真实可用性systemd/ supervisor守护配合HTTP健康检查Grafana看板查询慢调整步长、开启降采样、减少面板查询的指标维度Grafana表达式动态步长、VictoriaMetrics降采样Prometheus数据量大撑不住分片采集任务、远程写、减少高基数标签VictoriaMetrics / Thanos提前做容量估算这张表看着琐碎但每一条背后都是同一个逻辑先定义什么才算异常再决定采集什么指标最后才谈告警。很多监控项目做砸不是没有工具而是没想清楚观测对象和判断标准。5.4 几条十年磨出来的经验监控系统本身也需要运维最后分享几条沉淀下来的经验都是真金白银换来的教训。第一监控覆盖范围比监控精度重要。宁可一个指标用粗糙的方式覆盖到所有节点也不要精细监控两台核心机器而对其他几十台视而不见。故障最喜欢出现在你没想到的地方。第二告警规则必须做减法。上线时先少配规则运行稳定了再逐步增加而不是一次性堆几百条。我见过太多团队花一个月配了一堆规则结果没人看得过来最后只能全部静默等于白做。第三监控系统本身是最容易没人管的系统。它如果不运作了你是最后一个知道的。所以一定要给监控系统配置自身的健康检查比如Prometheus自身是否正常抓取、磁盘剩余多少、告警通道是否畅通反过来用另一套低成本的探针盯着它。第四指标命名和标签规范越早定越好。一旦数据量起来改名要付出的成本会成倍增长而且影响历史数据的连续性和告警规则的可读性。我见过最痛苦的案例是排查问题时发现同一台主机的CPU指标在两天历史里用了不同的名字导致趋势图直接断掉。第五所有告警都要能落到一个人能执行的行动。我在设计告警时总会问一句收到这条告警的人下一步该做什么如果答案是不知道那这条告警要么不改要么加说明。真正有效的告警应该像一份行动指令而不仅仅是有问题的通知。这十年监控最大的变化是它从一项技术工具变成了一种工程文化。十年前大家问你用什么监控现在是问你监控了什么、发现了什么问题、怎么快速恢复。再往前走监控会和成本治理、容量预测、安全响应越来越紧密地绑在一起。希望这篇总结能让你在搭建自己监控体系的时候少走几步弯路。我个人现在做任何系统都习惯先把监控设计写进架构文档的必选章节因为它决定了一个系统能不能在出问题时被快速理解、快速恢复。这个习惯是这十年给我最重要的回报。
返回列表