Ubuntu如何进行性能监控
小樊
49
2026-01-02 12:06:38
Ubuntu性能监控实用指南
一 快速上手 原生命令
- 进程与CPU
- 实时查看与排序:运行top,按P按CPU排序、按M按内存排序;查看load average判断系统负载趋势。
- 增强版与树形视图:安装并使用htop(sudo apt install htop);用ps auxf --forest --sort=-%cpu或pstree查看进程树与父子关系。
- 内存
- 快速概览:free -h查看总/已用/可用内存;uptime查看系统运行时间与1/5/15分钟负载。
- 细节与内核内存:watch -n 2 ‘cat /proc/meminfo | egrep “(MemTotal|MemFree|MemAvailable|Buffers|Cached|Slab|SReclaimable|SUnreclaim)”’;关注SUnreclaim(不可回收Slab)异常增长。
- 磁盘与I/O
- 安装sysstat后使用iostat -dxmt 2观察设备**%util、await、svctm**;iotop -aoP定位进程级I/O;查看进程I/O:cat /proc//io。
- 网络
- 连接与重传:ss -it | egrep “cwnd|rtt|retrans”;TCP状态分布:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’;接口错误/丢包:cat /sys/class/net//statistics/{rx,tx}_{errors,dropped}。
二 深入诊断 关键命令与阈值
- 进程异常
- 不可中断睡眠D状态排查:循环执行**ps -eo pid,state,comm | grep "^.* D "**定位卡在I/O的进程。
- 僵尸进程检测:统计状态为Z的进程并告警/记录,防止资源泄漏。
- 内存压力
- 页面换入换出与回收:cat /proc/vmstat | egrep “(pgpgin|pgpgout|pswpin|pswpout)”;结合MemAvailable与SUnreclaim判断内核/应用压力。
- I/O瓶颈
- 设备级:iostat中若**%util持续接近100%或await**明显升高,多为设备饱和;iotop定位具体进程。
- 进程级:读取**/proc//io的read_bytes/written_bytes**观察增长速率。
- 网络质量
- 重传统计:cat /proc/net/snmp | grep Tcp | awk ‘NR==2 {print $13}’;若retrans持续增长,可能存在链路/对端问题。
- 缓冲区与窗口:查看**/proc/sys/net/ipv4/tcp_rmem与tcp_wmem**评估发送/接收缓冲配置。
三 可视化与长期监控
- 桌面与终端
- 桌面:gnome-system-monitor(系统监视器)查看CPU、内存、磁盘、网络。
- 终端聚合:Glances(sudo apt install glances)一览CPU、内存、磁盘I/O、网络、温度,支持**-s服务器模式与-c **客户端远程连接,便于小规模纳管。
- 企业级方案
- Prometheus + Grafana:应用暴露**/metrics**(如Prometheus Python Client),用PromQL做SLA、分位数与预测分析,如:
- 95分位响应时间:histogram_quantile(0.95, sum(rate(app_request_latency_seconds_bucket[5m])) by (le, endpoint))
- 磁盘空间耗尽预测:predict_linear(node_filesystem_free_bytes[6h], 3600247) < 0
- 服务可用性SLA:avg_over_time(up{job=“api-server”}[30d]) * 100
- 传统平台:Nagios、Zabbix适合做主机/服务可用性、阈值告警与可视化报表。
四 生产实践 告警与容量
- 分级监控
- 关键资源(CPU、内存、磁盘、网络)建议采集间隔15s、保留30天;应用/业务指标1m/90天;日志/行为5m/1年;不同级别对应不同告警通道(如PagerDuty/邮件/Slack)。
- 智能告警
- 结合历史数据训练Isolation Forest等异常检测模型,识别偏离基线的CPU、内存、I/O与网络异常,降低误报与漏报。
- 容器与Kubernetes
- 通过Pod annotations(如prometheus.io/scrape: “true”)自动发现并抓取指标,统一在Grafana展示与告警。
- 容量与预测
- 使用predict_linear对磁盘、I/O、连接数等进行趋势预测与容量规划,提前识别风险窗口。