掌握 Ubuntu 服务器的系统监控工具对于确保最佳性能、诊断问题和维护系统可靠性至关重要。在本教程中,我们将探讨适用于 Ubuntu 服务器的最佳系统监控工具,包括实时资源监控、磁盘 I/O、网络活动和服务器仪表板。
上一篇文章:
01. Ubuntu Server 简介 – SysOSX: AI & Cloud
02. 如何搭建你的第一台 Ubuntu 服务器:初学者指南 – SysOSX: AI & Cloud
03.掌握 Ubuntu 服务器的 Linux 命令行 – SysOSX: AI & Cloud
04. Ubuntu 服务器用户与权限管理:全面指南 – SysOSX: AI & Cloud
05. Ubuntu 服务器网络基础:全面指南 – SysOSX: AI & Cloud
06. 在 Ubuntu 服务器上安装和管理软件:完整指南 – SysOSX: AI & Cloud
07.Ubuntu 服务器补丁与更新:全面指南 – SysOSX: AI & Cloud
08. 保护你的 Ubuntu 服务器:加固与防护的实用步骤 – SysOSX: AI & Cloud
使用 htop 和 top 进行实时资源监控
介绍 htop 和 top
这两款工具 htop 和 top 是实时监控系统资源的必备命令行工具。它们显示 CPU 使用率、内存消耗和正在运行的进程等信息。
安装和运行 htop (默认已安装)
要安装 htop,请运行:
sudo apt update
sudo apt install htop
要启动 htop,只需输入:
htop
主要功能和使用场景: htop
htop 非常适合:
- 识别资源密集型进程:你可以按 CPU 或内存使用情况对进程排序,快速找到资源占用大户。
- 终止进程:使用
F9终止无响应或有问题的进程,操作直接在htop界面中完成。 - 监控线程:展开进程可查看各个线程及其资源使用情况。
- 自定义列:按
F2配置显示内容,并添加/删除磁盘 I/O 或网络利用率等指标。
使用 top
top 是一款更简单的工具,Ubuntu 服务器预装了它。要运行它:
top
关键命令: top:
- 按
Shift + p按 CPU 使用率排序。 - 按
Shift + m按内存使用率排序。 - 按
q退出。
安装和配置 sysstat 以获取性能指标
什么是 sysstat?
sysstat 是一套用于长期收集和报告系统性能指标的工具。它包括以下实用程序: iostat, vmstat和 sar.
安装 sysstat
要安装 sysstat:
sudo apt update
sudo apt install sysstat
配置 sysstat
通过编辑配置文件启用数据收集:
sudo nano /etc/default/sysstat
将 ENABLED="false" 改为 ENABLED="true"。保存并退出,然后重启服务:
sudo systemctl restart sysstat
使用 sysstat 工具
iostat:监控磁盘 I/O 性能。iostat

vmstat:监控内存、CPU 和 I/O 统计信息。vmstat

sar:生成系统活动的历史报告。sar -u 5 10 # CPU usage every 5 seconds for 10 intervals

