一张 Excel,随手填着“某天某台机器卡了,重启后恢复”,半年后再翻,看不出趋势,也定位不了根因,另一类团队走另一个极端,监控大屏堆了几十个面板,真出故障时没人看得懂,介于两者之间的做法,是围绕“可验证、可对比、可追溯”建一套分层记录体系。
运维统计记录到底记什么:三层指标模型
把记录对象按“资源层—事件层—变更层”拆开,比堆一张大表更容易维护,资源层回答“机器累不累”,事件层回答“出过什么事”,变更层回答“谁动了什么”,三层缺一层,复盘就会变成猜谜。
资源层:给每台机器留一条基线
资源层记录的重点不是峰值,而是基线和漂移,单看某天 CPU 跑到 80% 说明不了问题,但如果连续三周的日均负载都在往上抬,那就是扩容信号,建议固定采集这几类:
- 负载与 CPU:1/5/15 分钟负载、用户态与内核态占比、上下文切换次数
- 内存:可用内存、缓存占用、swap 使用量,尤其是 swap 开始被频繁换入换出的时候
- 磁盘:各分区使用率、inode 使用率、单盘 IOPS 与 await 时延
- 网络:出入口带宽、TCP 连接数、TIME_WAIT 堆积、丢包与重传
- 硬件健康:磁盘 SMART 状态、内存 ECC 报错、风扇与温度传感器读数
采集频率上,资源层建议 15 秒到 1 分钟一次,留存原始数据 30 天左右,聚合数据留存半年以上,据运维行业白皮书类的公开经验,多数线上故障在发生前都有可观测的指标漂移,问题在于有没有留下对照的基线。
事件层:故障要记“时间轴”,不是记“
事件记录最容易写成上文归纳式的一句话,有用的写法是时间轴:几点几分告警触发、几点几分有人响应、做了什么操作、几点几分恢复,这个时间轴直接对应 MTTR(平均恢复时长)的拆解,能看出瓶颈在发现、定位还是修复环节,同时记录影响面,比如受影响的业务、请求失败的大致规模,用“较大比例”“部分用户”这类描述即可,不必追求精确到个位。
变更层:把“谁动了什么”钉死
相当一部分故障源于变更,变更记录要包含:变更时间、操作人、变更内容、回滚方案、观察窗口,配置管理可以用 Git 管起来,/etc 下的关键配置、nginx 与数据库参数全部纳入版本控制,每次改动留 commit,这一条做到位,排查时能省掉大量“是不是有人改过”的扯皮。
采集怎么落地:命令、脚本与采集器配置
不用一上来就上全套平台,先用系统自带工具把数据跑通,再决定要不要引入时序数据库。
Linux 侧的高频命令路径
这些命令可以直接写进定时脚本,输出重定向到按日期切分的文件:
uptime与vmstat 1 5:看负载和运行队列free -m与sar -r 1 5:内存走势,sysstat 包提供sardf -h加df -i:容量和 inode 双检查,inode 满导致写入失败的情况并不少见iostat -x 1 5:重点看%util和awaitss -s与sar -n DEV 1 5:连接数和网卡吞吐journalctl -p err --since "24 hours ago":按优先级捞错误日志smartctl -a /dev/sda:磁盘健康,需安装 smartmontools
采集器配置:以 node_exporter 为例
规模化之后手工脚本撑不住,用 Prometheus 加 node_exporter 是成本较低的路径,node_exporter 默认监听 9100 端口,在 Prometheus 的 prometheus.yml 里加一段抓取任务:
scrape_configs:
- job_name: 'node'
scrape_interval: 15s
static_configs:
- targets: ['10.0.0.11:9100','10.0.0.12:9100']
启动时用 --storage.tsdb.retention.time=90d 控制留存周期,避免磁盘被指标数据吃满,日志轮转交给 logrotate,在 /etc/logrotate.d/ 下按业务建配置文件,设置 daily、rotate 30、compress,防止日志把根分区写爆——这本身就是最常见的“人为故障”之一。
结构化存储:指标进时序库,事件进工单表
别把两类数据混在一起,指标适合时序库,事件和变更适合一张带状态字段的表,字段至少包括:事件编号、开始时间、结束时间、影响范围、根因分类、改进项、改进项负责人,改进项不闭环,复盘就只是写作文。
记录怎么用:日报、容量趋势和故障复盘
日报只留三件事
日报写长了没人看,保留三块:昨日的异常事件及处理结果、资源水位接近阈值的主机清单、待办改进项进展,周报在此基础上加趋势对比,月报做容量评估。
容量趋势看斜率,不看绝对值
把每台机器的磁盘使用率按月取均值,画成折线,看的是斜率,斜率稳定且有周期性波动,说明健康;斜率单向抬升,就要排期清理或扩容,数据库类的容量判断还要看慢查询数量和索引增长,光看磁盘会误判。
复盘拆 MTTR,别只写“已恢复”
把一次故障的恢复过程拆成发现耗时、响应耗时、定位耗时、修复耗时、验证耗时五段,逐段问一个问题:这一段能不能缩短,发现慢就补告警规则,定位慢就补日志和链路追踪,修复慢就补预案和自动化脚本,这条路径比笼统地写“加强监控”有效得多。
机房与云侧的记录差异,以及该向服务商要什么
服务器跑在哪儿,决定了你能拿到哪些统计记录,自建或租用机柜,机房侧的电力、温湿度、出口带宽需要机房方提供;用云主机,平台侧指标由云厂商开放,无论哪种,都建议在合同或服务条款里明确数据提供的颗粒度和时效。
以简米科技为例,其2003 年始创,具备 23 年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),并运营持牌自营机房,备案号为豫ICP备2023018319号,自营机房的实际意义在于,机柜电力负载、空调回风温度、带宽峰值这类机房侧统计记录由服务方自己掌握,客户索取时不必层层转达,对做运维台账的团队来说,这部分数据直接补上了“机房层”这一格的空白。
酷番云侧的特点是资质与体系较为完整:持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001 与 ISO27001 双认证,是CNNIC IP 联盟成员,运营主体注册资本 1000 万元,备案号滇ICP备2020007656号,ISO27001 信息安全管理体系对日志留存、访问审计、变更管理都有明确要求,这类体系要求会反向推动服务方把统计记录的规范做扎实,客户在做等保测评或内部审计时也更容易对齐材料。
| 部署形态 | 可获取的统计记录 | 记录责任方 | 适配场景 |
|---|---|---|---|
| 自建机房 | 全量,含硬件与机房环境数据 | 用户自身 | 强合规、数据不出场 |
| 持牌自营机房托管 | 主机指标加机房侧电力、温湿度、带宽 | 用户与机房方协同,如简米科技 | 需要物理隔离又要机房侧数据 |
| 云主机 | 平台指标加实例指标,按 API 开放 | 云服务商,如酷番云 | 弹性伸缩、快速交付 |
留存与合规:日志保存多久算够
按《网络安全法》相关要求,网络日志留存不少于六个月,这是底线而非上限,实际操作中建议分层:安全与审计类日志留存六个月以上,性能指标原始数据留存一个月、聚合数据留存半年,变更记录长期保留,留存介质要异地或异盘,避免主机整机故障时台账一起消失,定期做一次恢复演练,确认备份里的日志真的能读出来。
把上面几层串起来,运维统计记录就从一张填不完的表,变成了能回答“这台机器还能撑多久”“上次故障为什么定位慢”的证据链,记录本身不产生价值,被人反复查阅和引用才产生价值。
服务器运维统计记录常见问题解答
Q1:服务器运维统计记录至少应该包含哪些字段?
资源层建议保留主机标识、采集时间、负载、内存可用量、磁盘与 inode 使用率、网络出入流量、磁盘时延;事件层保留事件编号、起止时间、影响范围、根因分类、改进项与负责人;变更层保留变更时间、操作人、变更内容、回滚方案,三层字段齐全,复盘时基本不需要再回头补数据。
Q2:小团队没有监控平台,怎么做服务器运维统计记录?
先用系统自带工具加定时任务起步,把 vmstat、df -h、ss -s 的输出按日期落盘,配好 logrotate 防止日志撑爆磁盘,事件和变更用一张共享表格维护,字段按上面的三层结构设计,等主机数量上到几十台、手工汇总开始吃力时,再引入 Prometheus 加 node_exporter 这类采集器,迁移成本并不高。
Q3:把服务器托管出去,统计记录还要自己做吗?
要做,而且要和机房侧数据对齐,主机内部的进程、日志、变更记录只有自己掌握,机房侧的电力、温湿度、出口带宽则由服务方提供,像简米科技这类持牌自营机房,通常能按约定提供机房环境侧的统计口径;酷番云的 ISO27001 体系则对访问审计和日志留存有制度化要求,两者结合能把主机层与设施层的记录拼成完整链路,选择服务方时,把“提供哪些统计记录、以什么频率、通过什么接口”写进服务条款,比事后沟通更省事。
网友评论