监控这个话题,你在网上随手一搜就是几百种工具、几十套方案,从摄像头安防到服务器性能、再到物联网环境监测,方向多得很。但我这几年做运维、巡检和工程类项目,最深的一个感受是:监控工具永远不缺,缺的是把监控和事态流程串起来的那根线——发现异常之后,谁来接、怎么接、什么时限内必须处置、处置完怎么复盘。这篇内容就是围绕我们团队沉淀下来的“监控和事态流程手册”来写的。它不是某个软件的使用说明,而是一套可以放进团队日常运转的实操框架,核心作用很简单:让监控从“能看到数字”变成“能推动解决问题”。
这套东西适合谁?正在搭监控平台的运维、SRE、后端开发,以及做嵌入式或物联网设备监控的同学,都可以参考。我自己在整理手册时最大的体会是:很多故障不是因为监控没发现,而是因为发现了之后没人按统一套路去处置。所以下面会把我们怎么设计监控体系、怎么写事态流程、踩过哪些坑,一条条拆开讲。
1. 为什么监控和事态流程必须写进同一本手册
1.1 监控是发现,事态流程是处置
先讲一个真实场景。去年有一次夜间值班,告警群从两点半开始刷屏:页面打不开、接口超时、数据库连接数飙升,三条告警翻来覆去地弹。结果群里十几个人都没动——不是不想动,而是大家都在等别人先说一句“这个归我处理”。第二天复盘时我们发现,监控系统本身没问题,指标采集正常、告警推送也到了,甚至提前半小时就把故障苗头报了出来。真正缺的是一套事态流程:告警什么样算紧急、谁负责接、第一响应人做什么、什么时候升级。
所以我把这两件事合成一个词来理解:监控负责“发现”,事态流程负责“处置”。如果只有监控,异常被发现了大家还是一脸懵,告警就只是噪音。反过来,如果只有流程没有监控,流程就没有触发源头,故障只能等用户来骂才知道。监控触发事态,事态反哺监控——每次处置完,都要回过去调整监控阈值、补监控项,这个闭环才是手册真正的价值。
用个生活类比:监控像家里的烟雾报警器,事态流程像灭火器放在哪、怎么用、要不要打紧急电话。报警器再灵敏,没有后手,还是可能把房子烧了。很多团队天天折腾监控工具,报警器装了一堆,灭火器却没人管,问题就出在这儿。
1.2 这本手册适合谁、覆盖哪些场景
我们团队刚开始是纯做服务器运维的,后来慢慢接了物联网设备、边缘计算节点,再后来连食用菌栽培车间这种物联网环境监控项目也归我们管。所以手册的适用范围被撑得很宽:从传统服务器、中间件,到嵌入式设备、环境传感器,再到边缘AI推理节点,都往里装。
但我并不建议一上来就做得很庞大。手册适合谁,其实取决于你当前的痛点:
- 运维/SRE团队:日常值班、故障响应、告警治理,核心诉求是少被半夜吵醒。
- 后端开发团队:接口性能、数据库连接、日志错误率这些研发侧指标需要监控,出事还要自己排查。
- 物联网/嵌入式团队:设备在线率、环境温湿度、弱网补传、断电恢复这类现场问题,监控和处置链路比纯服务器场景更复杂。
- 边缘AI部署团队:模型推理的误检率高、帧率抖动、资源占用,都需要一套指标监控和排查流程。
手册的内容范围,我们把它切成三块:监控配置基线、事态处置流程、常见故障速查。监控配置基线告诉你怎么选指标、怎么搭平台;事态处置流程告诉告警响了之后按什么动作走;常见故障速查则是把历史故障沉淀成可直接翻查的卡片。
1.3 一本好手册的四个标准
写手册最怕写成一本没人翻的文档。我们迭代了几轮之后,总结出四个标准,可以用来自查:
第一,可执行。手册里的每条处置步骤都要落到具体动作,比如“查看某条命令”“打开某个看板”“联系某个接口人”,不能停留在“加强监控”“提高意识”这种原则层面。第二,可演练。所有流程都应该能拉练,一年至少做一两次故障演练,把手册当剧本用,才知道哪里写得不现实。第三,可更新。每次故障复盘后,一周内必须把手册改完再发布,过期的手册比没有手册更危险。第四,可复盘。手册要留出记录时间线的位置,每次故障都能在手册基础上做复盘,越用越厚。
这四条看着简单,实践起来特别难。我们手册到现在改了上百个版本,每次故障都会发现某条流程跟实际对不上。但正是这种不断修订的过程,让团队应对故障越来越熟练。
2. 监控体系怎么设计:指标、分层与工具选型
2.1 先画监控地图,别急着装工具
很多团队搭监控平台,第一步就踩坑:上来直接部署Prometheus或者Zabbix,装了再说。结果界面花里胡哨,看板几十块,真正出故障时还是找不着北。我的习惯是反着来,先画一张监控地图,把要监控的对象分好层,再决定用什么工具、配哪些指标。
业内常用的分层思路,我觉得可以归纳成四层。基础设施层管CPU、内存、磁盘、网络、电源、温度这些物理资源;中间件和服务层管Nginx、数据库、消息队列、容器、进程这些软件组件;业务层管接口耗时、成功率、吞吐量、订单量这类跟用户体验直接相关的指标;还有一层现场环境层,管温湿度、设备在线状态、传感器读数、摄像头在线情况这些非IT资源。用表格呈现会更直观:
| 层级 | 监控对象 | 典型指标 | 典型工具/手段 |
|---|---|---|---|
| 基础设施层 | 服务器、磁盘、网络、电源 | CPU使用率、内存余量、磁盘空间、温度 | node_exporter、Zabbix agent、nmon |
| 中间件/服务层 | Nginx、数据库、Redis、消息队列 | 连接数、QPS、慢查询数、队列积压 | Prometheus exporter、Druid监控页 |
| 业务层 | 接口、页面、核心链路 | 成功率、P95延迟、错误率 | 自定义埋点、Grafana看板 |
| 现场环境层 | 温湿度、设备状态、边缘节点 | 温湿度数值、在线率、推理帧率 | MQTT上报、边缘采集器 |
画完这张地图,你才会发现哪些地方完全裸奔。比如很多团队服务器监控做得很好,但现场环境设备的温湿度没有管,夏天机房高温把设备烤挂了才发现;或者业务层没有任何监控,接口慢了一小时都没人知道。
2.2 核心指标怎么选:USE法和RED法
有了监控地图,接着要解决“到底测哪些指标”。这里我强烈推荐两个方法论,都是业内验证过很多年的。基础设施层用USE法:利用率(Utilization)、饱和度(Saturation)、错误率(Errors)。翻译成人话就是:资源用了多少、是不是快满了、有没有出错。服务器核心就三个问题,CPU打满没有、磁盘还有多少、网络有没有丢包。饱和度尤其重要,比如CPU平均80%不一定出问题,但运行队列一长,说明已经饱和了,要开始警惕。
服务层用RED法:速率(Rate)、错误(Errors)、耗时(Duration)。对应到接口上就是每秒请求数、错误比例、P95延迟。这三个指标能覆盖大多数服务健康度问题。我一般建议新接入一个服务时,先只选5到8个核心指标,不要贪多。比如接口监控选QPS、P95延迟、错误率;服务器选CPU使用率、内存余量、磁盘使用率、TCP连接数。指标选多了,看板密密麻麻,人反而会漏掉真正重要的变化。
选好指标之后,无论是Zabbix配置监控项,还是Prometheus里写采集规则,本质上都是把这张指标清单固化成机器可读的配置。指标清单是设计层面的事,工具配置是执行层面的事。我见过不少人一上来就研究Zabbix监控项怎么写,结果问他要监控什么业务,支支吾吾答不上来,方向就反了。
2.3 工具选型:开箱即用还是定制组合
工具选型是另一个容易纠结的点。我们的经验是:开箱即用比大而全更重要,但也要避免堆工具。当前几个常见的方案我都用过,简单聊聊:
Prometheus+Grafana是云原生和容器场景的事实标准,灵活、生态丰富、社区模板多,适合对性能指标和告警规则要求高的团队。Zabbix更偏传统网络设备和服务器的监控,胜在自带告警、自动发现、Agent体系成熟,在很多传统行业机房里依然是主力。夜莺监控这类开箱即用的一体化平台,国内团队用起来上手快,界面和告警管理贴合习惯,适合不想从零拼装的团队。单机排查时我会用nmon或者MobaXterm的资源监控页面,快速看一眼CPU、内存、网络,比登录平台快得多。
工具的选择逻辑不是哪个强就用哪个,而是哪个能覆盖你80%的场景且大家愿意用。我们有一个项目同时用了Prometheus和Zabbix,因为一部分设备只支持SNMP,用Zabbix接入最省事;另一部分容器化服务则是Prometheus原生支持。两个工具能覆盖就没必要硬凑五个。
还有一类特定用途的监控页面,比如Druid连接池监控、Drupal状态页、前端Vue项目编译过程的监控,甚至开发调试窗口的监控模式,不一定都要搬进统一平台。它们只需要一个展示入口即可,把这些页面链接汇总到一个导航页,比每个都搭一套告警体系更实际。记住,工具是服务目标的,目标是让监控能覆盖业务地图,而不是让监控平台本身变成一个新的大麻烦。
2.4 环境监控、嵌入式与边缘AI的特殊指标
普通服务器监控讲完了,说几个特殊场景。环境监控比如食用菌栽培车间这类物联网项目,核心指标和IT监控完全不一样:温度、湿度、CO2浓度、光照强度、风机和加湿器开关状态。这类系统通常要求“监控+控制”联动,湿度超标要自动开加湿器,温度偏高要启动风机。所以监控体系里除了采集指标,还要留出控制指令的下发通道,告警不只是发消息,还要触发执行器动作。
嵌入式设备监控又不一样,资源受限决定了你不能在设备上跑重量级Agent,一般用MQTT等方式把数据汇聚到中心端处理。比如基于STM32之类的智能输液监控设备,上报的往往是点滴速度、液位状态、阻塞告警这些现场信号,网络还不一定稳定。监控平台的重要设计点就变成了弱网补传、断线重连、数据时序对齐——设备端本地缓存数据,网络恢复后按时间戳补传。
边缘AI部署的监控也很容易翻车。比如用YOLO这类模型做边缘部署,经常有人抱怨误检率高,上来就想调模型。但你把推理帧率、置信度分布、输入图像分辨率、光照强度这些指标拉出来看,往往会发现误检集中在夜间或者低置信度区间。这就不是模型一个问题,而是硬件、场景、模型三者的匹配问题。监控系统这时候就得额外统计置信度分布曲线,按阈值段统计误检率,才能定位到真正的环节。
3. 最小可用监控平台搭建实录
3.1 采集层:Prometheus与node_exporter的最小部署
工具和指标都定了,就可以动手搭平台。我们内部最常用的组合是Prometheus+Grafana+Alertmanager,这套配起来快,社区物料也多。最小可用的采集层,其实就是一台Prometheus服务器加若干node_exporter节点。
部署步骤很简单,不细说都会:在目标服务器上解压node_exporter,后台启动,默认监听9100端口。Prometheus端在配置文件里的scrape_configs字段加上目标地址,重载一下配置就完成采集了。首次接入时,可以用如下命令确认采集是否正常:
# 确认目标exporter指标端点能访问 curl http://<目标IP>:9100/metrics | head # 确认Prometheus能看到目标节点 # 浏览器打开 Prometheus 的 /targets 页面,检查状态是否为 UP这里我要多提一句:很多故障其实不在标准指标里,而在进程和日志里。进程突然没了、定时任务没跑、日志里疯狂报错,这些也要纳入监控范围。Prometheus有exporter可以采集进程状态,也可以把定时任务执行结果写进文本文件,用textfile collector上报。日志侧我习惯配上Loki或者Filebeat,把关键日志集中起来,告警触发时直接翻日志定位,省得满服务器找线索。
3.2 可视化与告警:Grafana看板和告警规则配置
采集上来之后,最直观的工作是配Grafana看板。你可以导入现成的模板,比如node_exporter全量监控模板,导入后基本能看个大概。但我建议不要只用模板,至少要按自己的指标清单改一遍,把不关心的面板删掉,把关键指标放到最显眼的位置。好的看板不是数据越多越好,而是人看到之后能在三秒内判断系统是否健康。
告警规则是监控真正起作用的关键。规则设计上,要避免“一抖动就告警”。比如CPU使用率,我喜欢设置连续5分钟大于90%才触发告警,而不是瞬时值。磁盘使用率设置在85%告警,但不同分区要分别对待,根分区和数据分区的重要性完全不一样。Prometheus里这类规则用PromQL写,核心是时间范围窗口加触发条件。看板配好了,规则写好了,剩下的就是告警通知。
3.3 通知路由:Alertmanager分级推送与抑制
告警通知最怕两件事:刷屏和漏报。Alertmanager里可以做两件事来解决——路由和抑制。路由是按照告警标签把不同类型的告警分发到不同接收人。比如基础设施告警发值班群,业务告警发业务负责人群,P0级别的走电话通道。抑制规则是让同类告警只发一条,高优先级告警触发时自动抑制低优先级告警。
举个例子,磁盘写满之后会导致几十个服务同时报错,如果没有抑制规则,那一晚上告警群就炸了。配了抑制规则之后,磁盘告警会压住那些派生出来的服务告警,值班人员只需要处理根因,恢复后其他告警自然消失。Alertmanager的配置用路由树表达,我贴一个最小示例,只有一级路由:
route: group_by: ['alertname', 'instance'] group_wait: 30s group_interval: 5m repeat_interval: 4h receiver: 'default' routes: - match: severity: 'critical' receiver: 'page'配置里group_by是聚合维度,把所有相同告警名和实例的告警合并成一条;group_wait是首次等待时间,避免多个告警同时到达时一条条发;repeat_interval是重复告警的间隔,一般设置成4小时,否则同一个问题会反复震铃。这套东西调好了,告警体验可以好到让人忘记以前被刷屏支配的恐惧。
3.4 长期运行要考虑的存储与高可用
最小可用的平台搭好之后,运行一两个月就会遇到新问题:Prometheus本地存储涨得飞快。默认情况下,Prometheus把所有采集数据存在本地磁盘,时间长了磁盘直接被打满。我们的做法是给数据分层:热数据保留在Prometheus,时间久的数据或者聚合后的数据放到对象存储长期保留。如果想减少折腾,也可以用VictoriaMetrics这种支持水平扩展和压缩的存储,兼容PromQL,迁移成本很低。
还有一件事必须做:监控自身也要监控。Prometheus所在机器磁盘满了、Alertmanager挂了、Grafana连不上数据源,这些问题如果不被监控,整个监控体系就等于裸奔。我们会在另一个独立节点上部署一个小型探针,定时探测监控平台的关键端点,挂了就电话通知,防止监控平台本身成为故障盲区。
4. 事态流程怎么定:从告警分级到复盘闭环
4.1 告警分级:不是所有告警都要半夜爬起来
事态流程的第一步是定分级。没有分级,所有告警都是最高优先级,值班的人要么绷着神经睡不好,要么破罐破摔直接忽略。我们采用P0到P3四级分类,核心原则是“影响用户和业务的程度决定响应速度”。
| 级别 | 定义 | 示例 | 首次响应时限 | 目标处置时限 |
|---|---|---|---|---|
| P0 | 核心业务完全不可用 | 支付链路全挂、主站点宕机 | 15分钟 | 2小时 |
| P1 | 主要功能受损,有替代方案 | 登录失败率超过50%、接口大面积超时 | 30分钟 | 4小时 |
| P2 | 局部功能异常,影响有限 | 单个非核心服务报错、某区域设备离线 | 4小时 | 1个工作日 |
| P3 | 一般性问题,可计划处理 | 监控看板数据延迟、非核心指标异常 | 下一个工作日 | 3个工作日 |
分级定出来之后,值班的人看到告警第一眼就知道要不要爬起来。P0和P1必须马上动,P2可以在早上处理,P3甚至可以放到计划维护窗口。这里还有一个细节:分级不是固定的。同一个告警在业务高峰期和凌晨,级别应该不一样。比如登录接口错误率在白天和深夜,影响面完全不同,规则配置时要注意时间维度。
4.2 标准处置七步法:从确认到记录
告警触发之后,处置动作必须有标准顺序,否则大家各自发挥,最容易乱。我们经过几轮故障洗礼,沉淀出一套七步法,每一步都有明确动作:
第一步,确认告警真实性和影响范围。收到告警先看趋势是刚刚开始还是已经持续了一段时间,确认服务真的不可用还是监控误报。第二步,指定第一响应人。值班者就是第一响应人,不需要等谁批准,P0告警值班者直接开始处置。第三步,隔离故障。先止损,防止影响扩散。比如数据库连接池被打满,先重启连接池或摘掉故障节点,再慢慢查原因。 第四步,排查原因。按“日志→指标→变更记录”顺序找线索,看最近有没有发布、有没有改配置。第五步,实施恢复。优先让业务先恢复,而不是一定要找到根因才能恢复。先重启、回滚或者切换流量,让用户能用再说。第六步,验证并通知利益相关方。恢复后至少要观察一段时间,确认指标稳定,然后把结果同步给业务方和管理层。第七步,记录时间线。所有操作步骤、时间点、现象变化,一条条记下来,为复盘留素材。
这七步里最容易跳步的是第三步和第七步。新手容易拿到告警直接去翻日志,忘了先隔离;老手容易在恢复后懒得记录,结果复盘时时间线全是模糊的。手册里我会强调:记录不是测试题,是复盘的唯一依据。
4.3 升级机制:一线、二线、三线怎么衔接
事态流程里必须有清晰的升级机制,否则P0一发生,一线扛不住也不知道找谁。我们定义了三线结构。一线是当前值班的人,负责第一时间接告警、确认影响、执行初步处置,比如重启服务、切换流量。二线是各服务负责人,一线在限定时间内搞不定就必须升级到二线,通常二线有更深的技术背景,能分析日志、查代码、调配置。三线是专家或厂商支持,一般是疑难杂症、涉及底层框架或硬件设备问题时才启动。
升级条件要写死,不能靠人情。我们规则是:一线收到P0告警后5分钟联系不到二线,或者15分钟内没能控制住局面,必须升到P0应急小组;P1告警超过30分钟未恢复,也要升级。写死不等于没有人情味,而是避免大家不好意思打电话,最终把小事拖成大事。
值班交接同样重要。交班文档至少要包含当前告警状态、已做操作、未完成事项、可疑根因。口头交班一定会漏,我踩过好几次坑,交班后接班的同事说“没人告诉我这个事”,后来强制要求写交接单才解决。
4.4 复盘闭环:让下一次故障更短
处置完不是结束,复盘是事态流程极度重要的一环。复盘会最容易开成追责会,这是大忌。我习惯用时间线法来复盘:把故障前后所有关键时间点列出来,包括告警时间、响应时间、定位时间、恢复时间,然后逐个环节找延迟点。哪一步耗时最长,哪一步出现了信息断层,哪个环节做得特别好,都要有结论。
接着用连续追问的方式挖根因。故障的直接原因往往不是根因,比如“Nginx挂了”是直接原因,“配置里写错了上游地址”是中间原因,“发布流程缺少预发验证”才是根因。回答不够深就继续追问,直到找到能通过流程改进来消除的环节。
复盘产出的改进项,必须有负责人和截止时间。没有期限的改进项等于没有改进。我们要求复盘后一周内更新手册,把这次故障的处置步骤、排查线索写进手册的故障速查章节。只有这样,每次故障才不是白白挨一次打。
5. 监控运维常见问题排查与避坑技巧
5.1 告警风暴:几十条告警如何压成一条
告警风暴是每个值班员都会遇到的噩梦。现象很典型:磁盘满了,然后数据库开始报错,接口开始超时,前端开始报5xx,最后监控平台里冒出一百多条告警。如果Alertmanager没有配置好,手机会响一整晚。
我们的处理经验有三条。第一条,聚合。按告警名和实例分组,把同类告警合并成一条,加上时间窗延迟,不要在30秒内把同源告警全部发出来。第二条,抑制。高优先级的告警要能压住低优先级的派生告警,磁盘满了引发的服务报错不需要逐条推送。第三条,静默。已经确认是已知故障或者正在维护期间,直接对该告警设置静默时间段,别让它继续刷屏。
告警风暴还有一个治理方向是阈值合理性。如果某个告警每周都要响几次,但每次都没啥事,那不是业务问题,是告警规则设计问题。要么调阈值,要么把这条告警降级,保持告警的“稀缺性”,才保证它响了大家会重视。
5.2 误报与漏报:动态阈值和边缘AI误检
固定阈值必然带来两个问题:设得低容易误报,设得高容易漏报。比如CPU使用率告警设成90%,平时没有业务高峰的团队可能一个月都不响;但大促期间冲到95%都是正常的,瞬间就哗哗一片告警。解决方向是动态基线:基于历史数据算出正常波动范围,告警规则跟踪相对变化而不是绝对数值。比如周同比、月度环比,或者滑动窗口的平均值加减标准差,都能一定程减少误报漏报。
边缘AI场景的误检问题也可以从监控角度来治理。用YOLO做边缘部署时,误检率高不一定是模型参数不好,有可能是输入图像质量差、光线变化剧烈、推理帧率过低导致跳帧。我们的做法是在监控看板上同时展示置信度分布、帧率和检测结果的实时同步,通过置信度分布曲线能看到误检集中在哪个置信度区间,据此调整置信度阈值或者触发夜间模式。监控不是只盯着系统资源,业务特征指标一样要盯。
误报还有个坏处是“狼来了”。值班员被无意义的告警折腾几次之后,看到真告警也会犹豫,这种信任损失是非常大的。所以我在手册里专门写了一条原则:宁可暂时漏一个告警,也不让值班员对告警系统失去信任。不可靠的告警系统,比没有告警更危险。
5.3 存储成本:监控数据膨胀怎么治
监控平台运行半年之后,注意指标数据的增长。采集频率太高是大忌,所有指标都是5秒采集一次,数据量可能大到根本存不住。我们内部定了一套数据分级方案:核心指标保持15秒采集频率,普通指标1分钟,低价值指标5分钟。历史数据则通过降采样和聚合来处理,超过30天的高精度数据在对象存储归档供查询,热库只保留最近30天的数据。
如果Prometheus本地存储已经吃紧,可以考虑迁移到维多利亚之类的兼容方案,它们对压缩和磁盘占用控制更好。还有一个容易被忽略的:有些指标压根不需要长期保存,比如临时排查用的nmon采集数据,导出成文件之后就不需要再进平台。这里说一个实用技巧:ARM环境下编译nmon有问题时,可以直接下载为准静态编译的二进制,或者用系统中的perf和sar工具替代,一样能拿到CPU和内存数据。
MobaXterm上打开资源监控页面,也是临时排查的好帮手。连接上服务器后在工具栏点开资源监控,能同时看到CPU、内存、网络、磁盘的实时变化,适合快速判断瓶颈,又不会对服务器造成额外的存储负担。
5.4 环境监控与嵌入式设备的常见坑
环境监控和嵌入式场景有自己的一套坑,跟纯服务器监控差异很大。第一个坑是弱网断点。现场设备网络不稳定,数据传不上来时会丢一段时间,如果中心端直接按上报时间入库,时间线就会乱。解决办法是设备端本地缓存,网络恢复后按时间戳补传,中心端的时序数据库要能正确处理乱序写入。
第二个坑是设备时钟偏移。很多嵌入式设备没有NTP校准能力,时间越跑越偏。如果所有数据都按设备本地时间打点,那告警时间线是乱的,前后顺序都对不上。我们的办法是网关统一校准时间戳,设备上报只作为原始数据,入库时以网关收到时间为基准生成时间戳。
第三个坑是电源问题。现场设备断电会导致监控数据突然消失,但你没法确定是设备故障还是断网。比较好的做法是给关键的监控设备配独立供电,并让断电事件本身也能上报。这里可以提一嘴,比如基于STM32的智能输液监控设备,一旦断电,医生那一端必须有告警,否则就是安全事故。电源监控不是可有可无的辅助功能,在物联网场景里它本身就是核心监控项。
环境监控数据还有一个长期难题:传感器漂移。温湿度传感器用久了读数会慢慢偏移,一开始看不出问题,过一个月发现车间实际温度比显示高两三度,那整个环境控制逻辑就全错了。所以环境监控的运维流程里必须包含定期校准,至少一个季度做一次传感器对比测试。
5.5 日常排查技巧速查表
最后整理一些日常会用到的排查技巧,都是实测下来很顺手的招,可以用表格快速查阅。
| 场景 | 推荐手段 | 补充说明 |
|---|---|---|
| 单机性能快速摸底 | nmon、MobaXterm资源监控 | 无需装重型Agent,看实时曲线很直观 |
| 查看端口和连接数 | ss -s / ss -lntp | 替代netstat,速度快,信息更全 |
| 进程被异常杀死 | journalctl -u 服务名 或 dmesg -T | 先看系统日志是否OOM,再看应用日志 |
| 定时任务没执行 | 查看cron日志、/var/spool/cron | 注意环境变量问题,脚本内要写全路径 |
| 日志快速定位 | grep -E "ERROR | Exception" 配合时间窗 |
| webhook通知测试 | curl -X POST 带JSON体 | 告警没收到时,先单独测webhook通不通 |
| Prometheus抓取异常 | /targets页面查Up状态 | 很多平台采集不到数据,是exporter没起来 |
排查思路比命令本身更重要。我一般按照先看告警趋势、再看变更记录、最后才翻日志的顺序来排查。很多故障的根源是最近一次变更,无论是发版还是改配置,先顺这个思路查,命中率能高不少。
监控和事态流程手册这个东西,写到今天已经成了我们团队判断故障成熟度的标尺。工具换过,模板换过,看板样式改了一轮又一轮,但“监控发现问题、流程保证处置、复盘促进改进”这个闭环一直没有变。如果你正准备写这么一本手册,我的建议是从最小的闭环开始:先选三个你最关心的指标,配上一条告警,再为这条告警写一段处置步骤,然后拉上同事演练一遍。这比一次性设计几十个页面、写几十条流程有用得多。等这条最小闭环跑顺了,再一步步扩展,手册自然会长成你想要的样子。