Linux硬件监控工具Linux硬件监控工具Linux硬件监控工具Linux硬件监控工具
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux硬件监控工具

发表 admin at 2025年2月28日
类别
  • 未分类
标签
コアサーバーV2プランご契約でドメイン更新費用が永久無料

无论您是家庭用户还是大型站点的系统/网络管理员,监控 Linux 系统都可以在很多方面为您提供帮助 – 可能比您目前所知道的还要多。

例如,您的笔记本电脑上有与工作相关的重要文件,有一天,硬盘决定在您身上死掉,甚至没有说再见。由于大多数用户不进行备份,因此您必须打电话给老板并告诉他最新的财务报告不见了。不太好。但是,如果您使用定期启动(在启动时或使用 cron)磁盘监视和报告软件,例如 smartd,它会告诉您驱动器何时开始变得疲倦。不过,在我们之间,硬盘可能会在没有警告的情况下决定崩溃,因此请备份您的数据。

本教程将涉及与系统监控相关的所有内容,无论是网络、磁盘还是温度。该主题通常可以构成一本书的足够材料,但我们会尽力只为您提供最重要的信息,以便您开始使用,或者根据经验,将所有信息集中在一个地方。您应该了解您的硬件并具备基本的系统管理技能,但无论您来自哪里,您都会在这里找到有用的东西。

在本教程中您将学习:

  • 如何监控系统温度

  • 如何监控硬盘和输入/输出

  • 如何使用网络监控工具

  • 如何监控系统CPU、内存和正在运行的进程

Linux 硬件监控工具

以下部分将介绍用于不同工作的工具,例如温度、硬盘状态、网络、系统进程等的监控。我们将向您展示在基于 Debian 和 Ubuntu 的系统上安装这些工具的命令。对于其他人,您应该使用包管理器来搜索正确的包名称,因为有时它们的名称略有不同。

温度监测

当涉及到监控系统温度时,最好的工具是一个名为传感器的软件包。某些发行版可能已经预装了软件。在其他系统上,您可能需要安装它。在 Debian 或衍生版本上,您只需执行:


$ sudo apt install lm-sensors

在 OpenSUSE 系统上,该软件包简单命名为 sensors,而在 Fedora 上,您可以在名称 lm_sensors 下找到它。您可以使用包管理器的搜索功能来查找传感器,因为大多数发行版都提供它。

现在,只要您拥有相对现代的硬件,您就可能具有温度监控功能。如果您使用桌面发行版,您将启用硬件监控支持。

要开始监控系统温度,请在终端中使用以下命令。


$ sudo sensors-detect

以下是我们的测试系统上生成的输出片段:


k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:   +32.0°C  
Core0 Temp:   +33.0°C  
Core1 Temp:   +29.0°C  
Core1 Temp:   +25.0°C  

nouveau-pci-0200
Adapter: PCI adapter
temp1:        +58.0°C  (high = +100.0°C, crit = +120.0°C)

您的 BIOS 可能(大多数)有温度故障安全选项:如果温度达到特定阈值,系统将关闭以防止损坏硬件。另一方面,虽然在常规桌面上,传感器命令可能看起来不太有用,但在位于数百公里之外的服务器计算机上,这样的工具可能会产生巨大的影响。

如果您是此类系统的管理员,我们建议您编写一个简短的脚本,每小时向您发送一次邮件,例如,包含有关系统温度的报告和统计信息。

磁盘和 I/O

在这一部分中,我们将首先介绍硬件状态监控,然后转到 I/O 部分,该部分将处理瓶颈检测、读/写等。让我们从如何从硬盘获取磁盘运行状况报告开始。

S.M.A.R.T.

S.M.A.R.T. 代表自我监控分析和报告技术,是现代硬盘驱动器提供的一项功能,可让管理员有效监控磁盘健康状况。要安装的应用程序通常名为 smartmontools,它提供了一个用于定期写入 syslog 的 systemd 脚本。

可以使用以下命令安装它:


$ sudo apt install smartmontools