监控磁盘 I/O 和网络活动
磁盘 I/O 监控工具: iotop
使用以下工具 iostat (来自 sysstat)或 iotop 进行实时磁盘 I/O 监控。
要安装 iotop:
sudo apt update
sudo apt install iotop
运行 iotop :
sudo iotop
然而,一些用户在运行该工具时可能会遇到以下错误,该工具为 iotop:
CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %
修复 iotop 错误
出现此问题是因为内核缺少 CONFIG_TASK_DELAY_ACCT 功能,而 iotop 需要该功能来显示 SWAPIN 和 IO 百分比。幸运的是,可以通过更新 GRUB 配置来解决此问题。
修复错误的步骤
- 编辑 GRUB 配置文件:
sudo nano /etc/default/grub
- 将
delayacct选项添加到GRUB_CMDLINE_LINUX_DEFAULT条目中。如果该行最初为空(GRUB_CMDLINE_LINUX_DEFAULT=""),按如下方式更新:GRUB_CMDLINE_LINUX_DEFAULT="delayacct"如果该行已包含其他选项,请追加delayacct到现有选项中,以空格分隔。例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash delayacct"
- 更新 GRUB 以应用更改:
sudo update-grub
- 重启服务器:
sudo reboot
重启后,错误应该会解决, iotop 将正常工作。
使用 `iotop
问题修复后,你可以运行 iotop 来监控磁盘 I/O:
sudo iotop
你可以用它做什么: iotop
- 识别导致高磁盘 I/O 的进程。
- 实时监控读写操作。
- 按磁盘使用情况对进程排序。
网络活动监控
使用 iftop
要安装 iftop:
sudo apt update
sudo apt install iftop
运行 iftop :
sudo iftop
使用 nload
要安装 nload:
sudo apt update
sudo apt install nload
运行 nload :
nload
使用 Cockpit 搭建服务器仪表板
什么是 Cockpit?
Cockpit 是一个基于 Web 的图形化仪表板,用于监控和管理服务器。它提供 CPU、内存、磁盘使用情况和网络活动的实时洞察。
安装 Cockpit
要安装 Cockpit:
sudo apt update
sudo apt install cockpit
访问 Cockpit
启动 Cockpit 服务:
sudo systemctl start cockpit.socket
sudo systemctl enable cockpit.socket
通过以下地址访问仪表板:
https://<your-server-ip>:9090
Cockpit 的功能
- 直观地监控系统性能。
- 管理服务、日志和用户帐户。
- 查看磁盘使用情况和网络活动。
其他推荐的监控工具
虽然像 htop, sysstat和 Cockpit 这样的工具对大多数服务器监控需求来说都非常出色,但还有其他高级工具可以为复杂环境提供更深入的见解和更好的可视化效果。下面是一些可以考虑的其他监控工具:
Prometheus 和 Grafana
Prometheus
Prometheus 是一个开源监控和告警工具包,专为可靠性和可扩展性而设计。它广泛应用于云原生环境,特别适合监控分布式系统和微服务。
主要功能:
- 时序数据库:高效存储带时间戳的指标。
- 强大的查询语言 (
PromQL) 用于分析指标。 - 告警系统:与 Alertmanager 等工具集成以发送通知。
- 拉取式架构:Prometheus 主动从目标抓取指标。
使用场景:
- 监控多台服务器的 CPU、内存和磁盘使用情况。
- 跟踪特定于应用的指标(例如 HTTP 请求延迟、错误率)。
- 针对异常指标或系统故障生成告警。
安装说明:
要在 Ubuntu 上安装 Prometheus:
sudo apt update
wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz
tar xvf prometheus-2.44.0.linux-amd64.tar.gz
cd prometheus-2.44.0.linux-amd64
./prometheus
通过以下地址访问 Prometheus:
http://<your-server-ip>:9090
请注意,Prometheus 和 Cockpit 的默认端口都是 9090,如果同时使用它们,你可能需要更改默认端口:
解决 Prometheus 与 Cockpit 之间的端口冲突
选项 1:更改 Prometheus 端口
你可以通过修改 Prometheus 的配置文件将其配置为使用不同的端口。
- 打开 Prometheus 配置文件:
nano prometheus.yml
- 在 Prometheus 启动命令或服务文件中添加或修改
--web.listen-address标志,以指定不同的端口(例如9091):
--web.listen-address=:9091
- 重启 Prometheus 以应用更改:
sudo systemctl restart prometheus
- 使用新端口访问 Prometheus:
http://<your-server-ip>:9091
选项 2:更改 Cockpit 端口
如果你希望让 Prometheus 继续使用 9090 端口,也可以更改 Cockpit 的默认端口。
- 为 Cockpit 创建自定义配置文件:
sudo nano /lib/systemd/system/cockpit.socket
- 添加以下几行以指定新端口(例如
9092):ListenStream=9092 - 重启 Cockpit 服务:
systemctl daemon-reload
systemctl restart cockpit.socket
- 使用新端口访问 Cockpit:
https://<your-server-ip>:9092
选项 3:使用反向代理
如果更改端口并不理想,你可以使用反向代理(例如 Nginx 或 Apache),将两个服务映射到不同的 URL,同时保持默认端口。
例如:
- Prometheus:
http://<your-server-ip>/prometheus
- Cockpit:
http://<your-server-ip>/cockpit
建议
如果你经常同时使用这两个工具:
记录端口更改,以供将来参考或其他管理员查阅。
将 Prometheus 的端口改为 9091 ,因为 Cockpit 更常通过其默认端口 9090.
Grafana
Grafana 是一个强大的可视化平台,与 Prometheus 无缝集成。它允许你创建动态仪表板来可视化指标和趋势。
主要功能:
- 多数据源支持:可与 Prometheus、Elasticsearch、MySQL 等配合使用。
- 自定义仪表板:创建交互式图表、热力图和表格。
- 告警:根据关键指标的阈值设置告警。
- 共享:轻松与团队共享仪表板。
使用场景:
- 可视化 Prometheus 收集的服务器性能指标。
- 监控一段时间内的趋势,以更好地进行容量规划。
- 在统一仪表板中显示来自多个数据源的数据。
安装说明:
要在 Ubuntu 上安装 Grafana:
sudo apt update
sudo apt install -y software-properties-common
sudo wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
sudo echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
通过以下地址访问 Grafana:
http://<your-server-ip>:3000
Nagios
Nagios 是最受欢迎的基础设施监控工具之一。它为服务器、网络设备和应用提供全面的监控和告警。它具有高度可定制性,并支持插件以扩展功能。
主要功能:
- 监控服务器健康状况:跟踪 CPU、内存、磁盘使用情况等。
- 网络监控:检测路由器、交换机和防火墙的问题。
- 告警:通过电子邮件、短信或与 Slack 的集成发送通知。
- 丰富的插件库:监控数据库、Web 服务器和其他服务。
使用场景:
- 监控生产环境中的关键服务器和应用。
- 在磁盘空间不足或 CPU 利用率过高时接收告警。
- 监控网络设备的正常运行时间和可用性。
安装说明:
要在 Ubuntu 上安装 Nagios:
sudo apt install nagios4 nagios-plugins
sudo a2enmod rewrite cgi
systemctl restart apache2
sudo systemctl status nagios4
sudo systemctl enable nagios4
sudo systemctl start nagios4
Nagios 需要额外配置才能设置监控目标。有关详细配置,请参阅 Nagios 文档.
Netdata:实时系统监控工具
Netdata 是一款轻量级的实时监控工具,可提供有关系统性能的详细见解。它易于安装,并附带一个精美的 Web 界面来可视化指标。
步骤 1:更新系统软件包
通过在终端中运行以下命令确保系统保持最新:
sudo apt update
sudo apt upgrade
步骤 2:安装 Netdata
从默认的 Ubuntu 仓库安装 Netdata:
sudo apt install netdata
步骤 3:配置 Netdata
编辑 Netdata 配置文件以允许远程访问:
sudo nano /etc/netdata/netdata.conf
找到 bind socket to IP 字段,并将 127.0.0.1 替换为你的服务器 IP 地址:
[global]
bind socket to IP = <your-server-ip>
保存文件并重启 Netdata 服务:
sudo systemctl restart netdata
步骤 4:配置防火墙
允许访问 Netdata 的默认端口 (19999) 并启用防火墙:
sudo ufw allow 19999
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
步骤 5:访问 Netdata Web 界面
打开 Web 浏览器并访问:
http://<your-server-ip>:19999

工具比较
| 工具 | 最适合 | 易用性 | 可视化 | 告警 |
|---|---|---|---|---|
| Prometheus | 大规模指标收集 | 中等 | 有限 | 是 |
| Grafana | 高级仪表板 | 简单 | 出色 | 是 |
| Nagios | 基础设施监控 | 中等 | 基础 | 是 |
| Netdata | 轻量级实时监控 | 简单 | 出色 | 是 |
结论
监控你的 Ubuntu 服务器对于维护性能、诊断问题和防止停机至关重要。像 htop, top, sysstat、Cockpit 及其他工具让管理员能够有效地监控资源。无论你喜欢命令行工具还是图形仪表板,本指南都涵盖了搭建强大监控系统所需的一切。
下一期: 集中式日志记录与监控
在下一篇文章中,我们将重点介绍 集中式日志记录与监控 ,以进一步简化服务器管理和性能跟踪。将涵盖的主题包括:
- 设置 rsyslog 或 syslog-ng 以实现集中式日志记录。
- 将日志转发到远程日志服务器,以便更好地组织和分析。
- 将你的 Ubuntu 服务器与以下强大的监控平台集成,例如 Nagios, Zabbix或 Prometheus ,以深入了解系统健康状况和性能。
敬请关注,了解如何集中管理日志基础设施并利用监控工具有效地优化服务器运营!










2 thoughts on “10. System Monitoring Tools for Ubuntu Server: A Comprehensive Guide”