1. Ubuntu性能监控工具全景图刚接触Ubuntu系统管理时最让我头疼的就是服务器突然变慢却找不到原因。后来才发现用好性能监控工具就像给系统装了X光机所有问题一目了然。Ubuntu生态中的监控工具大致可以分为三类命令行三剑客是最基础的利器。top命令就像汽车仪表盘能实时显示CPU和内存占用情况。记得有次服务器卡顿用top一看发现某个Java进程吃掉了90%内存立马kill掉就恢复正常了。htop则是top的豪华升级版彩色界面支持鼠标操作按F2还能自定义显示项。vmstat特别适合排查IO瓶颈它的输出里wa值如果长期高于5%就说明磁盘忙不过来了。图形化工具更适合可视化分析。Glances是我最推荐的跨平台工具一个界面就能看遍CPU、内存、磁盘、网络等所有指标还支持Web远程访问。安装也简单sudo apt install glances glances -w # 启动Web服务GNOME System Monitor是Ubuntu自带的图形工具适合桌面用户快速查看资源占用。Cockpit则是红帽开发的Web控制台不仅能监控还能管理容器和服务企业级功能很全面。企业级方案在集群监控中更高效。Nagios的报警机制特别完善可以设置当CPU超过80%就发邮件提醒。有次凌晨3点收到报警及时处理避免了线上事故。PrometheusGrafana组合更适合做趋势分析我们团队就用它生成周报直观看到业务增长带来的资源消耗变化。提示选择工具时要考虑监控粒度日常运维用htop就够了调优时需要perf这样的专业工具2. 命令行工具深度解析2.1 top命令实战技巧很多人以为top就是看个CPU占用其实隐藏功能很多。按1键可以展开多核CPU详情发现某个核心满载可能是线程没写好。ShiftM按内存排序快速定位内存泄漏进程。我们线上曾有个PHP服务内存缓慢增长就是靠这个发现的。关键指标解读load average三个数分别代表1/5/15分钟的平均负载超过CPU核数就是过载%CPU注意这里统计的是所有核的占用总和200%表示双核都用满了RES进程实际占用的物理内存比VIRT更有参考价值常用参数组合top -d 5 -u www-data # 5秒刷新只监控www-data用户进程 top -p 1234,5678 # 只监控指定PID的进程2.2 htop的高阶玩法htop最厉害的是交互功能。F5树形视图能看清父子进程关系曾经帮我们找到过僵尸进程的源头。F9发送信号超级实用遇到无响应进程不用记kill命令了。空格键标记进程这个功能在追踪特定服务时特别管用。自定义视图技巧按F2进入设置选择Display Options开启Detailed CPU time能看到更多CPU细节在Columns添加IO_READ_RATE监控磁盘读取2.3 小众但好用的命令行工具iftop实时网络流量监控一眼看出哪个IP在疯狂下载iotop监控磁盘IO找出导致IO等待高的元凶nethogs按进程统计网络流量排查异常上传的神器sudo apt install iftop iotop nethogs sudo iftop -nNP # 显示端口和IP而非域名 sudo iotop -o # 只显示有IO操作的进程3. 图形化工具对比评测3.1 Glances的多面手特性Glances最让我惊艳的是它的插件系统。通过安装额外组件可以监控Docker容器、GPU使用率等。在笔记本上测试时发现它的温度监控比原生工具还准。分享几个实用技巧按d显示磁盘IO详情按m切换内存显示单位添加API_KEY后可以对接云端监控配置邮件报警的步骤编辑/etc/glances/glances.conf设置[mail]段的SMTP信息设置thresholds触发阈值3.2 Cockpit的企业级功能虽然Cockpit占用资源稍多但它的集成管理确实方便。通过浏览器就能完成用户管理、防火墙配置等操作特别适合管理多台服务器。最近更新的Podman容器管理界面比命令行操作直观多了。启用方法sudo apt install cockpit sudo systemctl enable --now cockpit.socket常用功能性能图表支持时间范围选择日志查看器自带过滤功能终端会话支持多标签页3.3 其他GUI工具亮点Conky适合桌面用户我把它配置成透明悬浮窗随时查看硬件信息。KSysGuard的图表绘制最专业做报告时常用它导出矢量图。Netdata的Web界面响应超快手机访问也很流畅。4. 企业级监控方案落地4.1 Nagios核心配置技巧Nagios的check_interval参数要合理设置太频繁会增加负载间隔太长又可能错过异常。我们团队的标准是关键服务1分钟检查一次次要服务5分钟一次硬件状态15分钟一次定义服务的模板示例define service { use generic-service host_name web-server service_description CPU Load check_command check_nrpe!check_load normal_check_interval 5 retry_check_interval 1 }4.2 PrometheusGranfana实战PromQL查询语言刚开始学有点难但掌握后特别强大。比如这个查询可以找出CPU使用率前5的容器topk(5, sum(rate(container_cpu_usage_seconds_total[5m])) by (container_name))Grafana看板配置建议时间范围默认设为最近6小时添加Thresholds阈值线开启Annotations标记关键事件4.3 混合云监控方案对于跨云环境我们采用TelegrafInfluxDBKapacitor的组合。Telegraf的插件生态非常丰富连Redis的慢查询都能监控。遇到过的坑是时间同步问题所有节点必须配置NTP服务。5. 性能问题诊断思路5.1 典型问题排查流程CPU瓶颈先用top看%us和%sy用户态高可能是应用代码问题内核态高可能是系统调用频繁内存不足free -h看available值低于10%就要警惕IO等待iostat -x 1重点关注%util和await值网络拥堵iftop看流量分布netstat -s看错误统计5.2 实用诊断脚本分享这个脚本可以一键采集关键指标#!/bin/bash echo $(date) system_report.txt top -bn1 | head -20 system_report.txt echo \n Memory system_report.txt free -h system_report.txt echo \n Disk system_report.txt df -h system_report.txt5.3 长期监控策略日志轮转配置logrotate避免日志爆盘历史数据sar默认保存一个月数据可通过sa1/sa2调整容量规划用Grafana预测资源增长趋势曾经用这些工具发现过一个经典案例某服务每天下午3点CPU飙升最后发现是定时任务没做限流。监控的价值不仅在于解决问题更在于预防问题。