它的名称是smartd,您可以通过编辑/etc/smartd.conf来配置它,并配置要监控的磁盘以及何时监控。这套 S.M.A.R.T.工具适用于 Linux、BSD、Solaris、Darwin 甚至 OS/2。

发行版为 smartctl 提供图形前端,smartctl 是您想要查看驱动器运行情况时使用的主要应用程序,但我们将重点关注命令行实用程序。例如,可以使用 -a(所有信息)/dev/sda 作为参数,以获取有关系统上安装的第一个驱动器状态的详细报告。这是我得到的:


$ sudo smartctl -a /dev/sda

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Blue Serial ATA
Device Model:     WDC WD5000AAKS-00WWPA0
Serial Number:    WD-WCAYU6160626
LU WWN Device Id: 5 0014ee 158641699
Firmware Version: 01.03B01
User Capacity:    500,107,862,016 bytes [500 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Wed Oct 19 19:01:08 2011 EEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
[snip]
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG VALUE WORST THRESH TYPE  UPDATED  WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
3 Spin_Up_Time            0x0027   138   138   021    Pre-fail  Always       -       4083
4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       369
5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       4186
10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       366
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       21
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       347
194 Temperature_Celsius     0x0022   105   098   000    Old_age   Always       -       38
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

从这个输出中我们基本上可以得到的是,没有报告任何错误,并且所有值都在正常范围内。说到温度,如果您有一台笔记本电脑并且发现温度值异常高,请考虑清洁机器内部以获得更好的空气流通。

盘片可能会因过热而变形,您当然不希望这样。如果您使用台式机,则可以以便宜的价格购买硬盘冷却器。无论如何,如果您的 BIOS 具有该功能,那么在 POST 时,如果驱动器即将发生故障,它会向您发出警告。

smartctl 提供了一套可以执行的测试:您可以使用 -t 标志选择要运行的测试:


$ sudo smartctl -t long /dev/sda

根据磁盘的大小和您选择的测试,此操作可能需要相当长的时间。有些人建议在系统没有任何重大磁盘活动时运行测试,其他人甚至建议使用 Live CD。当然,这些都是常识性的建议,但最终这一切都取决于具体情况。请参阅 smartctl 手册页以获取更多有用的命令行标志。

输入/输出

例如,如果您使用的计算机执行大量读/写操作(例如繁忙的数据库服务器),则需要检查磁盘活动。或者您想要测试磁盘为您提供的性能,无论计算机的用途如何。对于第一个任务,我们将使用 iostat,对于第二个任务,我们将使用 bonnie++。这些只是人们可以使用的两个应用程序,但它们很受欢迎并且工作得很好,所以我觉得没有必要去其他地方寻找。

如果您的系统上没有找到 iostat,您的发行版可能会将其包含在 sysstat 软件包中,该软件包为 Linux 管理员提供了许多工具,我们稍后会讨论它们。

使用以下命令安装它:


$ sudo apt install sysstat

您可以运行不带参数的 iostat,这将给您类似的结果:


Linux 5.13.0-27-generic (linuxconfig) 	02/02/2022 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          17.10    2.22    8.89    1.67    0.00   70.11

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
sda              42.29      1120.77       528.22         0.00    1115925     525937          0

如果您希望 iostat 连续运行,只需使用 -d (延迟)和一个整数:


$ iostat -d 1 10

此命令将以一秒的间隔运行 iostat 10 次。阅读手册页了解其余选项。这是值得的,你会看到的。查看可用的标志后,一个常见的 iostat 命令可能类似于


$ iostat -d 1 -x -h 

这里 -x 代表扩展统计信息,-h 来自人类可读的输出。

邦妮++

bonnie++ 的名字(增加的部分)来自于它的继承,经典的 bonnie 基准测试程序。它支持大量的硬盘和文件系统测试,通过写入/读取大量文件来给机器带来压力。在大多数 Linux 发行版上都可以找到它的确切名称:bonnie++。以下是安装方法。


$ sudo apt install bonnie++

您只需运行命令即可,无需额外选项:


$ bonnie++

这是我们在测试机器上从 bonnie 收到的输出。


Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version  1.98       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
linuxconfig      4G  122k  96 69.5m  24  125m  55  446k  89  262m  48  3895 204
Latency               179ms     726ms   42985us   65391us   44430us   14077us
Version  1.98       ------Sequential Create------ --------Random Create--------
linuxconfig         -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16     0  39 +++++ +++ 724249376  35     0  37 +++++ +++ 724249376  38
Latency             44098us   13586us   12148us   16141us   12212us   12207us
1.98,1.98,linuxconfig,1,1643851174,4G,,8192,5,122,96,71185,24,128266,55,446,89,268335,48,3895,204,16,,,,,7366,39,+++++,+++,11979,35,7939,37,+++++,+++,13108,38,179ms,726ms,42985us,65391us,44430us,14077us,44098us,13586us,12148us,16141us,12212us,12207us

请记住,运行 bonnie++ 会给您的机器带来压力,因此最好在系统不像平常那么繁忙时执行此操作。您可以选择输出格式(CSV、文本、HTML)、目标目录或文件大小。

再次,请阅读手册,因为这些程序取决于底层硬件及其用法。只有你自己最清楚你想从 bonnie++ 那里得到什么。

网络监控

在开始之前,您应该知道,我们不会从安全角度处理网络监控,而是从性能和故障排除的角度处理网络监控,尽管有时工具是相同的(wireshark、iptraf 等)。当您从另一栋大楼的 NFS 服务器获取 10 kbps 的文件时,您可能会考虑检查网络是否存在瓶颈。

这是一个很大的主题,因为它取决于很多因素,如硬件、电缆、拓扑等。我们将以统一的方式处理这个问题,这意味着您将看到如何安装和如何使用这些工具,而不是对它们进行分类,让您对不必要的理论感到困惑。我们不会包含所有为 Linux 网络监控编写的工具,只包含那些被认为重要的工具。

在我们开始讨论复杂的工具之前,让我们先从简单的工具开始。这里,故障排除中的问题部分是指网络连接问题。正如您将看到的,其他工具指的是攻击预防工具。同样,只有网络安全主题产生了多次,因此这将尽可能短。

这些简单的工具包括 ping、traceroute、ip 等。它们通常是 inetutils 或 net-tools 软件包的一部分(可能因发行版而异),并且很可能已经安装在您的系统上。

另外,dnsutils 也是一个值得安装的软件包,因为它包含流行的应用程序,例如 dig 或 nslookup。如果您还不知道这些命令的作用,我们建议您阅读一些内容,因为它们对于任何 Linux 用户来说都是必不可少的,无论他使用的计算机的用途如何。

tcpdump

如果没有 tcpdump 的一部分,任何网络故障排除/监控指南中的此类章节都是不完整的。无论您是在小型 LAN 还是在大型企业网络上,它都是一个非常复杂且有用的网络监控工具。

tcpdump 的作用基本上是数据包监控,也称为数据包嗅探。您需要 root 权限才能运行它,因为 tcpdump 需要物理接口以混杂模式运行,这不是以太网卡的默认运行模式。混杂模式意味着 NIC 将获取网络上的所有流量,而不仅仅是为其指定的流量。

如果尚未安装,您可以在终端中使用以下命令。


$ sudo apt install tcpdump

我们不会尝试替换 tcpdump 写得很好的手册页,我们会将其留给您。但在继续之前,我们建议您学习一些基本的网络概念,以便理解 tcpdump,例如 TCP/UDP、有效负载、数据包、标头等。

tcpdump 的一项很酷的功能是能够实际捕获网页,通过使用 -A 完成。尝试像这样启动 tcpdump:


$ sudo tcpdump -vv -A

现在,转到一个网页。然后返回到正在执行 tcpdump 的终端窗口。您会看到有关该网站的许多有趣的事情,例如网络服务器正在运行的操作系统或用于创建页面的 PHP 版本。

使用 -i 指定要侦听的接口(例如 eth0、eth1 等)或 -p > 用于不在混杂模式下使用 NIC,在某些情况下很有用。如果您需要稍后检查,可以使用 -w $file 将输出保存到文件中(请记住该文件将包含原始输出)。因此,根据您在上面阅读的内容,tcpdump 用法的示例如下:


$ sudo tcpdump -vv -A -i eth0 -w outputfile

我们必须提醒您,此工具和其他工具(例如 nmap、snort 或 wireshark)虽然可用于监控网络中是否存在恶意应用程序和用户一样,它对于流氓用户也很有用。请不要将此类工具用于恶意目的。

如果您需要一个更酷的嗅探/分析程序界面,您可以尝试 iptraf (CLI) 或wireshark (GTK)。我们不会更详细地讨论它们,因为它们提供的功能与 tcpdump 类似。不过,我们推荐 tcpdump,因为几乎可以肯定,无论发行版如何,您都会发现它已安装,并且它将给您学习的机会。

网络统计 netstat 是实时远程和本地连接的另一个有用工具,它以更有条理、类似表格的方式打印其输出。软件包的名称通常是简单的 net-tools 并且大多数发行版都提供它。

安装软件:


$ sudo apt install net-tools

如果不带参数启动 netstat,它将打印打开的套接字列表,然后退出。但由于它是一个多功能工具,您可以根据需要控制要查看的内容。首先,如果你需要连续输出,-c会帮助你,类似于tcpdump。

从现在开始,Linux 网络子系统的各个方面都可以包含在 netstat 的输出中:带有 -r 的路由、带有 -i 的接口、协议(–protocol=$family for某些选择,如 unix、inet、ipx...),如果您只需要监听套接字,则 -l 或 -e 用于扩展信息。

显示的默认列是活动连接、接收队列、发送队列、本地和外部地址、状态、用户、PID/名称、套接字类型、套接字状态或路径。这些只是 netstat 显示的最有趣的信息,但不是唯一的。像往常一样,请参阅手册页。

nmap

我们将在网络部分讨论的最后一个实用程序是 nmap。它的名字来自网络映射器,它作为网络/端口扫描器很有用,对于网络审计来说是无价的。它既可以在远程主机上使用,也可以在本地主机上使用。如果您想查看 C 类网络上哪些主机处于活动状态,您只需键入:


$ nmap 192.168.0/24

nmap 将返回一些如下输出:


Nmap scan report for 192.168.0.1
Host is up (0.0065s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
23/tcp open  telnet
80/tcp open  http

Nmap scan report for 192.168.0.102
Host is up (0.00046s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for 192.168.0.103
Host is up (0.00049s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

我们可以从这个简短的示例中了解到:nmap 支持 CIDR 表示法来扫描整个(子)网络,速度很快,并且默认情况下会显示每个主机的 IP 地址和任何开放端口。如果我们只想扫描网络的一部分,比如 20 到 30 的 IP,我们会这样写:


$ nmap 192.168.0.20-30

这是 nmap 最简单的用法。它可以扫描主机的操作系统版本、脚本和跟踪路由(使用 -A)或使用不同的扫描技术,如 UDP、TCP SYN 或 ACK。它还可以尝试通过防火墙或 IDS、进行 MAC 欺骗和各种巧妙的技巧。 这个工具可以做很多事情,所有这些都记录在手册页中。请记住,一些(大多数)管理员不太喜欢有人扫描他们的网络,所以不要给自己带来麻烦。 nmap 开发人员建立了一个主机 scanme.nmap.org,其唯一目的是测试各种选项。让我们尝试以详细方式查找它正在运行的操作系统(对于高级选项,您需要 root):


$ nmap -A -v scanme.nmap.org

输出示例:


NSE: Script Scanning completed.
Nmap scan report for scanme.nmap.org (74.207.244.221)
Host is up (0.21s latency).
Not shown: 995 closed ports
PORT    STATE    SERVICE      VERSION
22/tcp  open     ssh          OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0)
| ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)
|_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)
80/tcp  open     http         Apache httpd 2.2.14 ((Ubuntu))
|_html-title: Go ahead and ScanMe!
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
OS fingerprint not ideal because: Host distance (14 network hops) is greater than five
No OS matches for host
Uptime guess: 19.574 days (since Fri Sep 30 08:34:53 2011)
Network Distance: 14 hops
TCP Sequence Prediction: Difficulty=205 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux
[traceroute output supressed]

我们建议您还看一下 netcat、snort 或 aircrack-ng。正如我们所说,我们的清单并不详尽。

如需更多帮助,请参阅有关如何监视 Linux 系统上的网络活动的其他指南。

系统监控

假设您发现您的系统开始出现密集的 HDD 活动,并且您只在其上玩 Nethack。您可能想看看发生了什么。或者,您可能安装了一个新的网络服务器,并且想看看它的表现如何。这部分是给你的。

就像网络部分一样,有很多工具(图形或 CLI)可以帮助您了解正在管理的计算机的状态。我们不会谈论图形工具,比如 gnome-system-monitor,因为安装在经常使用这些工具的服务器上的 X 并没有什么意义。

第一个系统监控实用程序是个人最喜欢的,也是世界各地系统管理员使用的小实用程序。它称为 top,应该默认安装。但是,如果没有,请执行以下命令:


$ sudo apt install procps

您可以不带任何选项执行命令:


$ top

top 是一个进程查看器(还有 htop,一个更赏心悦目的变体),正如您所看到的,它可以为您提供所需的所有信息。查看系统上正在运行的内容:进程、PID、用户、状态、时间、CPU 使用率等。

我通常以 -d 1 开始 top,这意味着它应该每秒运行并刷新(不带选项运行 top 将延迟值设置为 3)。一旦top启动,按某些键将帮助您以各种方式对数据进行排序:如果您使用SMP机器和内核,按1将显示所有CPU的使用情况,P在CPU使用之后列出进程,M在内存使用之后排序,很快。如果您想运行 top 特定次数,请使用 -n $number。当然,联机帮助页将使您能够访问所有选项。

要安装 htop,请使用以下命令:


$ sudo apt install htop

要从任一应用程序退出屏幕,请使用键盘上的 Q 键。

虽然 top 可以帮助您监视系统的内存使用情况,但还有其他专门为此目的编写的应用程序。其中两个是free 和vmstat(虚拟内存状态)。我们通常仅将 free 与 -m 标志(兆字节)一起使用,其输出如下所示:


               total       used       free     shared    buffers     cached
Mem:          2012       1913         98          0          9        679
-/+ buffers/cache:       1224        787
Swap:         2440        256       2184

vmstat 输出更加完整,因为它还会向您显示 I/O 和 CPU 统计信息等。 free 和 vmstat 也是 procps 软件包的一部分,至少在 Debian 和 Ubuntu 系统上是这样。但说到进程监控,最常用的工具是 ps,它也是 procps 包的一部分。

它可以用 pstree 来完成,它是 psmisc 的一部分,它以树状结构显示所有进程。 ps 最常用的一些标志包括 -a (所有带有 tty 的进程)、-x (对 -a 的补充,请参阅手册页对于 BSD 样式)、-u(面向用户的格式)和 -f(类似森林的输出)。这些只是格式修饰符,而不是经典意义上的选项。这里必须使用手册页,因为 ps 是您会经常使用的工具。


$ ps aux

其他系统监控工具包括 uptime (名称是不言自明的)、who(用于列出登录用户)、lsof(列出打开的文件)或 sar,sysstat 包的一部分,用于列出活动计数器。

如需更多帮助,请参阅我们编写的其他一些指南:

  • 如何监控 Linux 上的 RAM 使用情况

  • 如何检查和监控 Linux 上的 CPU 利用率

  • 如何在 Linux 中使用 ps 命令:初学者指南

结论

如前所述,此处列出的实用程序列表绝不是详尽无遗的。我们的目的是整理一篇文章来解释日常使用的主要监控工具。这不会取代阅读和使用现实生活中的系统来完全理解问题。

©2015-2025 Norria support@alaica.com