How do I configure sar to collect disk information (ala -d)?

Solution 1:

The sysstat service which runs the sa binaries is not collecting disk statistics in /var/log/sa files. This is turned off by default to prevent the logs from growing large on systems with hundreds or thousands of block devices.

When you run sar to report disk statistics, the Requested activities not available in file message is telling you that sa hasn't been collecting disk statistics, so sar can't display anything.

You can add config parameters with the SADC_OPTIONS value in /etc/sysconfig/sysstat

The ability to do this was added in Bug 598794 so you'll need to be running sysstat-7.0.2-11.el5 or later.

Edit your /etc/sysconfig/sysstat file to include a line like:

SADC_OPTIONS="-d"

then service sysstat restart

Give it some time for data to collect (at least 20 minutes), then sar -d should work.

Solution 2:

Read the man page on sadc to learn what the various options do in the config file for sysstat. You should see something like:

-S { INT | DISK | SNMP | IPV6 | POWER | XDISK | ALL | XALL }
     Specify which optional activities should be collected by sadc.  

The default in CentOS 6 and CentOS 7 is -S DISK, but e.g. I have replaced that with -S SNMP on a box responsible for network monitoring. You can use multiples like this: -S DISK -S POWER -S INT.

Note that you get many statistics by default with sadc. The -S options just add more.

Try something like this to learn how sadc and sar are related:

# /usr/lib64/sa/sadc -S INT -S DISK 10 10 /tmp/test
(... wait 10 * 10 = 100 seconds ...)
# sar -f /tmp/test | head
Linux 3.10.0-123.20.1.el7.x86_64 (icinga02.foo)   11/02/15  _x86_64_   (4 CPU)

15:17:41        CPU     %user     %nice   %system   %iowait    %steal     %idle
15:17:51        all     13.94      0.00      2.48      0.03      0.00     83.55
15:18:01        all     14.71      0.00      2.46      0.00      0.00     82.83
15:18:11        all     17.72      0.00      1.88      0.00      0.00     80.40
15:18:21        all     11.47      0.00      1.30      0.00      0.00     87.22
15:18:31        all     18.43      0.00      1.98      0.00      0.00     79.59

Note you can extract many other stats from that file now, like load instead of cpu:

# sar -q -f /tmp/test | head
Linux 3.10.0-123.20.1.el7.x86_64 (icinga02.foo)   11/02/15  _x86_64_   (4 CPU)

14:20:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
14:30:01            0       239      0.64      0.54      0.50         0
14:40:01            0       240      1.10      1.01      0.74         0
14:50:01            0       242      0.98      0.97      0.84         0
15:00:01            0       243      1.14      0.94      0.88         0
15:10:01            0       242      0.63      0.74      0.82         0
15:20:01            1       244      0.60      0.57      0.68         0
Average:            0       242      0.85      0.80      0.74         0