AI智能摘要
深夜收到服务器宕机告警,你是对着满屏日志盲目重启,还是能精准定位到那个拖垮系统的“隐形杀手”?大多数运维人只盯着 CPU 和内存的使用率,却忽略了 IO 等待和 P99 响应时间这些真正决定生死的细节。错误的排查顺序不仅浪费黄金救援时间,更可能让一次小波动演变成严重事故。从 Prometheus 的陷阱配置到 top 命令里被误读的数据,这篇文章将拆解一套经过实战验证的故障排查逻辑,帮你避开那些 90% 的人都会踩的坑。当告警再次响起,你确定手中的工具真的能救命吗?
— AI 生成的文章内容摘要
一、监控指标体系
1.1 基础指标

- CPU 使用率(用户态、内核态、IO 等待) - 内存使用率(已用、缓存、Swap) - 磁盘使用率(空间、IO、inode) - 网络流量(带宽、连接数、丢包率)
1.2 业务指标
- QPS(每秒查询数) - 响应时间(P50、P95、P99) - 错误率(4xx、5xx) - 业务成功率
---
二、监控工具选型
2.1 开源方案
| 工具 | 用途 | 特点 |
|---|---|---|
| **Prometheus** | 指标收集 | 时序数据库、Pull 模式 |
| **Grafana** | 可视化 | 丰富的图表、告警 |
| **Zabbix** | 综合监控 | 功能全面、学习曲线陡 |
| **Nagios** | 告警 | 插件丰富、配置复杂 |
2.2 商业方案
- 阿里云云监控 - 腾讯云监控 - 听云 - OneAPM
---
三、实战:搭建 Prometheus 监控
3.1 安装 Prometheus
# 下载 wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz # 解压 tar -xzf prometheus-*.tar.gz cd prometheus-* # 启动 ./prometheus --config.file=prometheus.yml
3.2 配置 Node Exporter
# 安装 wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz tar -xzf node_exporter-*.tar.gz cd node_exporter-* ./node_exporter # 验证 curl http://localhost:9100/metrics
3.3 配置 Grafana
# Docker 安装 docker run -d -p 3000:3000 grafana/grafana # 添加数据源 # http://prometheus-server:9090 # 导入 Dashboard # ID: 1860(Node Exporter Full)
---
四、故障排查流程
4.1 CPU 过高
# 查看负载 uptime w # 查看进程 top -c htop # 查看具体进程 pidstat -u 1 # 查看内核态 vmstat 1
4.2 内存不足
# 查看内存 free -h # 查看进程 ps aux --sort=-%mem | head # 查看 Swap vmstat 1 # 清理缓存 sync && echo 3 > /proc/sys/vm/drop_caches
4.3 磁盘 IO 高
# 查看 IO iostat -x 1 # 查看进程 iotop # 查看磁盘 df -h du -sh /*
4.4 网络问题
# 查看连接 netstat -ant | grep ESTABLISHED | wc -l # 查看流量 iftop nethogs # 查看丢包 ping -c 100 target.com
---
五、告警配置
5.1 Prometheus Alertmanager
# alertmanager.yml
route:
receiver: 'email'
group_by: ['alertname']
receivers:
- name: 'email'
email_configs:
- to: 'admin@example.com'
from: 'alert@example.com'
smarthost: 'smtp.example.com:587'
5.2 告警规则
# alert.rules.yml
groups:
- name: server
rules:
- alert: HighCPU
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU 使用率过高"
---
六、总结
监控体系核心:指标全面、告警准确、响应及时
---
作者:爪
分类:安全运维
标签:服务器监控、故障排查、Prometheus、Grafana、linux 运维
发布时间:2026-03-19

浙江省宁波市 1F
这配置在M1上能跑吗?
香港 2F
之前搞过这个,node_exporter折腾了好久
新加坡 3F
Prometheus的配置文件老是写错😂
日本 4F
感觉内存监控那块讲得不够细
日本 5F
Zabbix确实太难用了,果断换的Prometheus
韩国 B1
@ 浮云过客 换就对了,Zabbix 那个配置文件看得我眼晕。
印度 6F
Grafana那个1860面板好用不?
江苏省扬州市 B1
@ 浅笑离愁 1860 面板很全,就是默认刷新率太高吃资源。
辽宁省朝阳市 7F
为啥不用docker-compose部署呢
辽宁省沈阳市 8F
Swap满了真头疼,上周刚遇到
中国 9F
这些命令收藏了,下次排查用得上
福建省泉州市 10F
监控告警邮件经常收不到咋整
黑龙江省鸡西市 B1
@ 浪花一朵 检查下 spam 文件夹,还有发件人域名解析配置对不对。
江西省南昌市 11F
Prometheus 拉取模式在防火墙后面简直噩梦。
江西省抚州市 12F
node_exporter 版本不对指标全缺,踩坑了。
陕西省宝鸡市 13F
要是半夜告警电话响了,这配置能扛住不?
湖北省荆州市洪湖市 14F
以前用 Zabbix 配个模板花两天,现在真不想回去了。
日本 15F
内存那块只讲 free -h 有点浅,得看 slab 啊。
四川省 16F
又是理论派,生产环境谁敢直接 echo 3 清缓存?
广东省佛山市顺德区 17F
看着挺全,实际落地全是坑。
陕西省渭南市 18F
P99 延迟突增一般咋快速定位到具体 SQL?
美国 19F
之前公司监控报警太多直接麻木了,现在都不敢开声音😂