如何使用 Linux 工具集生成和提供系统活动报告 - 第 3 部分
作为系统工程师,您经常需要生成显示系统资源利用率的报告,以确保:1)系统资源得到最佳利用,2)防止瓶颈,3)确保可扩展性,等等。
除了用于检查磁盘、内存和 CPU 使用率的众所周知的本机 Linux 工具(仅举几个例子)之外,Red Hat Enterprise Linux 7 还提供了两个额外的工具集来增强您可以为报告收集的数据:sysstat和dstat。
在本文中我们将对这两者进行描述,但首先让我们回顾一下经典工具的用法。
原生 Linux 工具
使用df,您将能够报告文件系统的磁盘空间和 inode 使用情况。您需要同时监视这两者,因为空间不足将阻止您保存更多文件(甚至可能导致系统崩溃),就像用尽 inode 意味着您无法将更多文件与其相应的数据结构链接起来一样,从而产生相同的效果:您将无法将这些文件保存到磁盘。
# df -h [Display output in human-readable form] # df -h --total [Produce a grand total]
# df -i [Show inode count by filesystem] # df -i --total [Produce a grand total]
使用du,您可以估算文件、目录或文件系统的文件空间使用情况。
例如,让我们看看/home目录使用了多少空间,该目录包含用户的所有个人文件。第一个命令将返回整个/home目录当前使用的总空间,而第二个命令还将按子目录显示分类列表:
# du -sch /home # du -sch /home/*
不要错过:
您的工具集中另一个不可缺少的实用程序是vmstat。它可以让您快速查看有关进程、CPU 和内存使用情况、磁盘活动等的信息。
如果运行时不带参数,vmstat将返回自上次重启以来的平均值。虽然您可能偶尔会使用这种形式的命令,但更有用的是,逐个采集一定数量的系统利用率样本,并在样本之间定义时间间隔。
例如,
# vmstat 5 10
将返回每 5 秒采集的 10 个样本:
如上图所示,vmstat 的输出按列划分:procs(进程)、memory、swap、io、system和cpu。每个字段的含义可以在vmstat手册页的FIELD SOCIALISTS部分中找到。
vmstat在哪里有用?让我们检查一下yum update之前和期间系统的行为:
# vmstat -a 1 5
请注意,随着磁盘上的文件被修改,活动内存的数量会增加,写入磁盘的块数(bo)和专用于用户进程的 CPU 时间(us)也会增加。
或者在将大文件直接保存到磁盘的过程中(由dsync引起):
# vmstat -a 1 5 # dd if=/dev/zero of=dummy.out bs=1M count=1000 oflag=dsync
在这种情况下,我们可以看到有更多的块被写入磁盘(bo),这是可以预料到的,但也增加了 CPU 时间,因为它必须等待 I/O 操作完成后才能处理任务(wa)。
不要错过:Vmstat – Linux 性能监控
其他 Linux 工具
正如本章介绍中所提到的,还有其他工具可用于检查系统状态和利用率(它们不仅由Red Hat提供,而且也由其他主要发行版从其官方支持的存储库提供)。
sysstat软件包包含以下实用程序:
- sar(收集、报告或保存系统活动信息)。
- sadf(以多种格式显示sar收集的数据)。
- mpstat(报告处理器相关的统计数据)。
- iostat(报告设备和分区的 CPU 统计信息和 I/O 统计信息)。
- pidstat(报告Linux任务的统计信息)。
- nfsiostat(报告 NFS 的输入/输出统计信息)。
- cifsiostat(报告 CIFS 统计数据)和
- sa1(收集并将二进制数据存储在系统活动每日数据文件中。
- sa2 (在/var/log/sa目录中写每日报告)工具。
而dstat则为这些工具提供的功能添加了一些额外的特性,以及更多的计数器和灵活性。您可以分别运行yum info sysstat或yum info dstat来找到每个工具的总体描述,或者在安装后查看各个手册页。
要安装这两个包:
# yum update && yum install sysstat dstat
sysstat的主要配置文件是/etc/sysconfig/sysstat。您将在该文件中找到以下参数:
# How long to keep log files (in days). # If value is greater than 28, then log files are kept in # multiple directories, one for each month. HISTORY=28 # Compress (using gzip or bzip2) sa and sar files older than (in days): COMPRESSAFTER=31 # Parameters for the system activity data collector (see sadc manual page) # which are used for the generation of log files. SADC_OPTIONS="-S DISK" # Compression program to use. ZIP="bzip2"
安装sysstat后,会在/etc/cron.d/sysstat中添加并启用两个 cron 作业。第一个作业每10 分钟运行一次系统活动统计工具,并将报告存储在/var/log/sa/saXX中,其中XX是月份中的日期。
因此,/var/log/sa/sa05将包含自每月 5 号以来的所有系统活动报告。这假设我们使用上述配置文件中HISTORY变量的默认值:
*/10 * * * * root /usr/lib64/sa/sa1 1 1
第二项作业在每天晚上11:53生成进程记帐的每日摘要,并将其存储在/var/log/sa/sarXX文件中,其中XX 的含义与上例中的含义相同:
53 23 * * * root /usr/lib64/sa/sa2 -A
例如,您可能希望将每月 6 号上午 9:30到下午 5:30 的系统统计信息输出到.csv文件中,该文件可使用LibreOffice Calc或Microsoft Excel轻松查看(此方法还允许您创建图表或图形):
# sadf -s 09:30:00 -e 17:30:00 -dh /var/log/sa/sa06 -- | sed 's/;/,/g' > system_stats20150806.csv
您也可以在上面的sadf命令中使用-j标志而不是-d来以JSON格式输出系统统计信息,例如,如果您需要在 Web 应用程序中使用数据,这可能会很有用。
最后,让我们看看dstat能提供什么。请注意,如果不带参数运行,dstat默认采用-cdngy (分别是 CPU、磁盘、网络、内存页面和系统统计信息的缩写),并每秒添加一行(可以随时使用Ctrl + C中断执行):
# dstat
要将统计数据输出到.csv文件,请使用–output标志,后跟文件名。让我们看看这在 LibreOffice Calc 上的样子:
为了方便阅读,我强烈建议您查看 dstat 的手册页以及 PDF 格式的 sysstat 手册页。您会发现其他几个选项可帮助您创建自定义和详细的系统活动报告。
不要错过: Sysstat – Linux 使用活动监控工具
概括
在本指南中,我们解释了如何使用RHEL 7提供的原生 Linux 工具和特定实用程序来生成系统利用率报告。在某个时候,您会将这些报告视为最好的朋友。
您可能已经使用了我们在本教程中未介绍的其他工具。如果是这样,请随意与社区其他成员分享它们以及您可能有的任何其他建议/问题/评论 - 使用下面的表格。
我们期待您的回复。