在本篇文章中,我们会介绍sysstat和dstat,但首先让我们来回顾一下传统工具的使用。
原生Linux 工具
使用df,你可以报告磁盘空间以及文件系统的inode 使用情况。你需要监视这两者,因为缺少磁盘空间会阻止你保存更多文件(甚至会导致系统崩溃),就像耗尽inode 意味着你不能将文件链接到对应的数据结构,从而导致同样的结果:你不能将那些文件保存到磁盘中。
#df-h --total [生成总计]
检查Linux 总的磁盘使用
#df-i [显示文件系统的inode 数目]
#df-i --total [生成总计]
检查Linux 总的inode 数目
用du,你可以估计文件、目录或文件系统的文件空间使用。
举个例子,让我们来看看/home 目录使用了多少空间,它包括了所有用户的个人文件。第一条命令会返回整个/home 目录当前使用的所有空间,第二条命令会显示子目录的分类列表:
#du-sch /home
#du-sch /home/*
检查Linux 目录磁盘大小
别错过了:
· 检查 Linux 磁盘空间使用的 12 个‘df’命令例子
· 查看文件/目录磁盘使用的 10 个‘du’命令例子
另一个你工具集中不容忽视的工具就是vmstat。它允许你查看进程、CPU 和 内存使用、磁盘活动以及其它的大概信息。
如果不带参数运行,vmstat 会返回自从上一次启动后的平均信息。尽管你可能以这种方式使用该命令有一段时间了,再看一些系统使用率的例子会有更多帮助,例如在例子中定义了时间间隔。
例如
#vmstat510
会每个5秒返回10 个事例:
检查Linux 系统性能
正如你从上面图片看到的,vmstat 的输出分为很多列:proc(process)、memory、swap、io、system、和CPU。每个字段的意义可以在vmstat man 手册的FIELD DESCRIPTION 部分找到。
在哪里vmstat 可以派上用场呢?让我们在yum 升级之前和升级时检查系统行为:
#vmstat-a 15
Vmstat Linux 性能监视
请注意当磁盘上的文件被更改时,活跃内存的数量增加,写到磁盘的块数目(bo)和属于用户进程的CPU 时间(us)也是这样。
或者直接保存一个大文件到磁盘时(由dsync 标志引发):
#vmstat-a 15
#ddif=/dev/zero of=dummy.out bs=1Mcount=1000oflag=dsync
Vmstat Linux 磁盘性能监视
在这个例子中,我们可以看到大量的块被写入到磁盘(bo),这正如预期的那样,同时CPU 处理任务之前等待IO 操作完成的时间(wa)也增加了。
别错过: Vmstat – Linux 性能监视
其它Linux 工具
正如本文介绍部分提到的,这里有其它的工具你可以用来检测系统状态和利用率(不仅红帽,其它主流发行版的官方支持库中也提供了这些工具)。
sysstat软件包包含以下工具:
· sar (收集、报告、或者保存系统活动信息)。
· sadf (以多种方式显示sar 收集的数据)。
· mpstat (报告处理器相关的统计信息)。
· iostat (报告CPU 统计信息和设备以及分区的IO统计信息)。
· pidstat (报告Linux 任务统计信息)。
· nfsiostat (报告NFS 的输出/输出统计信息)。
· cifsiostat(报告CIFS 统计信息)
· sa1 (收集并保存二进制数据到系统活动每日数据文件中)。
· sa2 (在/var/log/sa 目录写入每日报告)。
dstat比这些工具所提供的功能更多一些,并且提供了更多的计数器和更大的灵活性。你可以通过运行yum info sysstat 或者yum info dstat 找到每个工具完整的介绍,或者安装完成后分别查看每个工具的man 手册。
安装两个软件包:
#yumupdate && yuminstall sysstat dstat
sysstat主要的配置文件是
/etc/sysconfig/sysstat
。你可以在该文件中找到下面的参数:#Howlongto keep log files (indays).
#Ifvalue isgreater than 28,thenlog files are kept in
#multiple directories, one foreach month.
HISTORY=28
#Compress(usinggzip orbzip2) sa andsarfiles older than (indays):
COMPRESSAFTER=31
#Parametersforthe system activity data collector (see sadc manual page)
#which are used forthe generation of log files.
SADC_OPTIONS="-S DISK"
#Compressionprogram 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 11
第二个任务在每天夜间11:53 生成每日进程计数总结并把它保存到
/var/log/sa/sarXX
文件,其中XX 和之前例子中的含义相同:5323* * * root /usr/lib64/sa/sa2 -A
例如,你可能想要输出该月份第6 天从上午9:30 到晚上5:30 的系统统计信息到一个LibreOffice Calc 或Microsoft Excel 可以查看的.csv 文件(这样就可以让你创建表格和图片了):
#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 应用中使用这些数据的时候非常有用。
Linux 系统统计信息
最后,让我们看看dstat 提供什么功能。请注意如果不带参数运行,dstat 默认使用-cdngy(表示CPU、磁盘、网络、内存页、和系统统计信息),并每秒添加一行(可以在任何时候用Ctrl + C 中断执行):
#dstat
Linux 磁盘统计检测
要输出统计信息到.csv 文件,可以用-output 标记后面跟一个文件名称。让我们来看看在LibreOffice Calc 中该文件看起来是怎样的:
检测Linux 统计信息输出
为了更多的阅读体验,我强烈建议你查看 dstat 和 sysstat 的pdf 格式man 手册。你会找到其它能帮助你创建自定义的详细系统活动报告的选项。