如何检查和监控Linux系统的CPU利用率
作为Linux管理员,密切关注服务器(或多个服务器)的运行情况非常重要。衡量其性能的一种方法是跟踪CPU使用情况。这将使您深入了解系统的性能,并显示硬件资源是如何在不同的运行服务中分配的。
在本指南中,我们将介绍几种检查和监控Linux系统上CPU利用率的方法。无论您是管理服务器还是只是管理您的个人桌面,计算机的CPU使用情况都是很容易获得的有用信息。
在本教程中,您将学习:
- 如何使用top命令检查cpu利用率
- 理解top和htop的输出
- 使用systat包监控cpu使用情况
- 如何配置cpu监控报警
如何使用top命令检查cpu利用率
检查当前CPU使用情况的一个好方法是使用top命令。这个命令的很多输出相当复杂,但它提供了关于系统上CPU使用情况的非常细粒度的信息。
$ top
这将在终端中打开一个显示,其中包含系统上运行的服务的实时视图、每个服务正在使用的系统资源数量,以及系统CPU利用率的总结等信息。
注意: top命令在所有Linux发行版中基本上都是一样的,尽管有一些变体可能会显示一些不同的信息——例如,以不同的顺序。
安装在Ubuntu系统上的top程序来自procps-ng包,这也是我们将在本文中使用的程序。要检查你的系统运行的是什么版本,使用-v选项:
$ top -v
期望结果:
procps-ng 3.3.12
top命令的显示窗口一开始并不是很友好,因为它包含了大量的信息以及使用了很多术语和缩写。我们将在下面介绍你需要知道的一切,这样你就可以从上面解释数据含义。
第一行显示(按顺序):系统时间,系统运行时间(距离上次重启有多长时间),活动用户会话数量,和系统的平均负载。平均负载对我们来说特别重要,因为它揭示了系统随时间变化的cpu使用情况。
Load average
平均负载有三个数字。这些数字分别是1分钟,5分钟和15分钟内的平均负载。将这些数字视为百分比—负载0.2表示20%,负载1.00表示100%。
这应该很容易理解,但你可能看到平均负载大于1.00.这是因为平均负载不是对cpu使用的直接度量。而是对系统试图处理的“工作”(负载)的度量。例如,值为2.50表示当前负载为250%,也表示系统过载高达150%。
top的第二行不言自明,显示系统上运行的任务数量,以及它们的当前状态。
第三行是我们查看cpu使用情况的地方,一些需要一点知识才能解释的详细统计数据。
CPU usage from top
- us: 花费在用户空间上的CPU时间百分比 (running user-spawned processes)。
- sy: 花费在内核空间的CPU时间百分比(running system processes)。
- ni: 运行用户定义优先级的进程所花费的CPU时间百分比(a specified nice value)。
- id: CPU空闲时间的百分比。
- wa: 用于等待硬件I/O的CPU时间百分比。例如:等待硬盘读完数据。
- hi: 用于处理硬件中断的CPU时间百分比。例如: 网卡(或任何硬件)中断CPU以通知它有新数据到达。
- si: 用于处理软件中断的CPU时间百分比。例如:高优先级业务导致CPU中断。
- st: 从虚拟机窃取的CPU时间百分比。例如: 为了处理物理机的工作负载,需要从虚拟机“窃取”资源的CPU
接下来的两行专门用于内存信息,与监控CPU使用无关。在它下面,有一个正在运行的进程列表和一个标题为%CPU的列,其中包含所列每个进程的当前CPU使用情况。
CPU usage percentage
这可以快速查看哪些服务消耗了最多的CPU资源。按“q”可以随时退出top。
使top更简单
由于top命令显示了大量详细信息,因此它不是快速查看CPU利用率的理想方法;然而,top为我们提供了一些选项来简化输出并节省一些复杂的细节。
当top
运行时,您可以按“t”键循环访问一些不同的视图,并获得更简单的CPU使用情况输出:
CPU usage graph
另一种选择是使用htop,它与top类似,但更适合于普通任务。您可以使用包管理器来安装它。
Ubuntu and Debian:
$ sudo apt-get install htop
CentOS and Red Hat:
# yum install htop
Fedora:
# dnf install htop
安装完成后,只需键入htop即可打开它
$ htop
从上面的截图可以看到,与top相比,htop的输出更简洁,更适合用于简单的CPU使用情况度量。
您可以退出此屏幕的方式与top相同,按’ q '。
检查CPU利用率的更多方法
还有一些工具可以用来检查CPU使用情况,它们包含在sysstat包中。您必须安装这个包才能使用这些命令。
Ubuntu and Debian:
$ sudo apt-get install sysstat
CentOS and Red Hat:
# yum install sysstat
一旦安装了sysstat包,您就可以使用mpstat
命令。这显示了许多与top
相同的信息,但以简洁的一次性输出。
[root@localhost ~]# mpstat
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 2021年08月19日 _x86_64_ (1 CPU)
15时19分17秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15时19分17秒 all 0.62 0.00 1.39 0.01 0.00 0.01 0.00 0.00 0.00 97.97
这个包附带的另一个命令是sar,当在命令中加上一个数字时,它最有用。这允许您指定sar命令输出CPU利用率信息的频率(以秒为单位)。
例如,每4秒检查一次CPU占用率:
$ sar 4
输出如下所示,每4秒输出一行:
[root@localhost ~]# sar 4
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 2021年08月19日 _x86_64_ (1 CPU)
15时21分09秒 CPU %user %nice %system %iowait %steal %idle
15时21分13秒 all 1.25 0.00 2.00 0.00 0.00 96.75
15时21分17秒 all 1.01 0.00 2.01 0.00 0.00 96.98
15时21分21秒 all 1.75 0.00 3.00 0.00 0.00 95.25
要使sar在一定数量的输出后停止,请指定第二个数字。例如:
$ sar 2 5
这将使sar每2秒检查一次CPU使用情况,共5次。它还将在输出的末尾显示所有5个探测的平均值。
如何配置监控警报
编写监视CPU使用情况的脚本有很多不同的方法。在本部分的指导中,我们将介绍一个可能的脚本,其每分钟监控CPU使用情况,并将其配置为在CPU使用高时发送电子邮件。
#!/bin/bash
CPU=$(sar 1 5 | grep "Average" | sed 's/^.* //')
CPU=$( printf "%.0f" $CPU )
if [ "$CPU" -lt 20 ]
then
echo "CPU usage is high!" | sendmail admin@example.com
fi
该脚本使用sed
从sar
获取平均cpu空闲百分比,然后使用if语句检查空闲百分比是否低于某个数字,如果低于,将向管理员发送电子邮件。在本例中,他被配置为20% - 换句话说,如果cpu使用率超过80%,管理员将受到一封电子邮件。
这个脚本可以按照需要进行调整,例如,如果您希望它向终端回显警告或记录到日志文件,而不是使用sendmail发送电子邮件。
当然,如果希望它日常化的运行,则需要从cron调用这个脚本。
$ crontab -e
要想每分钟运行一次,你可以这样写:
* * * * * /path/to/cpu-alert.sh
总结
在本文中,我们了解了如何检查和监控Linux系统上的CPU利用率。我们了解了多种可以帮助我们进行监视的工具,还了解了如何设置使用警报,以便在CPU利用率高时得到通知。
使用本指南中的各种方法,您将始终知道跟踪系统使用情况的最佳工具——无论您是需要详细信息,还是仅仅需要快速查看系统是如何分配CPU的。
参考链接:https://linuxconfig.org/how-to-check-and-monitor-cpu-utilization-on-linux
更多推荐
所有评论(0)