10个有效的unix-linux-呼叫中心服务器性能监控-的sar sysstat 案例

在呼叫中心系统中, 如何进行 呼叫中心服务器性能监控 是管理员经常遇到的一个问题. 使用sar,你可以即时地监视各种Linux子系统(如:CPU, Memory, I/O…),还可以收集并存储一个正在运行的基础性能数据,做一个历史性的分析来识别瓶颈。

Sar是sysstat包的一部分。本文解释如何安装和配置sysstat包(包含sar工具),并解释如何使用sar监控以下Linux性能统计数据。

  1. Collective CPU usage
  2. Individual CPU statistics
  3. Memory used and available
  4. Swap space used and available
  5. Overall I/O activities of the system
  6. Individual device I/O activities
  7. Context switch statistics
  8. Run queue and load average data
  9. Network statistics
  10. Report sar data from a specific time

 

一. 安装和配置sysstat

安装sysstat包

首先,确保最新版本的sar系统在你的机器上可以运行。根据您的系统版本,使用下列适合的方法进行安装。

sudo apt-get install sysstat
(or)
yum install sysstat
(or)
rpm -ivh sysstat-10.0.0-1.i586.rpm

从源代码安装Sysstat

从sysstat下载页面下载最新版本:http://sebastien.godard.pagesperso-orange.fr/download.html

当然,你也可以使用wget下载:

wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2

tar xvfj sysstat-10.0.0.tar.bz2

cd sysstat-10.0.0

./configure --enable-install-cron

注意:确保 – -enable-install-cron 配置选项。这确保接下来是自动安装。如果你不配置sysstat的这个选项,你必须自己手动创建了。

  • 创建/etc/rc.d/init.d/sysstat
  • 从/etc/rc.d/rc*.d/directories 到 /etc/rc.d/init.d/sysstat创建适当的链接,Linux引导过程会自动启动sysstat。
  • 例如,/etc/rc.d/rc3.d/S01sysstat会自动链接到/etc/rc.d/init.d/sysstat

执行./configure命令后,再执行以下命令,继续安装:

make

make install

注意:这将安装sar和其他systat实用程序 到/usr/local/bin下面。

一旦安装完毕,可使用“sar -V”命令来验证sar的版本,sysstat 10是当前的稳定版本。

$ sar -V

显示结果:
sysstat version 10.2.0
(C) Sebastien Godard (sysstat  orange.fr)

最后,确保sar可以运行。例如,下面给出了系统CPU统计3次(1秒间隔) 的数据。

$ sar 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)
01:27:32 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:27:33 PM       all      0.00      0.00      0.00      0.00      0.00    100.00
01:27:34 PM       all      0.25      0.00      0.25      0.00      0.00     99.50
01:27:35 PM       all      0.75      0.00      0.25      0.00      0.00     99.00
Average:          all      0.33      0.00      0.17      0.00      0.00     99.50

Sysstat的实用程序部分

以下是其他sysstat实用工具:

  • sar 收集和显示所有系统活动的统计数据。
  • sadc 代表“系统活动数据收集器”,这是sar进行数据收集的后端数据。
  • sa1 在二进制数据文件存储系统活动。 sa1要基于sadc完成存储。sa1从cron开始运行。
  • sa2 创建日常收集到的统计数据摘要。sa2从cron开始运行。
  • sadf 可以生成CSV,XML和其他多种格式的sar报告。用它可以和其他工具来集成sar数据。
  • iostat 生成 CPU, I/O 统计数据。
  • mpstat 显示 CPU 的统计结果。
  • pidstat 报告基于进程号 (PID)的统计数据。
  • nfsiostat 显示 NFS I/O (网络文件系统)统计数据。
  • cifsiostat 生成 CIFS (通用Internet文件系统)统计数据。

本文主要关注sysstat基本面和sar工具。

使用cron收集sar统计数据–sa1和sa2的统计数据

在/etc/cron.d目录下创建sysstat文件,可用来收集sar的历史数据。

# vi /etc/cron.d/sysstat

显示结果:
*/10 * * * * root /usr/local/lib/sa/sa1 1 1   #表示每10分钟
53 23 * * * root /usr/local/lib/sa/sa2 -A   #表示 23:53

如果已经用源码安装了sysstat,那么sa1和sa2的默认位置是 /usr/local/lib/sa。如果你使用发行版安装更新方法(例如:yum, up2date, 或 apt-get),默认位置一般为:/usr/lib/sa/sa1 和 /usr/lib/sa/sa2。

注意: 想全面了解 cron , 阅读 Linux Crontab: 15 Awesome Cron Job Examples.

 

