本节摘要:值守生产环境不需要盯着屏幕,需要的是一组看得懂的仪表与一份节奏固定的巡检清单:服务健康、资源水位、请求错误、工作流执行四类仪表,加上日志的三处看点。本节把「值班」从感觉活变成看表活。
5.1 把家安好了,这一节学会值班。运维新手常有的误区是把监控理解成装一套大而全的观测平台——其实值守的头一步是回答「正常长什么样」,答案清楚了,异常自己会跳出来。
给三件事建立基线。资源基线:正常时段的内存与磁盘水位,比如内存稳在六成、磁盘每周涨百分之一以内。业务基线:每天活跃用户量级、关键页面响应的手感、工作流每天的正常执行笔数。日志基线:错误日志的日常噪音量——零错误的系统罕见,重要的是「平时的错误长这样」。基线记在值班手册里,三周后你对异常的直觉会准得让自己吃惊。
四类仪表的看点如下表,每类都给了「去哪看」和「报警阈值怎么定」:
| 仪表 | 去哪看 | 正常样子 | 报警线参考 |
|---|---|---|---|
| 服务健康 | 健康检查接口、容器状态 | 状态就绪、重启次数为零 | 出现重启或未就绪立即处理 |
| 资源水位 | 主机监控或云平台面板 | 内存稳定、磁盘缓涨 | 内存连续高位、磁盘超八成 |
| 请求错误 | 服务端日志、代理访问日志 | 偶发四类错误,几乎无五类 | 五类错误连续出现即排查 |
| 工作流执行 | 工作流中心执行记录 | 每日笔数与基线吻合 | 执行量骤降或失败集中 |
第一处是容器日志,服务端运行的主叙述。启动异常、插件加载失败、接口报错都在这里,查看与过滤的常用命令:
docker logs --tail 200 nocobase # 看最近两百行 docker logs -f --since 30m nocobase # 跟踪最近半小时并持续刷新 docker logs nocobase 2>&1 | grep -i error | tail -50 # 捞最近的错误行 # 预期:错误行带时间戳与请求路径,能直接定位到接口
第二处是代理访问日志:谁在什么时候访问了什么、返回码多少。它回答「用户遇到的是个例还是面」——个别四类错误多是数据问题,连续五类错误多半要值班出手。第三处是工作流执行记录,存在库里、在界面上看,3.1 的排障三步就是在这里展开的;值班时扫一眼当日失败执行的分布,比等业务方来报障体面得多。
每天的值守动作压缩成一份两分钟清单,按顺序过:
每日巡检(两分钟版): □ 健康检查接口返回正常,容器无重启 □ 磁盘水位与昨日相比涨幅正常 □ 昨日错误日志行数在基线内,无新增报错形态 □ 核心流程昨日执行笔数与基线吻合,失败记录已扫过 □ 昨夜的备份任务成功,备份文件大小正常 (每周加做:附件目录同步核对、备份恢复抽查一份到试验环境)
清单的价值在于「不靠记忆」。值班这件事最怕人走茶凉——清单贴在团队协作工具里,谁值班谁打勾,交接班有迹可循。
巡检解决「上班时间」,告警解决「下班时间」。小团队的够用做法是把三类探测接到现成的群机器人上:健康检查失败即报、磁盘超阈值即报、备份任务失败即报。三类探测用一段定时脚本就能实现,思路比工具重要:
# 健康探测脚本骨架(配合定时任务每分钟执行) HEALTH=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:13000/api/health) if [ "$HEALTH" != "200" ]; then # 连续失败才报,避免网络抖动造成误报 echo "$(date) health check failed: $HEALTH" >> /var/log/nocobase-watch.log curl -s -X POST -H 'Content-Type: application/json' \ -d '{"msg":"NocoBase 健康检查异常,请值班同学查看"}' \ https://你的群机器人地址 fi
告警的纪律是「少而准」。每一条告警都必须对应一个明确的处置动作——收到之后知道干什么,而不是先慌再想。处置动作写在告警文案旁边,比如磁盘告警旁标注「查看大文件目录,清理日志或扩容」,让半夜被叫醒的人不用做阅读理解。
⚠️ 常见坑:把日志当成只需要在出事后才看的东西。日志的真正价值在「趋势」:错误行数连续三天缓涨,往往是一场事故的预告。巡检清单里那行「错误日志在基线内」,就是为这个趋势留的观察哨。
💡 关键直觉:监控体系的成熟度不在于装了多贵的平台,在于从异常发生到有人响应要几分钟。小团队用脚本加群机器人,把这个数字压进十分钟,已经赢过大多数团队。
不必一步到位上监控平台,按团队规模分期。第一期就是本节的清单加群机器人,零采购成本,覆盖绝大多数小团队的值守需求。第二期,当实例多到两三台、或值班人开始看不过来时,引入主机监控面板,把资源水位从「手动看」变成「图表看」,告警规则照搬第一期的阈值。第三期,业务量上来后再谈接口耗时统计与业务指标大盘——这时你对「正常长什么样」已经很有感觉,配大盘是水到渠成而不是纸上谈兵。
分期的判断标准就一句话:监控工具跟着值班痛点走,不跟着技术潮流走。第一期已经能把「从异常到响应」压进十分钟,对多数团队这就是合格线;跳过清单直接上大盘,大盘里全是没人认领的图表,那是装饰不是值守。
分期对照(抄进运维规划): 第一期 清单 + 群机器人 零成本 覆盖小团队 第二期 主机监控面板 单机免费方案可满足 多实例适用 第三期 接口与业务指标大盘 需人力投入 业务成型后
告警体系最大的敌人不是漏报,是狼来了。当告警频繁响起而多数无事,值班人开始无视通知——那套体系就名存实亡了。解药三条:第一,每条告警必须对应处置动作,没有处置动作的告警删掉;第二,抖动类误报加连续失败阈值(比如连续三次才报);第三,每月回看告警记录,把「响过但不用动」的告警逐条治理——要么调阈值,要么加过滤。告警数量的健康趋势是递减的:体系越成熟,误报越少,每条都值得人从床上坐起来。
告警月度体检(十分钟): 本月告警总数:____ 其中无需处置:____ 治理清单:告警____ → 调阈值或加条件 → 责任人____ 目标:无需处置占比逐月下降