하루보다 오래된 데이터 포인트에 대해 sar(sysstat)를 쿼리하는 방법

하루보다 오래된 데이터 포인트에 대해 sar(sysstat)를 쿼리하는 방법
  1. 날짜와 시간을 시간뿐만 아니라 시작 시간(-s) 또는 종료 시간(-e)으로 받아들이는 "sar" 명령이 표시되지 않습니다. 그렇다면 "sar"를 쿼리하여 하루보다 오래된 날짜와 시간을 가진 데이터 포인트를 얻으려면 어떻게 해야 합니까(-f는 여기서는 도움이 되지 않습니다). "sar" 명령의 출력에는 시간과 분 단위의 시간뿐만 아니라 데이터 포인트의 날짜 값도 있어야 합니다.
  2. sysstat가 pa 데이터 파일을 매일 분할하는 것을 봤습니다. 단일 pa 파일에서 매주 sysstat(sa1/sa2) 데이터를 수집하도록 기본 sysstat cron 항목을 수정할 수 있습니까?

시스템 상태 구성:

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초 단위의 기계 가동 시간과 에포크 이후 경과된 시간(초)도 포함되어 있습니다. 값이 어떻게 사용되는지 확인하려면 더 많은 작업을 수행해야 하므로(이 작업은 수행하지 않음) 이는 증거라기보다는 힌트에 가깝습니다.

관련 정보