操作手册 · 监控与可观测

待环境验证

Linux 主机 CPU、内存与磁盘只读排障

从业务延迟与主机时间线出发,结合 CPU 排队、内存压力、文件系统容量和设备延迟,建立低扰动的 Linux 资源排障流程。

LinuxPrometheus监控告警
阅读导引 · 理解后再操作

这篇知识解决什么问题

资源排障应解释任务在什么时间因什么资源等待,而不是寻找最高的百分比。本篇把宿主机与容器视角、累计值与区间值、容量与延迟分别校准,再用有限采样关联业务变化,形成可被下一位处理人支持或推翻的瓶颈假设。

先校准采样位置和统计时间

同一资产可能同时有宿主机、容器和受限 CPU 视图,系统工具还可能混用启动以来累计值与区间采样。应记录命名空间、可见资源、工具版本和观察窗口,再把曲线与业务延迟对齐。缺失接口应写不可用,不能为了完成表格把缺少的压力数据填成零。

资源繁忙和任务受阻不是同一个结论

高使用量可能是正常生产性工作,真正的容量判断还需要队列、等待、错误与业务影响。CPU、内存回收和 IO 压力应相互印证,空间不足与设备延迟又是不同问题。先用小范围样本定位类别,主机证据不能解释业务时及时回到应用或依赖层。

进入文章正文
关联架构图解7 个组件 · 点击展开

参考图用于理解 node_exporter、Prometheus 和看板如何提供主机趋势,并提醒采集视角需要核对。本篇在此基础上阅读已有进程和系统证据;图未展开 cgroup 层级、块设备堆叠、应用线程及依赖网络。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

主机指标到责任通知的采集架构

node_exporter 暴露受控主机视角,Prometheus 主动抓取与计算规则,Grafana 查询看板,Alertmanager 按稳定资产标签通知值班人员。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

主机指标到责任通知的采集架构:组件关系图node_exporter 暴露受控主机视角,Prometheus 主动抓取与计算规则,Grafana 查询看板,Alertmanager 按稳定资产标签通知值班人员。 node_exporter → Linux 主机:读取系统指标;Prometheus → node_exporter:抓取 /metrics;资产与责任标签 → Linux 主机:核对身份与角色;资产与责任标签 → Prometheus:发现与稳定标签;Grafana → Prometheus:查询资源趋势;Prometheus → Alertmanager:发送规则事件;Alertmanager → 值班人员:通知与恢复。箭头说明见下方流向解读。
逻辑参考图,不代表监控组件已部署;实际挂载视角、额外采集权限、阈值和通知时限需以目标主机测试结果为准。

Linux 主机

服务组件

提供 CPU、内存、挂载点、inode 与网络等资源事实;主机身份、角色和特殊挂载应在接入前登记。

全部组件职责 7 个组件
Linux 主机
提供 CPU、内存、挂载点、inode 与网络等资源事实;主机身份、角色和特殊挂载应在接入前登记。
node_exporter
以专用身份读取启用的采集器数据并暴露指标;容器化运行时需确认宿主机目录与命名空间视角。工具介绍 node_exporter
资产与责任标签
为每台主机分配稳定身份与负责人,限制高基数标签,临时地址不能作为唯一长期关联依据。
Prometheus
定时抓取 exporter 并保存时序;采集超时、序列数量、保留期和资源预算需要一起评审。工具介绍 Prometheus
Grafana
查询主机趋势并标明单位、时间窗口和无数据状态,提供从业务组到单机与排查文档的入口。工具介绍 Grafana
Alertmanager
对采集失联、磁盘和持续资源压力等规则事件分组通知,维护静默需有期限。工具介绍 Alertmanager
值班人员
按告警里的主机、挂载点和责任信息定位,分别确认触发、接收与恢复消息,不以规则存在代替送达。
流向解读 7 条连接
  1. 1

    node_exporter Linux 主机

    观测 / 查询 · 读取系统指标

    exporter 从当前可见的操作系统接口读取指标,额外采集器权限按最小需要授予。

  2. 2

    Prometheus node_exporter

    观测 / 查询 · 抓取 /metrics

    请求由 Prometheus 发起,exporter 返回指标;不要将图解释为主机主动推送到 Prometheus。

  3. 3

    资产与责任标签 Linux 主机

    控制 / 管理 · 核对身份与角色

    表示实施前的资产核对关系,不是自动修改主机身份的服务。

  4. 4

    资产与责任标签 Prometheus

    控制 / 管理 · 发现与稳定标签

    由审阅后的发现配置关联责任和环境,避免重复目标和无界标签。

  5. 5

    Grafana Prometheus

    观测 / 查询 · 查询资源趋势

    面板查询需解释计数器速率、内存口径及挂载过滤,无数据与零值分开显示。

  6. 6

    Prometheus Alertmanager

    观测 / 查询 · 发送规则事件

    Prometheus 按持续条件生成告警,后续分组和静默不应隐藏无关主机的真实故障。

  7. 7

    Alertmanager 值班人员

    观测 / 查询 · 通知与恢复

    按资产责任路由送达并测试恢复消息,实际时限需要端到端记录。

