시스템 활동 보고서 sar

  • 현재 시스템 활동을 모니터링, 기록통계보관, 보고하도록 구성
  • sar은 커널 카운터에서 지표를 수집한다.
  • 예약된 시간에 실행되어 시스템 활동을 기록하는 에이전트가 있다.
  • sar 명령을 사용하여 시스템 상태에 대한 순간 데이터를 수집할 수도 있다.

sysstat 구성파일

  • /etc/sysconfig/sysstat 에서 여러 옵션을 확인할 수 있다.
  • 예를들어, history 변수를 변경하여 sar 명령을 통해 아카이브가 유지되는 일수를 변경할 수 있다.
[root@RH442 system]# cat /etc/sysconfig/sysstat
# sysstat-11.7.3 configuration file.

# How long to keep log files (in days).
# If value is greater than 28, then use sadc's option -D to prevent older
# data files from being overwritten. See sadc(8) and sysstat(5) manual pages.
HISTORY=28

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

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

# Directory where sa and sar files are saved. The directory must exist.
SA_DIR=/var/log/sa

# Compression program to use.
ZIP="xz"

# By default sa2 script generates yesterday's summary, since the cron job
# usually runs right after midnight. If you want sa2 to generate the summary
# of the same day (for example when cron job runs at 23:53) set this variable.
#YESTERDAY=no

# By default sa2 script generates reports files (the so called sarDD files).
# Set this variable to false to disable reports generation.
#REPORTS=false
[root@RH442 system]#

대화형 sar 사용

  • sar 명령은 기본적으로 cpu 사용율 보고서를 생성한다. sar 명령에 interval count 를 넣는다.

 

옵션

  • -o 파일명 : 지표를 저장할 출력파일과 콘솔에 동시에 데이터를 쓴다.
  • -B : 메모리 페이징 통계
[root@RH442 system]# sar -B 1 3
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:29:23 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
01:29:24 AM      0.00      0.00      0.00      0.00      1.00      0.00      0.00      0.00      0.00
01:29:25 AM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:26 AM      0.00      0.00      0.00      0.00      1.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.67      0.00      0.00      0.00      0.00
[root@RH442 system]#
  • -b : 모든 장치에 대한 I/O 및 전송 통계
[root@RH442 system]# sar -b 1 3
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:29:32 AM       tps      rtps      wtps   bread/s   bwrtn/s
01:29:33 AM      0.00      0.00      0.00      0.00      0.00
01:29:34 AM      0.00      0.00      0.00      0.00      0.00
01:29:35 AM      0.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.00
[root@RH442 system]#
  • -d : 각 블록 장치에 대한 디스크 I/O 통계
[root@RH442 system]# sar -d 1 3
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:29:38 AM       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
01:29:39 AM  dev259-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:39 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:39 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:39 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

01:29:39 AM       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
01:29:40 AM  dev259-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:40 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:40 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:40 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

01:29:40 AM       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
01:29:41 AM  dev259-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:41 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:41 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:29:41 AM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
Average:     dev259-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:     dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:     dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
[root@RH442 system]#
  • -n : 네트워크 통계 (여러가지 지정해야 하는 항목이 있음, sar —help 에서 확인 가능)
        -n { <keyword> [,...] | ALL }
                Network statistics [A_NET_...]
                Keywords are:
                DEV     Network interfaces
                EDEV    Network interfaces (errors)
                NFS     NFS client
                NFSD    NFS server
                SOCK    Sockets (v4)
                IP      IP traffic      (v4)
                EIP     IP traffic      (v4) (errors)
                ICMP    ICMP traffic    (v4)
                EICMP   ICMP traffic    (v4) (errors)
                TCP     TCP traffic     (v4)
                ETCP    TCP traffic     (v4) (errors)
                UDP     UDP traffic     (v4)
                SOCK6   Sockets (v6)
                IP6     IP traffic      (v6)
                EIP6    IP traffic      (v6) (errors)
                ICMP6   ICMP traffic    (v6)
                EICMP6  ICMP traffic    (v6) (errors)
                UDP6    UDP traffic     (v6)
                FC      Fibre channel HBAs
                SOFT    Software-based network processing

[root@RH442 system]# sar -n IP 1 3
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:30:08 AM    irec/s  fwddgm/s    idel/s     orq/s   asmrq/s   asmok/s  fragok/s fragcrt/s
01:30:09 AM     11.00      0.00      1.00      1.00      0.00      0.00      0.00      0.00
01:30:10 AM      7.00      0.00      1.00      1.00      0.00      0.00      0.00      0.00
01:30:11 AM      6.00      0.00      1.00      1.00      0.00      0.00      0.00      0.00
Average:         8.00      0.00      1.00      1.00      0.00      0.00      0.00      0.00
[root@RH442 system]#
  • -r : 메모리 사용율 통계
