温馨提示×

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=-%cpupstree查看进程树与父子关系。
  • 内存
    • 快速概览: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)”;结合MemAvailableSUnreclaim判断内核/应用压力。
  • I/O瓶颈
    • 设备级:iostat中若**%util持续接近100%await**明显升高,多为设备饱和;iotop定位具体进程。
    • 进程级:读取**/proc//ioread_bytes/written_bytes**观察增长速率。
  • 网络质量
    • 重传统计:cat /proc/net/snmp | grep Tcp | awk ‘NR==2 {print $13}’;若retrans持续增长,可能存在链路/对端问题。
    • 缓冲区与窗口:查看**/proc/sys/net/ipv4/tcp_rmemtcp_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、连接数等进行趋势预测容量规划,提前识别风险窗口。

0