故障域与操作边界

宿主机与容器视角不同

exporter 能读取的挂载和命名空间决定指标含义,容器内端点正常不能证明其反映整机;指标需与资产基线抽样比对。

主机监控不是应用监控

资源水位不能替代业务请求、进程和日志证据;采集链路中断也不等于主机已宕机,故障分类与责任路由应分别处理。

架构依据与版本核对 2 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与版本边界

本手册用于 Linux 主机响应变慢、资源告警或吞吐下降时的第一轮只读诊断,配合「Linux 主机监控」场景使用。示例按 GNU/Linux、procps-ng 与 sysstat 常见接口编写;BusyBox、容器内视图和不同发行版可能缺少选项,先核对本机帮助。PSI 需要内核相应配置,文件不存在应标记为不可用,不能当成压力为零。本文未在你的目标主机执行,验证状态为待验证。

前提、目标与采样预算

先确定主机资产标识、业务进程、故障开始时间、时区、业务延迟和最近变更。优先复用既有监控中的历史曲线,再在授权主机短时取样;一次异常截图不能代表持续瓶颈。诊断账号只需相应监控读取权限,不临时安装软件,不提权读取无关进程环境变量、命令行密钥或用户文件。日志和进程名离开值班通道前应脱敏。

每次先执行少量、有限次采样,间隔由故障压力和采集规范决定。下列 1 5 是一次短观察,不应被直接包装成永久高频任务。若命令不存在,记录缺失并使用既有监控,安装工具应另走变更。

第一步:固定主机与时间基线

date -u '+%Y-%m-%dT%H:%M:%SZ'
hostname
uname -r
uptime
nproc
vmstat 1 5

记录采样是否在宿主机或容器内,以及 nproc 可见 CPU 是否受 CPU 亲和性、cpuset 等约束。uptime 中负载不是 CPU 使用率;vmstat 第一组通常是开机以来的统计,后续组才对应采样间隔。将运行队列、阻塞任务、交换活动与业务异常时间对齐,暂不据单个数字判定“必须扩容”。

第二步:区分 CPU 竞争与等待

mpstat -P ALL 1 5
pidstat -u 1 5
ps -eo pid,ppid,comm,stat,pcpu,pmem --sort=-pcpu | head -n 21

用分 CPU 视图识别单核热点,用进程采样找到同一时间正在消耗 CPU 的对象。ps 的 CPU 占比不是与前两个命令完全相同的瞬时口径。若业务变慢同时运行队列增长、多个核忙且 CPU 压力升高,优先调查工作量、线程竞争或限额;若 CPU 有空闲但阻塞任务、IO 等待同步上升,继续检查存储和内存,不能把所有高负载都归为计算不足。虚拟机的 steal 增长应连同宿主侧证据交给平台团队。

第三步:核对可用内存和回收压力

free -h
awk '/^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree):/' /proc/meminfo
ps -eo pid,comm,rss,vsz,pmem --sort=-rss | head -n 21

MemAvailable 是内核对无需交换即可供新应用使用内存的估计,不能仅凭 MemFree 较小断定内存耗尽。RSS 排名用于定位进程,不宜直接相加当作唯一物理内存账本;共享页、缓存以及容器限额会影响解释。把 RSS 增长、swap in/out、OOM 事件和业务延迟一起分析,区分长期增长、短时批处理与缓存变化。相关字段定义见 Linux /proc 文档

若主机已提供 PSI,可只读观察:

for OPS_RESOURCE in cpu memory io; do
  if test -r "/proc/pressure/$OPS_RESOURCE"; then
    printf '\n%s pressure\n' "$OPS_RESOURCE"
    sed -n '1,2p' "/proc/pressure/$OPS_RESOURCE"
  fi
done

some 表示部分任务等待该资源的时间比例;内存或 IO 的 full 可帮助识别更严重的整体停滞。系统级 CPU full 不能按内存 full 的方式判断。对比 avg10avg60avg300 趋势和业务基线,不设置适用于所有主机的固定阈值。字段语义见 内核 PSI 指南

第四步:区分空间、inode 与设备时延

将示例路径替换为已经确认的应用目录,不使用整个根目录递归扫描:

OPS_APP_PATH='/REPLACE_WITH_CONFIRMED_APP_PATH'
df -hT -- "$OPS_APP_PATH"
df -i -- "$OPS_APP_PATH"
iostat -xz -y 1 5

df 针对路径所在文件系统核对块空间和 inode,两者需要分别验收;同一挂载点的空闲与应用配额、保留空间也可能不同。iostat-y 跳过开机累计首报;await 包含排队与服务时间,应与设备类型、历史吞吐和队列共同看待,NVMe 或阵列上不能仅靠 %util 接近某个值证明饱和。GNU dfsysstat iostat 分别解释这两类口径。