[root@RH442 system]# sar -r 1 3
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:33:13 AM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
01:33:14 AM 1040135832 1037564380  15654216      1.48      4852    589204   2086648      0.20    295160    526732         0
01:33:15 AM 1040135804 1037564352  15654244      1.48      4852    589204   2086648      0.20    295160    526736         0
01:33:16 AM 1040135804 1037564352  15654244      1.48      4852    589204   2086648      0.20    295160    526740         0
Average:    1040135813 1037564361  15654235      1.48      4852    589204   2086648      0.20    295160    526736         0
[root@RH442 system]#
  • -q : 대기열 길이 및 부하
[root@RH442 system]# sar -q 1 3
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:34:17 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
01:34:18 AM         0      1500      0.00      0.00      0.00         0
01:34:19 AM         0      1500      0.00      0.00      0.00         0
01:34:20 AM         0      1500      0.00      0.00      0.00         0
Average:            0      1500      0.00      0.00      0.00         0
[root@RH442 system]#

이미 생성된 로그 파일 읽기

  • 이미 생성된 파일은 /var/log/sa/saDD 이런식으로 생성되어 있다.
  • -f 옵션으로 읽기를 수행할 수 있고, 위에 있는 각 항목별 옵션을 추가해서 해당 항목을 읽기할 수 있다.
[root@RH442 system]# sar -r -f /var/log/sa/sa28
Linux 4.18.0-553.el8_10.x86_64 (RH442)  11/28/2025      _x86_64_        (128 CPU)

01:10:59     LINUX RESTART      (128 CPU)

01:20:35 AM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
01:30:11 AM 1040135972 1037564624  15654076      1.48      4852    589184   2119472      0.20    295152    526620         0
Average:    1040135972 1037564624  15654076      1.48      4852    589184   2119472      0.20    295152    526620         0
[root@RH442 system]#

 

 

P 0 옵션은 0번 cpu 만 보는거. P ALL 은 모든 씨피유 보는거

 

 

네트워크 장치 통계 보기

 

 

 

비대화형 sar 사용

  • cron 을 통해 데이터를 수집하여 예약된 시간에 에이전트가 실행되도록 한다.
  • 두가지 파일이 있다. /usr/lib64/sa/sa1, sa2
  • sa1 스크립트 : /usr/lib64/sa/sadc를 호출하여 1초 측정 간격 동안 데이터를 수집한다.
  • sa2 스크립트 : 일일 보고서를 /var/log/sa/saDD 또는 saYYYYMMDD 파일에 작성한다.
  • systemctl status sysstat 서비스를 실행해야 한다.
  • sysstat 서비스는 현재 일일 데이터 파일에 더미 레코드를 삽입하여 카운터가 재설정된 시간을 표시함으로써 모든 메트릭 카운터를 0으로 설정한다.

 

SAR 구성 2가지

 

crontab

  • 사용자는 /usr/lib64/sa/sa1 및 /usr/lib64/sa/sa2 명령을 실행하는 예약된 작업을 /etc/cron.d/sysstat 파일에서 아래와 같이 구성한다. (없는파일임 직접 만들어야함)
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

sysstat-timer

  • /etc 에서 crontab, cron.d, cron.weekly 등에서 찾을수 없다면 systemd timer로 실행시키고 있는 것임.
[root@RH442 system]# systemctl list-timers | grep sysstat
Fri 2025-11-28 01:20:00 KST  2min 9s left n/a                          n/a          sysstat-collect.timer        sysstat-collect.service
Sat 2025-11-29 00:07:00 KST  22h left     n/a                          n/a          sysstat-summary.timer        sysstat-summary.service
  • sysstat-collector.service는 sa1을 수행하며, sysstat-osummary.service는 sa2를 수행한다.
[root@RH442 system]# cat sysstat-collect.service
# /usr/lib/systemd/system/sysstat-collect.service
# (C) 2014 Tomasz Torcz <tomek@pipebreaker.pl>
#
# sysstat-11.7.3 systemd unit file:
#        Collects system activity data
#        Activated by sysstat-collect.timer unit

[Unit]
Description=system activity accounting tool
Documentation=man:sa1(8)
After=sysstat.service

[Service]
Type=oneshot
User=root
ExecStart=/usr/lib64/sa/sa1 1 1

[root@RH442 system]# 

=============================================================================

[root@RH442 system]# cat sysstat-summary.service
# /usr/lib/systemd/system/sysstat-summary.service
# (C) 2014 Tomasz Torcz <tomek@pipebreaker.pl>
#
# sysstat-11.7.3 systemd unit file:
#        Generates daily summary of process accounting

