linux系统下安装sar
在我最近的文章4用于Linux系统监视的开源工具中 ,我讨论了有助于解决系统问题的交互式工具。 我还提到了sar
命令以及它与交互式命令的区别。 在解决问题时, sar
命令是我的最爱之一。 对于似乎在不看的时候就表现出来的那些问题特别有用。
并且,当您真正想了解原始数据时,/ proc文件系统具有您所需的一切。
使用SAR
SAR代表系统活动报告程序。 其主要功能是收集每天的系统性能数据并将其存储在日志文件中,以供以后显示。 数据以10分钟的平均值进行收集,但是也可以配置更详细的收集。 数据保留一个月。
安装与配置
SAR作为基于Red Hat的发行版中sysstat软件包的一部分安装。 (检查发行版的手册页以获取安装详细信息。)
dnf -y install sysstat
在将sar作为sysstat软件包的一部分安装后,通常无需执行任何操作即可更改其配置。 每小时每小时每10分钟收集一次数据。 请注意,sar命令的输出可能非常宽-太宽,无法在本文中使用。 因此,如果您刚刚安装了sysstat软件包,则应该等待30分钟左右,以便收集可以在本文其余部分中使用的数据。 但是,如果要更改数据收集的时间,则必须配置cron或systemd配置文件。
直到Fedora 20 sysstat
,/ etc / sysstat
cron作业都控制着sar数据收集和每日摘要处理。 从Fedora 2X开始,sar不再使用cron作业来控制其收集和每日摘要活动,而systemd接管了这些职责。 如果需要更改任何内容,请在/ usr / lib / systemd / system目录中查看sysstat服务,摘要并收集文件。 文件很小,不言自明。
对sar配置进行任何更改的唯一时间是我需要每分钟而不是每10分钟收集一次数据,以便更好地处理发生特定问题的确切时间。 每天将sar数据存储在/ var / log / sa目录中的两个文件中。 比每10分钟更频繁地收集数据会导致这些文件变得非常大。
在我工作的一个地方,我们遇到了一个问题,问题开始并Swift升级,以至于默认的10分钟间隔无助于确定首先发生的是:CPU负载,磁盘活动过多或其他问题。 使用1分钟的时间间隔,我们不仅确定CPU活动高,而且在此之前有一个短暂的高网络活动和高磁盘活动间隔。 最终,我们确定这是Web服务器上的无意拒绝服务(DOS)攻击,并且由于计算机中安装的RAM太少而无法处理临时过载的事实使情况变得复杂。 在现有的2GB内存中添加2GB的RAM解决了该问题,并且进一步的DOS攻击也没有引起问题。
检查收集的数据
sar命令的输出可以是详细的,也可以选择限制显示的数据。 例如,输入不带任何选项的sar
命令,该命令仅显示聚合的CPU性能数据。 sar命令默认使用当前日期,从午夜开始,因此您应该只看到今天的CPU数据。
另一方面,使用sar -A
命令显示今天已收集的所有数据。 输入sar -A | less
现在使用sar -A | less
命令,并在输出中分页以查看SAR收集的多种类型的数据,包括磁盘和网络使用情况,CPU上下文切换(CPU每秒从一个程序切换到另一程序的次数),页面交换,内存和交换空间使用量等等。 使用sar命令的手册页来解释结果并了解许多可用选项。 这些选项中的许多选项使您可以查看特定的数据,例如网络和磁盘性能。
我通常使用sar -A
命令,因为许多可用的数据类型是相互关联的,有时我会在输出的某个部分中找到一些性能问题的线索,而我可能没有看过。 -A
选项显示所有收集的数据类型。
看一下sar -A | less
的整个输出sar -A | less
sar -A | less
命令,以了解显示的数据的类型和数量。 确保查看CPU使用率数据以及每秒启动的进程(proc / s)和每秒上下文切换(cswch / s)。 如果上下文切换的数量Swift增加,则可能表明正在运行的进程非常频繁地被CPU交换掉。
您可以使用sar -u
命令将数据总量限制为CPU活动总量。 尝试这样做,请注意,您仅获得复合CPU数据,而不是单个CPU的数据。 也可以尝试使用-r
选项存储,并使用-S
交换空间。 组合这些选项,以便以下命令将显示CPU,内存和交换空间:
sar -urS
使用-p
选项将显示硬盘驱动器的块设备名称,而不是更多的加密设备标识符,并且-d
仅显示块设备-硬盘驱动器。 发出以下命令,使用/ dev目录中的名称以可读格式查看所有块设备数据:
sar -dp | less
如果只需要某些时间之间的数据,则可以使用-s
和-e
分别定义开始时间和结束时间。 以下命令显示今天7:50 AM到8:11 AM之间的所有CPU数据,包括单个数据和聚合数据:
sar -P ALL -s 07:50:00 -e 08:11:00
请注意,所有时间都必须采用24小时制。 如果您有多个CPU,则将分别详细列出每个CPU,并提供所有CPU的平均值。
下-n
命令使用-n
选项显示所有接口的网络统计信息:
sar -n ALL | less
前几天的数据
还可以通过指定所需的日志文件来检查前几天收集的数据。 假定今天是9月3日,并且您想查看昨天的数据,以下命令将显示9月2日的所有已收集数据。每个文件的最后两位数字是收集数据的当月日期:
sar -A -f /var/log/sa/sa02 | less
您可以使用下面的命令,其中DD
是昨天的一天:
sar -A -f /var/log/sa/saDD | less
实时数据
您还可以使用SAR显示(几乎)实时数据。 以下命令以5秒为间隔显示10次迭代的内存使用情况:
sar -r 5 10
对于sar来说,这是一个有趣的选择,因为它可以在定义的时间段内提供一系列数据点,可以对其进行详细检查和比较。 / proc文件系统上一篇文章中介绍的所有SAR数据和系统监视工具都必须来自某个地方。 幸运的是,所有这些内核数据都可以在/ proc文件系统中轻松获得。 实际上,由于那里存储的内核性能数据全部为ASCII文本格式,因此可以使用诸如cat
之类的简单命令进行显示,从而使各个程序不必加载自己的内核模块即可收集数据。 这样可以节省系统资源,并使数据更准确。 我在上一篇文章中讨论的SAR和系统监视工具都从/ proc文件系统收集数据。
请注意,/ proc是一个虚拟文件系统,仅在Linux运行时位于RAM中。 它不存储在硬盘驱动器上。
即使我不会详细介绍,/ proc文件系统也包含实时内核调整参数和变量。 因此,您可以通过简单地更改/ proc中适当的内核调整变量来更改内核调整。 无需重新启动。
切换到/ proc目录并在其中列出文件。除了数据文件之外,您还将看到大量的编号目录。 这些目录中的每一个都代表一个进程,其中目录名是进程ID(PID)。 您可以深入研究这些目录,以找到有关可能感兴趣的各个过程的信息。
要查看此数据,只需列出以下一些文件:
-
cmdline
—显示内核命令行,包括传递给它的所有参数。 -
cpuinfo
—显示有关CPU的信息,包括标志,型号名称步进和缓存大小。 -
meminfo
—显示有关内存的非常详细的信息,包括活动和非活动内存以及已分配和已使用的虚拟内存总量之类的数据,而其他工具并不总是显示这些信息。 -
iomem
和ioports
列出为各种I / O设备定义的内存范围和端口。
您将看到,尽管这些文件中提供了数据,但其中的许多数据都没有以任何方式进行注释。 这意味着您将要做的工作是识别和提取所需的数据。 但是,已经讨论过的监视工具已经针对它们要显示的数据执行了此操作。
/ proc文件系统中的数据太多,要了解更多信息,最好的方法是参考proc(5)手册页,其中包含有关在此找到的各种文件的详细信息。
下次,我将把所有这些放在一起,并讨论如何使用这些工具来解决问题。
翻译自: https://opensource.com/business/16/3/system-statistics-sar-and-proc-filesystem
linux系统下安装sar