如何查询 sar(sysstat) 超过一天的数据点

如何查询 sar(sysstat) 超过一天的数据点
  1. 我没有看到“sar”命令接受日期和时间作为开始时间(-s)或结束时间(-e),而不仅仅是时间。那么,如何查询“sar”以获取具有较早日期和时间的一天以上的数据点(-f 在这里没有帮助)。“sar”命令的输出也应该具有数据点的日期值 - 而不仅仅是小时和分钟的时间。
  2. 我看到 sysstat 每天都会分割 pa 数据文件。是否可以修改默认的 sysstat cron 条目以每周在单个 pa 文件中收集 sysstat(sa1/sa2) 数据。

系统状态配置:

cat /etc/sysconfig/sysstat
# sysstat-9.0.4 configuration file.

# 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=7

# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=10

# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"

sysstat cron 条目:

cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

答案1

您不能直接这样做。 sar(systat) 和朋友基本上仅限于每日记录。来自“sadc.c”(在 sysstat-11.7.2 中):

 485 void setup_file_hdr(int fd)
 486 {
 ...
 507     file_hdr.sa_day         = rectime.tm_mday;
 508     file_hdr.sa_month       = rectime.tm_mon;
 509     file_hdr.sa_year        = rectime.tm_year;

所以文件头只包含一天。

个人记录的格式有点令人信服。来自“sa.h”:

 604 struct record_header {
 ...
 617     /*
 618      * Timestamp: Hour (0-23), minute (0-59) and second (0-59).
 619      * Used to determine TRUE time (immutable, non locale dependent time).
 620      */
 621     unsigned char hour;
 622     unsigned char minute;
 623     unsigned char second;

但是,该结构还包含以 1/100 秒为单位的机器正常运行时间以及自纪元以来的秒数。我必须做更多的事情来看看这些值是如何使用的(我不会这样做),所以这更多的是一个提示而不是证明。

相关内容