空间紧张时先查已知业务目录的容量曲线和保留策略。需要 du 时仅扫描经确认的小范围目录,并明确 IO 预算;进程持有已删除文件、快照和容器层占用可使 dudf 不一致。不要为了让告警消失而删除日志或重启进程。

判断分支与下一步交接

  • CPU 持续繁忙而 IO、内存压力较低:交给应用负责人比对请求量、热点线程和并发限额,是否采集性能剖析另行审批。
  • MemAvailable 下降且回收、交换、OOM 与延迟相关:确认进程或 cgroup 范围及新增负载,再评估限流、容量或代码问题。
  • 空间或 inode 紧张但设备延迟正常:优先确认数据归属、增长源及配额;“空间不足”不是“磁盘性能不足”。
  • 设备延迟、队列与 IO 压力共同升高:按实际挂载设备交接存储团队,核对云盘限额、阵列事件或后台任务。
  • 主机指标正常但业务仍异常:回到网络、依赖和应用层,避免为了得到主机根因而扩大无关扫描。

验收、停止与恢复边界

诊断完成应能说明受影响时间、资源类别、证据可信度和尚未排除的原因,而不是仅给出“CPU 高”。后续处置由授权负责人执行,验收需覆盖代表性负载下的业务延迟、错误率、资源趋势和告警恢复。只读查询本身没有配置回滚;诊断中不执行 drop_caches、删除数据、关闭 swap、修改 sysctl 或强制终止进程。若取样明显加重延迟、出现 IO 错误或 OOM 连续发生,停止扩大取样范围并升级事故响应,恢复方案应来自对应变更单。

案例证据记录模板

  • 事件编号、主机资产标识、采样位置、系统与工具版本:待填。
  • 业务症状、开始时间和时区、最近变更、受影响范围:待填。
  • 同窗口 CPU、内存、IO、文件系统与进程证据:填写时间戳、来源和脱敏结果。
  • 当前假设、支持与反证、仍缺少的观测:待填。
  • 下一步负责人、变更授权、停止条件及验收窗口:待填。

不要将本文示例直接填写为已执行记录;没有实测数据时保留待验证状态。

相关站内内容

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 业务延迟上升且系统负载偏高,但汇总 CPU 并未全部繁忙,或只有单核、单进程在同一时段明显变化。

    只读核对
    读取既有分 CPU、运行队列、进程和 CPU 压力记录,对照采样口径、容器限额与同窗口 IO 等待。
    如何判读
    高负载可能包含等待而非纯计算需求;单核热点、限额和存储阻塞需要不同证据,不能只依据负载值建议扩容。
  2. 空闲内存较少,业务偶发长停顿或 OOM,但缓存、可用内存和进程 RSS 的趋势并不完全一致。

    只读核对
    只读核对同窗口 MemAvailable、进程 RSS、交换活动和已有 OOM 事件,区分宿主机与 cgroup 范围及压力接口可用性。
    如何判读
    低空闲量本身不证明耗尽;需将可用估计、回收和受影响进程关联,RSS 排名也不能直接相加为完整物理内存账本。
  3. 应用写入失败或变慢,磁盘空间图与设备利用率给出不同线索,业务目录可能位于容器层、阵列或独立云盘。

    只读核对
    读取确认路径所在文件系统的块空间与 inode,并对照实际设备的区间延迟、队列和现有存储事件,限定目录范围。
    如何判读
    应先区分容量、inode、配额与 IO 性能;设备类型和堆叠关系影响口径,不能只凭利用率百分比判断饱和。
常见误区与判断边界 2 项

清缓存或重启会改变待解释的现场

这些动作可能改变内存、文件持有和应用状态,既丢失证据,也不一定解决原有压力。资源诊断应保持短时、有限、只读取样,不新增永久高频任务。若采样明显增加延迟或错误,应停止扩大范围,把现有证据交给对应业务与基础设施负责人。

一张峰值截图不能证明持续瓶颈

备份、批处理、正常高峰和统计口径都可能造成局部峰值。没有业务影响时间、持续性和对照样本,难以判断它是原因还是伴随现象。交接时写明当前假设及反证,缺少主机级解释就回查网络和下游,不为得到结论而扩大无关扫描。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 记录资产、系统和工具版本、宿主机或容器采样位置、可见 CPU 及资源限制,标明累计与区间统计的差异。
  • 把业务延迟、错误与近期变更放在统一时区,保留有限 CPU、队列、内存和 IO 样本,注明无法取得的接口或时间段。
  • 保存业务路径到挂载与设备的对应关系,分别提供块空间、inode、容量增长和设备时延,避免混用文件系统与设备口径。
  • 列出支持与推翻瓶颈假设的证据、采样负载预算和未排除依赖,交接下一步处理人及任何安装、剖析或变更的授权要求。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。