[Unit]
Description=Generate a daily summary of process accounting
Documentation=man:sa2(8)
After=sysstat.service

[Service]
Type=oneshot
User=root
ExecStart=/usr/lib64/sa/sa2 -A
[root@RH442 system]#
  • 위 내용은 기본적으로 구성되어 있는 것이다.

systemd timer 사용

  • RHEL7 부터 systemd가 도입되면서, systemd timer unit라는 새로운 함수를 쓸 수 있다.
  • timer unit은 동일한 이름을 가진 다른 유형 (서비스같은) 유닛을 활성화한다. 이 timer unit을 사용하여 타이머 기반으로 다른 unit을 실행한다.
  • 디버깅을 쉽게 하기 위해, sytstemd 는 timer 이벤트를 system journal에 기록한다.
  • sysstat에서는 sa1, sa2를 수행해야 하는데, 각각 sa1를 위한 timer와 service, sa2를 위한 timer와 service가 존재한다.

sa1 : sysstat-collect.timer / sysstat-collect.service

sa2 : sysstat-summary.timer / sysstat-summary.service

  • sa1의 timer와 service를 열어보자.
[root@RH442 system]# cat sysstat-collect.timer
# /usr/lib/systemd/system/sysstat-collect.timer
# (C) 2014 Tomasz Torcz <tomek@pipebreaker.pl>
#
# sysstat-11.7.3 systemd unit file:
#        Activates activity collector every 10 minutes

[Unit]
Description=Run system activity accounting tool every 10 minutes

[Timer]
OnCalendar=*:00/10

[Install]
WantedBy=sysstat.service
[root@RH442 system]#

[Unit]

Description=Run system activity accounting tool every 10 minutes

→ 이 타이머가 하는 일을 설명합니다. 여기서는 "10분마다 시스템 활동을 기록하는 도구를 실행한다"고 되어 있습니다.

[Timer]

OnCalendar=*:00/10 -> 즉 매 10분마다 해당하는 장치 (sysstat-collect.service)를 활성화하는것이다.

→ 타이머가 실행되는 주기를 정의합니다.

*는 "매년, 매월, 매일"을 뜻합니다.
:00/10은 매 시각의 0분부터 시작해서 10분 간격으로 실행된다는 뜻입니다.

예: 00:00, 00:10, 00:20, ..., 23:50에 실행됩니다.

[Install]

WantedBy=sysstat.service

→ 이 타이머가 활성화될 때 관련된 서비스(sysstat.service)도 함께 동작하도록 설정합니다.

  • 즉 타이머를 통해 서비스를 실행하게 한다. 서비스는 아래와 같다.
[root@RH442 system]# cat sysstat-collect.service
# /usr/lib/systemd/system/sysstat-collect.service
# (C) 2014 Tomasz Torcz <tomek@pipebreaker.pl>
#
# sysstat-11.7.3 systemd unit file:
#        Collects system activity data
#        Activated by sysstat-collect.timer unit

[Unit]
Description=system activity accounting tool
Documentation=man:sa1(8)
After=sysstat.service

[Service]
Type=oneshot
User=root
ExecStart=/usr/lib64/sa/sa1 1 1

[root@RH442 system]#
  • 해당 서비스는 어떤식으로 실행되는지, 어떤 타입인지, 어떤 명령어를 수행하는지 등이 잘 나온다.
  • 더이상 자세한 설명은 생략한다.
  • 이 타이머를 활성화 하려면 일반적인 서비스와 동일하게 한다.
systemctl enable sysstat-collect.timer
systemctl start sysstat-collect.timer
  • sysstat을 enable 하고 실행하면 이 timer도 함께 자동으로 된다.
  • 또는 이런식으로 하면 한번에 enable도 된다.
systemctl enable --now <unitname>.timer
  • 타이머 상태를 확인하려면

systemctl status sysstat-collect.timer

systemctl status sysstat-collect.service

  • 타이머 장치의 구성파일 변경 후에는 리로드가 필요하다. 이 명령은 systemd에 변경 사항을 알리며, systemd 관리자 구성을 다시 로드한다
  • systemctl daemon-reload

참조

mpstat(1),iostat(1), pidstat(1), vmstat(8), sar(1), sa1(8), sa2(8), sadc(8), sysstat(5), systemd.time(7), systemd.timer(5) 도움말 페이지

SYSSTAT 유틸리티 홈 페이지에 오신 것을 환영합니다. https://sysstat.github.io

Brendan Gregg의 원본 그래픽은 Linux 성능 가시성: sar 여기서 확인 가능https://www.brendangregg.com/linuxperf.html

+ Recent posts