/usr/local/lib/sa/sa1

  • 这个是每10分钟收集一次sar数据作为历史参考。
  • 如果你想每5分钟收集一次sar的统计数据,将/etc/cron.d/sysstat文件里的 */10 改成 */5 即可。
  • 这样一来,数据将被写到/var/log/sa/saXX 文件中。XX代表一个月中的几日。saXX文件是一个二进制文件,不能使用文本编辑器打开它而进行预览。
  • 例如:如果今天是某月的26号,那么sa1将会把sar数据写到/var/log/sa/sa26文件里。
  • 您可以传递两个参数给sa1:时间间隔(以秒为单位)和计数。
  • 在上面的crontab的例子:sa1 1 1意味着sa1每1秒收集1次sar数据(每隔10分钟)。

 

/usr/local/lib/sa/sa2

  • 这个是在接近午夜(在23:53)的时候创建sar数据日常的数据报告。
  • sa2创建 /var/log/sa/sarXX 文件 (注意,这个是不同于sa1中saXX 文件的). 这个 sarXX 文件是由sa2创建的一个可通过文本编辑器查看的ascii文件。
  • 这将删除超过一个星期的saXX文件。因此,需要写一个每周都会运行的快捷shell脚本,将/var/log/sa/*文件复制到其他目录中,以便进行历史的 sar数据分析。

 

二. 10个 Sar 用法的实际案例

 

有以下两种方法可以调用sar:

  1. sar 后面跟着一个选项 (不指定 saXX 数据文件)。这将寻找 当天的saXX数据文件和 截至到当前天之前的报告性能数据记录。
  2. sar后面跟着一个 -f 选项,指定一个 saXX 数据文件。这将报告特定某天的性能数据,即 XX是某月里XX号。

下面的例子中,我们将解释如何查看某些特定某日的性能数据。为了找到特定某日的,在sar命令后面加“-f /var/log/sa/saXX”语句。

所有的sar命令将有以下输出的第一行:

$ sar -u

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)
  • Linux 2.6.18-194.el5PAE – Linux系统的内核的版本。
  • (dev-db) – 收集sar数据的主机名。
  • 03/26/2011 – 收集sar数据的日期。
  • _i686_ – 系统构架。
  • (8 CPU) – 系统上可用的cpu数量。在多核心系统中, 用来表明cpu核心的总数。

1. CPU Usage of ALL CPUs (sar -u) —所有CPU的CPU使用率

sar -u 给出所有CPU的累积实时CPU使用率。”1  3″表示:每1秒报告一次,共报告3次。你可以通过最后一列的“%idle”(闲置百分比)来判断cpu的负载。

$ sar -u 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:27:32 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:27:33 PM       all      0.00      0.00      0.00      0.00      0.00    100.00
01:27:34 PM       all      0.25      0.00      0.25      0.00      0.00     99.50
01:27:35 PM       all      0.75      0.00      0.25      0.00      0.00     99.00
Average:          all      0.33      0.00      0.17      0.00      0.00     99.50

以下是一些参数:

  • sar -u 显示当前天的CPU使用率,直到当前时间点。
  • sar -u 1 3 显示实时 CPU 使用率, 每1秒报告一次,共报告3次。
  • sar -u ALL 功能和“sar -u”相同,只是多显示几列性能指标。
  • sar -u ALL 1 3 功能和“sar -u 1  3”相同,只是多显示几列性能指标。
  • sar -u -f /var/log/sa/sa10/var/log/sa/下的sa10文件中获取并显示一个月中10号的CPU使用率。

 

2. CPU Usage of Individual CPU or Core (sar -P) —单个CPU或单核的CPU使用率

假如在你的机器上有4个核(CPU),并且想查看个别核的使用情况,请按照如下操作:

“-P  ALL”表示:它应该显示所有单个核的统计数据

在接下来的例子中,“CPU”一列中的0,1,2,3表示对应的CPU核的编号。

$ sar -P ALL 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:34:12 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:34:13 PM       all     11.69      0.00      4.71      0.69      0.00     82.90
01:34:13 PM         0     35.00      0.00      6.00      0.00      0.00     59.00
01:34:13 PM         1     22.00      0.00      5.00      0.00      0.00     73.00
01:34:13 PM         2      3.00      0.00      1.00      0.00      0.00     96.00
01:34:13 PM         3      0.00      0.00      0.00      0.00      0.00    100.00

“-P 1″表示:表明它会只显示第2核的统计数据。(注意:核的编号从0开始)

$ sar -P 1 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:36:25 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:36:26 PM         1      8.08      0.00      2.02      1.01      0.00     88.89

以下是一些参数:

  • sar -P ALL 按所有核分解显示当前天的CPU使用率。
  • sar -P ALL 1 3 实时显示所有核CPU使用率,每1秒报告一次,共报告3次(按所有核分解显示)。
  • sar -P 1 显示当前天的核编号为1的CPU使用率。
  • sar -P 1 1 3 实时显示核号为1,每1秒显示1次,共显示3次 的CPU使用率。
  • sar -P ALL -f /var/log/sa/sa10 显示来自sa10文件,10号的CPU利用率,并且按所有核分解显示。

 

3. Memory Free and Used (sar -r) —内存空闲 和 内存使用

这个用来报告内存的统计数据。”1  3″表示:每1秒报告一次,共报告3次。你可以通过 “kbmemfree” 和 “kbmemused”两指标来得知 空闲内存 和 使用中内存。

$ sar -r 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

07:28:06 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact
07:28:07 AM   6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204
07:28:08 AM   6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204
07:28:09 AM   6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204
Average:      6209248   2097432     25.25    189024   1796544    141372      0.85   1921060     88204

以下是一些参数:

  • sar -r
  • sar -r 1 3
  • sar -r -f /var/log/sa/sa10

 

4. Swap Space Used (sar -S) —交换空间的使用情况

这个用来报告交换空间的统计数据。”1  3″表示:每1秒报告一次,共报告3次。如果“kbswpused” 和 “%swpused”都是0,则系统没发生交换。

$ sar -S 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

07:31:06 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
07:31:07 AM   8385920         0      0.00         0      0.00
07:31:08 AM   8385920         0      0.00         0      0.00
07:31:09 AM   8385920         0      0.00         0      0.00
Average:      8385920         0      0.00         0      0.00

以下是一些参数:

  • sar -S
  • sar -S 1 3
  • sar -S -f /var/log/sa/sa10

注意:

  • 使用“sar -r”来确定 空闲的、使用的 和 缓存 的内存页,在系统内(/秒)的数量情况。
  • 使用“sar -H”来识别 已使用 和 可用 的大内存页(hugepages) (单位:KB)。
  • 使用“sar -B”生成分页数据,即每秒有多少KB的数据页从硬盘写入或读出。
  • 使用“sar -W”生成交换页数据,即每秒有多少交换页。

 

5. Overall I/O Activities (sar -b) —总体的I/O活动

这个用来报告I/O(输入输出)的统计数据。”1  3″表示:每1秒报告一次,共报告3次。

以下字段出现在下面的例子中:

  • tps – 每秒处理事务数 (包括读和写,又叫做 系统吞吐量)。
  • rtps – 每秒读事务的数量。
  • wtps – 每秒写事务的数量。
  • bread/s – 每秒读字节数。
  • bwrtn/s – 每秒写字节数。
$ sar -b 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:56:28 PM       tps      rtps      wtps   bread/s   bwrtn/s
01:56:29 PM    346.00    264.00     82.00   2208.00    768.00
01:56:30 PM    100.00     36.00     64.00    304.00    816.00
01:56:31 PM    282.83     32.32    250.51    258.59   2537.37
Average:       242.81    111.04    131.77    925.75   1369.90

以下是一些参数:

  • sar -b
  • sar -b 1 3
  • sar -b -f /var/log/sa/sa10

注意:用“sar -v”显示 inode handlers, file handlers 和 pseudo-terminals 的数量

 

6. Individual Block Device I/O Activities (sar -d) —单个的I / O块设备活动

识别单个的块设备活动情况(即 特定的挂载点 或 逻辑单元号 或 分区)

$ sar -d 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:59:45 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:59:46 PM    dev8-0      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM    dev8-1      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM dev120-64      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM dev120-65      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM  dev120-0      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM  dev120-1      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM dev120-96      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91
01:59:46 PM dev120-97      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91

在上面的例子中,“DEV”表示:特定的块设备。

例如:“dev53-1″表示:53号主设备号,1号分设备号。

设备名称(DEV列)可以显示实际的设备名称(例如:sda sda1,sdb1等) ,如果加上 -p 参数,将显示如下:

$ sar -p -d 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:59:45 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:59:46 PM       sda      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM      sda1      1.01      0.00      0.00      0.00      0.00      4.00      1.00      0.10
01:59:46 PM      sdb1      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM      sdc1      3.03     64.65      0.00     21.33      0.03      9.33      5.33      1.62
01:59:46 PM      sde1      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM      sdf1      8.08      0.00    105.05     13.00      0.00      0.38      0.38      0.30
01:59:46 PM      sda2      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91
01:59:46 PM      sdb2      1.01      8.08      0.00      8.00      0.01      9.00      9.00      0.91

以下是一些参数:

  • sar -d
  • sar -d 1 3
  • sar -d -f /var/log/sa/sa10
  • sar -p -d

 

7. Display context switch per second (sar -w) —显示每秒上下文交换

这个用来报告每秒创建的进程总数 和 上下文交换数量。”1  3″表示:每1秒报告一次,共报告3次。

$ sar -w 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

08:32:24 AM    proc/s   cswch/s
08:32:25 AM      3.00     53.00
08:32:26 AM      4.00     61.39
08:32:27 AM      2.00     57.00

下面是一些参数:

  • sar -w
  • sar -w 1 3
  • sar -w -f /var/log/sa/sa10

 

8. Reports run queue and load average (sar -q) —运行中队列 和 平均负载的统计报告

这个用来报告最后1分钟、5分钟 和 15分钟的运行队列数量 以及 平均负载情况。”1  3″表示:每1秒报告一次,共报告3次。

$ sar -q 1 3

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

06:28:53 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
06:28:54 AM         0       230      2.00      3.00      5.00         0
06:28:55 AM         2       210      2.01      3.15      5.15         0
06:28:56 AM         2       230      2.12      3.12      5.12         0
Average:            3       230      3.12      3.12      5.12         0

注意:“blocked” 列显示的是当前已经阻塞并等待I/O操作完成的任务数。

以下是一些参数:

  • sar -q
  • sar -q 1 3
  • sar -q -f /var/log/sa/sa10

 

9. Report network statistics (sar -n) —网络统计报告

这个用来报告各种网络统计数据。例如:通过网卡接包(传送包)的数量、失败的数量 等。”1  3″表示:每1秒报告一次,共报告3次。

sar -n KEYWORD

KEYWORD 可以为下面的任意一个:

  • DEV – 显示eth0, eth1等的网络设备的重要统计数据。
  • EDEV – 显示网络设备的失败数据。
  • NFS – 显示NFS(网络文件系统)客户端活动情况。
  • NFSD – 显示NFS(网络文件系统)服务端活动情况。
  • SOCK – 显示IPV4使用的套接字。
  • IP – 显示IPv4 网络流量。
  • EIP – 显示IPv4 网络错误。
  • ICMP – 显示ICMPv4 网络流量。
  • EICMP – 显示ICMPv4 网络错误。
  • TCP – 显示 TCPv4 网络流量。
  • ETCP – 显示 TCPv4 网络错误。
  • UDP – 显示 UDPv4 网络流量。
  • SOCK6, IP6, EIP6, ICMP6, UDP6 are for IPv6
  • ALL – 这将显示以上所有信息,输出统计数据将非常长。
$ sar -n DEV 1 1

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

01:11:13 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
01:11:14 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:11:14 PM      eth0    342.57    342.57  93923.76 141773.27      0.00      0.00      0.00
01:11:14 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

10. Report Sar Data Using Start Time (sar -s) —统计特定开始时间的Sar数据

当你用“sar -f”参数从/var/log/sa/saXX 文件中查看sar历史数据时,假如你使用“sar -s 10:00:00″,则显示从早上10点开始的sar数据,而不是23:53,正如下面案例。

你可以结合-s参数和其他sar参数。

例如:统计本月26号从早上10点开始的平均负载数据,下面结合-q 和 -s参数。

$ sar -q -f /var/log/sa/sa23 -s 10:00:01

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

10:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:10:01 AM         0       127      2.00      3.00      5.00         0
10:20:01 AM         0       127      2.00      3.00      5.00         0
...
11:20:01 AM         0       127      5.00      3.00      3.00         0
12:00:01 PM         0       127      4.00      2.00      1.00         0

没有参数可以指定结束时间,只能像下面一样去使用头命令:

例如:从早上10点开始,你只想看到7项,你必须在输出时使用过滤,加一句“head -n 10″。

$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10

显示结果:
Linux 2.6.18-194.el5PAE (dev-db)        03/26/2011      _i686_  (8 CPU)

10:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:10:01 AM         0       127      2.00      3.00      5.00         0
10:20:01 AM         0       127      2.00      3.00      5.00         0
10:30:01 AM         0       127      3.00      5.00      2.00         0
10:40:01 AM         0       127      4.00      2.00      1.00         2
10:50:01 AM         0       127      3.00      5.00      5.00         0
11:00:01 AM         0       127      2.00      1.00      6.00         0
11:10:01 AM         0       127      1.00      3.00      7.00         2

Linux性能监控和调优还有很多,这只是很小的一部分,我们会用更多文章来展示。

 

 

 

 

 

 

 

 

 

 

 

 

 

索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心