在Ubuntu服务器运维中,htop和glances是两款最实用的交互式性能监控工具。htop是top命令的增强版,支持鼠标操作、彩色显示和树状进程查看;glances则是一个基于Python开发的跨平台监控工具,能同时监控CPU、内存、磁盘、网络、进程等多维度数据,还支持Web界面和API输出。两者配合使用,基本可以覆盖日常运维中90%以上的性能排查场景。下面直接从安装、配置、使用技巧到实战案例,把这两个工具讲透。
一、htop的安装与基本使用htop在Ubuntu默认仓库中就有,安装非常简单,一条命令搞定:
sudo apt update && sudo apt install htop -y
安装完成后直接输入htop回车即可启动。启动后你会看到一个彩色的终端界面,顶部是CPU使用率、内存使用率和Swap使用率的进度条,中间是进程列表,底部是功能快捷键提示。
htop的核心操作逻辑是这样的:用方向键上下移动选择进程,F9可以杀掉选中进程,F6可以按列排序,F5可以切换树状视图。树状视图非常关键,它能让你看到进程之间的父子关系,排查某个服务为什么占用资源高的时候特别有用。比如你看到一个java进程占了80%的CPU,切换到树状视图就能看到它是哪个父进程启动的,是不是某个定时任务或者监控脚本在反复调用。
htop还有一个实用功能是过滤。按F4输入关键字,比如输入"nginx",就只显示和nginx相关的进程。按F3搜索进程名,支持模糊匹配。这些功能在进程数特别多的服务器上非常高效,不用在几百行进程里肉眼找。
二、glances的安装与核心功能glances的安装方式有两种,推荐用pip安装以获得最新版本:
sudo apt install python3-pip -y sudo pip3 install glances
或者直接用apt:
sudo apt install glances -y
安装完成后输入glances回车启动。glances的界面信息密度比htop高很多,默认会显示CPU、内存、Swap、磁盘IO、网络IO、进程数、文件系统挂载情况等十几项指标,而且会根据数值自动变色——绿色正常、蓝色注意、红色危险。这个颜色提示机制对快速判断系统状态非常有帮助。
glances有几个htop不具备的优势。第一,它支持Web模式,启动时加参数:
glances -w
这样就会启动一个Web服务,默认端口61208,浏览器访问服务器IP:61208就能看到监控面板。这在需要远程查看服务器状态但又不想开SSH的场景下特别方便,比如给非技术人员看服务器健康状况。
第二,glances支持导出数据到文件或者通过API输出,方便接入监控系统:
glances --export csv --export-csv-file /tmp/glances_report.csv
第三,glances有一个"警报"功能,可以设置阈值,当CPU超过90%或者内存超过85%时自动高亮提示。虽然不如专业监控系统那么完善,但日常巡检够用了。
三、htop与glances的对比与配合策略很多人问到底用哪个好,答案是不冲突,场景不同。htop适合快速定位单个进程问题,操作轻量,SSH远程连接也不卡;glances适合全面了解系统整体状态,尤其是需要同时看磁盘IO和网络流量的时候。实际运维中,我的习惯是先用glances快速扫一眼整体情况,发现异常指标后再切到htop深入排查具体进程。
举个实际场景:服务器响应变慢,先glances看一眼,发现磁盘IO的wait值很高,同时某个进程的CPU占用异常。这时候切htop,按F5看树状结构,找到是哪个进程在疯狂写磁盘,然后F9杀掉或者用kill命令处理。整个流程下来两三分钟就能定位问题。
还有一个细节要注意:htop默认显示的是用户进程,看不到内核线程。如果需要看内核线程,启动时加参数:
htop -t
glances则默认就包含内核线程信息,不需要额外设置。另外glances在监控网络时会显示每个网卡的实时流量,这对排查网络瓶颈非常直观,htop在这方面就弱一些,只能看到进程级别的网络使用。
四、进阶配置与自动化运维技巧对于需要长期监控的服务器,建议把这两个工具配置成自动化运行。htop支持批处理模式,可以定期截图保存:
htop -b -n 1 > /tmp/htop_snapshot.txt
这个命令会以批处理模式运行一次htop并输出到文件,配合crontab可以每分钟抓一次快照,事后分析性能波动。
glances的自动化更强大,可以设置为守护进程模式:
glances -d
这样glances会在后台运行,可以配合--export参数把数据持续写入文件或者推送到外部系统。如果你用的是systemd管理的Ubuntu服务器,还可以写一个service文件让glances开机自启:
[Unit] Description=Glances System Monitor After=network.target [Service] ExecStart=/usr/bin/glances -w Restart=always User=root [Install] WantedBy=multi-user.target
保存为/etc/systemd/system/glances.service,然后执行:
sudo systemctl enable glances sudo systemctl start glances
这样服务器重启后glances的Web监控就自动跑起来了,非常省心。
五、常见问题排查实战案例案例一:CPU持续100%但top看不到高占用进程。这种情况很常见,因为可能是内核态占用高,比如大量的上下文切换或者IO等待。这时候用glances看一下,如果CPU的system值很高但user值不高,说明是内核问题。再用htop -t看内核线程,通常能找到是哪个驱动或者内核模块在搞事情。
案例二:内存看起来没用完但系统很卡。glances的Swap使用率会告诉你答案。如果Swap占用很高,说明物理内存不够用了,系统在频繁换页。这时候用htop按M键按内存排序,找到占用最大的几个进程,评估是否可以优化或者限制。可以用ulimit或者cgroup来限制某些进程的内存使用上限。
案例三:磁盘空间突然满了。glances的文件系统模块会显示每个挂载点的使用率,直接定位到哪个分区满了。然后用htop找到写磁盘最多的进程,结合lsof命令:
lsof +D /var/log
就能看到具体是哪些文件在占用空间,清理或者轮转日志即可解决。
六、性能监控的最佳实践建议第一,不要只依赖单一工具。htop和glances是交互式工具,适合实时排查,但不适合长期趋势分析。长期监控建议配合Prometheus、Zabbix或者Netdata这类专业方案,把历史数据存下来做趋势图。
第二,养成定期巡检的习惯。哪怕服务器看起来正常,每周用glances跑一次全面扫描,记录关键指标的基线值。当出现异常时,和基线对比就能快速发现问题。很多故障都是渐进式的,等用户报障的时候往往已经严重了。
第三,注意权限问题。htop和glances在普通用户下运行只能看到自己的进程,要看全系统状态必须用sudo或者root权限启动。但生产环境不建议长期用root登录,可以通过sudoers配置免密执行:
echo "yourusername ALL=(ALL) NOPASSWD: /usr/bin/htop, /usr/bin/glances" | sudo tee /etc/sudoers.d/monitoring
这样普通用户也能通过sudo htop查看完整信息,安全性和便利性兼顾。
总结一下,htop和glances是Ubuntu运维中最基础也最实用的两把刷子。htop轻量快速适合进程级排查,glances信息全面适合系统级总览。掌握它们的安装、配置、快捷键和自动化技巧,再结合实际场景多练几次,你的服务器运维效率会提升一个档次。工具不在多,在于用熟用透。
