OS OS 모니터링 하실 때 많이 사용되는 SAR에 대해 아시죠?
페이지 정보
작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 3,247회 좋아요 0회 작성일 23-12-17 20:13본문
오늘은 여러분들이 OS내에서 모니터링하실때 매우 자주 사용되는 SAR에 대해 알아보겠습니다.~
- SAR란 무엇입니까?
. SAR은 시스템 활동을 수집하고 보고하는 데 사용되는 유틸리티입니다. 대부분의 핵심 시스템 기능과 관련된 데이터를 수집하고 해당 측정항목을 이진 데이터 파일에 기록합니다.
. SAR은 sa## 파일(예: sa01)을 구체적으로 쿼리하거나 시스템에서 현재 실행 중인 통계를 요청하는 데 사용할 수 있는 바이너리(/usr/bin/sar)이기도 합니다.
Information and statistics collected include
CPU / IO / System / Nice / Idle percentages
Network Traffic / Network Errors
Load Average and Run queue
Interrupts
Memory Free / Cached / Buffered / Swapped
Device usage per Major/Minor number
And many others
* SAR은 iostat와 같은 다른 통계 보고 도구도 제공하는 sysstat 패키지에 의해 제공된다. 기본적으로 sysstat 패키지는 설치되지 않음에 유의한다.
1. 설치 방법
# yum install sysstat (repository가 연결되었을때)
or
# rpm -ivh sysstat (RPM 패키지 있을때)
2. 설정파일
1) /etc/sysconfig/sysstat
------------------------------------------------------------------------
# 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 //이 파라미터는 SAR에 성능 로그 파일이 보관되는 기간을 결정합니다. 기본값은 28일입니다
# Compress (using xz, gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=31 //이 파라미터는 SAR을 통해 압축할 파일의 경과 기간을 결정합니다. 기본값은 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 //SAR이 로그 파일을 저장하는 위치입니다.
# Compression program to use.
ZIP="xz" // 압축된 로그 파일이 포함되는 기본 zip 파일입니다.
// 31일을 초과하여 파일을 보관하는 경우 압축을 활성화해야 합니다. 압축 파일은 디스크에서 가능한 최소한의 공간을 차지합니다.
------------------------------------------------------------------------
2) /etc/systemd/system/sysstat.service.wants/sysstat-collect.timer(RHEL 8기준)
# vim /etc/systemd/system/sysstat.service.wants/sysstat-collect.timer
[Unit]
Description=Run system activity accounting tool every 10 minutes
[Timer]
OnCalendar=*:00/10 // 10분마다 데이터를 수집한다. 5분으로 줄일수있다. 하지만 데이터가 많아진다~
[Install]
WantedBy=sysstat.service
- 설정이 변경한 후에는 데몬을 재시작해줘야합니다.
# systemctl daemon-reload
3. 사용법
- SAR를 통해 현재 상태를 모니터링 할수도 있고, 과거 내역을 볼수도있다는 것이 장점입니다.
1) 현재 상태 확인
- 현재 CPU 상태를 1 초간격으로 10번 출력
# sar 1 10
Linux 5.14.0-362.13.1.el9_3.x86_64 17/12/23 _x86_64_ (16 CPU)
19:54:04 CPU %user %nice %system %iowait %steal %idle
19:54:05 all 0.00 0.00 0.06 0.00 0.00 99.94
19:54:06 all 0.00 0.00 0.00 0.00 0.00 100.00
19:54:07 all 0.00 0.00 0.06 0.00 0.00 99.94
19:54:08 all 0.00 0.00 0.00 0.00 0.00 100.00
19:54:09 all 0.00 0.00 0.00 0.00 0.00 100.00
19:54:10 all 0.06 0.00 0.00 0.00 0.00 99.94
19:54:11 all 0.00 0.00 0.00 0.00 0.00 100.00
19:54:12 all 0.00 0.00 0.00 0.00 0.00 100.00
19:54:13 all 0.00 0.00 0.00 0.00 0.00 100.00
19:54:14 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.01 0.00 0.01 0.00 0.00 99.98
- 현재 CPU 상태를 1초간격으로 5번 출력하는데, CPU 9번째 코어를 보는 명령어입니다.
# sar 1 5 -P 9
Linux 5.14.0-362.13.1.el9_3.x86_64 17/12/23 _x86_64_ (16 CPU)
19:56:53 CPU %user %nice %system %iowait %steal %idle
19:56:54 9 0.00 0.00 0.00 0.00 0.00 100.00
19:56:55 9 0.00 0.00 0.00 0.00 0.00 100.00
19:56:56 9 0.00 0.00 0.00 0.00 0.00 100.00
19:56:57 9 0.00 0.00 0.00 0.00 0.00 100.00
19:56:58 9 0.00 0.00 0.00 0.00 0.00 100.00
Average: 9 0.00 0.00 0.00 0.00 0.00 100.00
- 현재 MEM를 1초간격으로 3번 출력
# sar -r 1 3
Linux 5.14.0-362.13.1.el9_3.x86_64 17/12/23 _x86_64_ (16 CPU)
19:59:27 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
19:59:28 128599436 128495204 1396632 1.06 5812 779040 2151424 1.52 352268 842900 4
19:59:29 128599436 128495204 1396632 1.06 5812 779040 2151424 1.52 352268 842928 4
19:59:30 128599436 128495204 1396632 1.06 5812 779040 2151424 1.52 352268 842928 4
Average: 128599436 128495204 1396632 1.06 5812 779040 2151424 1.52 352268 842919 4
- 현재 io상태를 1초간격으로 3번 출력
# sar -b 1 3
Linux 5.14.0-362.13.1.el9_3.x86_64 17/12/23 _x86_64_ (16 CPU)
20:00:11 tps rtps wtps dtps bread/s bwrtn/s bdscd/s
20:00:12 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:00:13 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:00:14 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 현재 Disk상태를 1초 간격으로 2번 출력
# sar -d 1 2
Linux 5.14.0-362.13.1.el9_3.x86_64 17/12/23 _x86_64_ (16 CPU)
20:02:07 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
20:02:08 nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:02:08 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:02:08 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:02:08 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
20:02:09 nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:02:09 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:02:09 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
Average: nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 현재 NIC 상태를 1초 간격으로 2번 출력
# sar -n DEV 1 2
Linux 5.14.0-362.13.1.el9_3.x86_64 17/12/23 _x86_64_ (16 CPU)
20:06:50 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
20:06:51 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:06:51 eno1 8.00 1.00 0.50 0.15 0.00 0.00 0.00 0.00
20:06:51 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
20:06:52 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
20:06:52 eno1 3.00 3.00 0.34 0.35 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eno1 5.50 2.00 0.42 0.25 0.00 0.00 0.00 0.00
==> 이렇게 실시간으로 명령어 옵션들을 넣어 모든 상태를 볼수있습니다. 하지만 저는 SAR의 최대장점은 과거 데이터를 보는데 있다고 생각합니다.
이런 경우입니다.
Q-1) 서버가 언제 죽었어?
--> SAR 데이터를 보고 데이터가 멈춰진 시간을 보면 예측가능합니다.
Q-2) 서버가 라이브 행인데, 언제 부터 라이브 행이였어?
--> 서버 리부팅을 한 후 , SAR 데이터를 보고 확인이 가능합니다.
Q-3) 언제부터 이렇게 서버에 부하가 많았었나?
--> SAR를 통해 과거 데이터를 분석하여 그 시점을 찾을수있습니다.
Q-4) 언제부터 이렇게 메모리가 반환이 안된거야?
언제부터 CPU 사용율을 증가했지?
--> 과거 SAR데이터를 분석하여 그 시점을 찾을수있습니다.
그럼 과거 데이터를 어떻게 보는지 확인해보겠습니다.
- 데이터는 /var/log/sa 디렉토리에 쌓이게 되는데 파일이 두개입니다. sa 하고 sar 이것의 차이가 뭘까요?
# ls
sa01 sa04 sa05 sa07 sa10 sa11 sa12 sa13 sa14 sa15 sa16 sa17 sa18 sa19 sa20 sa22 sa23 sa26 sa27 sa28 sa29 sa30 sar12 sar13 sar14
--------------
sa# - 시스템 활동 바이너리 데이터 파일입니다.
sar## - 시스템 활동 보고서 파일입니다.
--------------
1) sa#
쉽게 말해 sa 는 바이너리 파일이라, SAR 명령어를 통해 볼수있습니다.
# sar -f /var/log/sa/sa11 // sa11파일 내용을 볼수있습니다.
# sar -f /var/log/sa/sa11 -r // sa11파일내 메모리 파일만 봅니다.
2) sar##
- 일반 텍스트 파일처럼 vi or cat 으로 확인이 가능합니다.
# cat /var/log/sa/sa11
그럼 왜 sa# sar# 파일이 나누는지 궁금할것입니다.
예를 들어 오늘이 17일인데 sa17 파일은 현재 시스템이 기록중입니다. 그래서 vi 나 cat으로 볼수없습니다. 하지만 00시 기준으로 이 파일을 sar17로 만들면서 일반 파일로 변경합니다.
그래서 당일 데이터이나 현재 시간 이전의 성능데이터를 보려면 sa 당일 파일을 봐야합니다.
그리고 보통 지난날의 성능데이터는 sar파일을 보는것이 편합니다.
근데 여기서 너무 숫자로만 보는것이 불편하다고 하시는 분이 있습니다. 그래서 오픈소스에
SAR데이터를 GUI 로 변형해서 보여주는 Tool이 있습니다. 그 이름은 Ksar입니다.
다운로드 사이트 는 아래와 같습니다.
https://sourceforge.net/projects/ksar/
예시로 아래와 같이 원하시는 날짜의 파일을 고르시면 아래와 같이 그래프로 보여주게됩니다.
개인적으로 저는 이 프로그램을 자주 사용했습니다.~
오늘도 긴글 읽어주신분들 감사합니다. 꼭 sar 명령어를 마스터 하시길 바랍니다. ^^
> 참고링크: (유료ID가 있어야 볼수있습니다.)
https://access.redhat.com/solutions/276533
https://access.redhat.com/solutions/4775761
>좋은 자료 공유
댓글목록
등록된 댓글이 없습니다.