Profile picture

[Linux] 시스템 리소스 모니터링 도구 (sar,glances)

JaehyoJJAng2024년 01월 27일

◾️ SAR

  • System Activity Reporter
  • Unix 및 Unix 계열 운영 체제에서 시스템의 활동을 모니터링하고 성능을 분석하기 위한 명령줄 도구 및 유틸리티입니다. sar은 리눅스, BSD, macOS 등 다양한 Unix 계열 운영 체제에서 사용할 수 있습니다.
  • sar을 사용하면 시스템의 CPU 사용률, 메모리 사용률, 디스크 활동, 네트워크 활동, 프로세스 상태 등과 같은 다양한 성능 지표를 수집하고 기록할 수 있습니다. 이를 통해 시스템의 부하 및 리소스 사용량을 모니터링하고, 시스템의 성능 트렌드를 추적하여 문제 해결에 도움이 됩니다.

▪️ 설치

SAR 패키지는 sysstat을 설치하여 사용할 수 있다.

sudo apt-get install -y sysstat

설치가 완료되면 SAR 서비스를 재시작하고 아래 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화해주자.

sudo systemctl start sysstat
sudo systemctl enable sysstat

▪️ cron 설정

SAR는 10분마다 보고서를 수집하고 생성하도록 Cron 파일을 생성한다. 다음 명령으로 확인할 수 있다.

cat /etc/cron.d/sysstat
# The first element of the path is a directory where the debian-sa1
# script is located
PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin

# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2

▪️ CPU 사용량 모니터링

다음 명령을 실행하여 1초마다 CPU 사용량을 4번 모니터링할 수 있다.

sar 1 4
Linux 6.5.11-8-pve (pve) 	02/28/2024 	_x86_64_	(12 CPU)

02:31:26 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:31:27 PM     all      0.17      0.00      0.00      0.00      0.00     99.75
02:31:28 PM     all      0.17      0.00      0.00      0.00      0.00     99.83
02:31:29 PM     all      0.17      0.00      0.08      0.00      0.00     99.75

-o 플래그를 사용하여 생성된 출력을 파일에 저장할 수도 있다.

sar 1 4 -o cpu-report

참고로 -o 플래그로 생성된 파일은 cat 등의 명령어로는 정상적으로 출력되지 않는다.


-f 플래그를 사용하여 생성된 cpu-report를 확인할 수 있다.

sar -f cpu-report

▪️ 메모리 사용량 모니터링

다음 명령을 실행하여 1초마다 메모리 사용량을 4번 모니터링할 수 있다.

sar -r 1 4
Linux 6.5.11-8-pve (pve) 	02/28/2024 	_x86_64_	(12 CPU)

02:35:55 PM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
02:35:56 PM  51880544  53480400   7261280     11.79   1724744    457348  38582104     55.14   7058028   1963668       204
02:35:57 PM  51877020  53476876   7264780     11.80   1724744    457348  38582104     55.14   7058060   1963668       204
02:35:58 PM  51877020  53476876   7264780     11.80   1724744    457348  38582104     55.14   7058060   1963668       204
02:35:59 PM  51877020  53476876   7264780     11.80   1724744    457348  38582104     55.14   7058060   1963668       204
Average:     51877901  53477757   7263905     11.80   1724744    457348  38582104     55.14   7058052   1963668       204

▪️ 블록 장치 모니터링

-d 옵션을 사용하여 블록 장치 통계를 모니터링할 수 있다. -p 옵션으로 보다 읽기 쉬운 형식으로 출력을 표시할 수도 있다.

sar -d -p 1 4
Linux 6.5.11-8-pve (pve) 	02/28/2024 	_x86_64_	(12 CPU)

02:38:21 PM       tps     rkB/s     wkB/s     dkB/s   areq-sz    aqu-sz     await     %util DEV
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 nvme0n1
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-swap
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-root
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-data_tmeta
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-data_tdata
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-data-tpool
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--100--disk--0
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--101--disk--0
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--103--disk--0
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--104--disk--0
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--105--disk--0
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--100--state--backup_2024_02_19
02:38:22 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 pve-vm--105--state--backup_2024_02_19

▪️ 네트워크 모니터링

-n 옵션을 사용하여 시스템의 네트워크 통계를 모니터링할 수 있다. -n 옵션과 함께 DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6, UDP6을 사용하여 특정 장치를 모니터링할 수 있다.

sar -n IP 1 4
Linux 6.5.11-8-pve (pve) 	02/28/2024 	_x86_64_	(12 CPU)

02:40:56 PM    irec/s  fwddgm/s    idel/s     orq/s   asmrq/s   asmok/s  fragok/s fragcrt/s
02:40:57 PM      1.00      0.00      1.00      1.00      0.00      0.00      0.00      0.00
02:40:58 PM      2.00      0.00      2.00      2.00      0.00      0.00      0.00      0.00
02:40:59 PM      4.00      0.00      2.00      1.00      0.00      0.00      0.00      0.00
02:41:00 PM      1.00      0.00      1.00      1.00      0.00      0.00      0.00      0.00
Average:         2.00      0.00      1.50      1.25      0.00      0.00      0.00      0.00

또는 ALL 옵션을 사용하여 모든 네트워크 장치를 모니터링 해볼 수도 있다.

sar -n ALL 1 4

▪️ 스왑 모니터링

-S 플래그를 사용하여 swap 사용 통계를 모니터링 할 수 있다.

sar -S 1 4
Linux 6.5.11-8-pve (pve) 	02/28/2024 	_x86_64_	(12 CPU)

02:41:37 PM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
02:41:38 PM   8388348       256      0.00         4      1.56
02:41:39 PM   8388348       256      0.00         4      1.56
02:41:40 PM   8388348       256      0.00         4      1.56
02:41:41 PM   8388348       256      0.00         4      1.56
Average:      8388348       256      0.00         4      1.56

▪️ I/O 작업 모니터링

초당 트랜잭션, 초당 읽기, 초당 쓰기와 같은 I/O 작업에 대한 세부 정보를 모니터링 할 수 있다.

sar -b 1 4
Linux 6.5.11-8-pve (pve) 	02/28/2024 	_x86_64_	(12 CPU)

02:42:14 PM       tps      rtps      wtps      dtps   bread/s   bwrtn/s   bdscd/s
02:42:15 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:42:16 PM      6.00      6.00      0.00      0.00   1536.00      0.00      0.00
02:42:17 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:42:18 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         1.50      1.50      0.00      0.00    384.00      0.00      0.00

▪️ --human 플래그

사람이 읽기 편한 형태로 출력하도록 --human 플래그를 사용할 수도 있다.

# CPU 사용량을 1초마다 사람이 읽기 편한 형태로 4번 기록
sar -p 1 4 --human

# RAM 사용량을 1초마다 사람이 읽기 편한 형태로 4번 기록
sar -r 1 4 --human

◾️ glances

  • Glances는 시스템 모니터링 도구로, 시스템의 리소스 사용 및 성능을 실시간으로 모니터링하는 데 사용됩니다. Glances는 CPU, 메모리, 디스크, 네트워크 등의 리소스 사용량을 시각적으로 표시하고, 프로세스 및 시스템 정보를 제공하여 시스템의 상태를 신속하게 파악할 수 있도록 도와줍니다.
  • Glances는 커맨드 라인 인터페이스(CLI)를 통해 실행되며, 텍스트 또는 웹 인터페이스를 통해 사용할 수 있습니다. 또한 Glances는 다양한 플러그인을 지원하여 사용자가 필요에 따라 기능을 확장할 수 있습니다.

서버에 Glances를 설치하는 방법은 자동 설치 스크립트를 사용하는 것이다.

아래 명령을 실행해주자.

$ curl -L https://bit.ly/glances | /bin/bash

# OR

$ wget -O- https://bit.ly/glances | /bin/bash

▪️ 전역 설치 오류

설치 도중 아래와 같은 에러가 발생하였다면

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification. 

아래 방법을 따라해보자.

  • 가상 환경 사용하기
    • glances를 시스템 전역이 아닌 사용자별로 관리하려는 경우, 가상 환경을 만들어 사용할 수 있습니다. 다음 명령을 실행하여 가상 환경을 만들고 glances를 설치할 수 있습니다.
python3 -m venv venv
source venv/bin/activate
pip install glances

▪️ 실행

설치가 완료되었다면 glances를 실행해보자.

glances

image

아래와 같은 결과를 얻을 수 있다.

  • hostname
  • os종류, 커널버전
  • ip 주소
  • cpu 부하
    • user
    • system
    • idle
    • iowait
  • loadavg
  • 메모리
    • total
    • used
    • free
    • buffers
    • cached
  • swap 사용량
  • 네트워크
  • 디스크 I/O
  • 프로세스
    • 메모리,CPU,IO등 핵심 정보
  • 로그
    • 어떠한 문제가 있다면 하단에 로그가 나타남

또한, -w 플래그를 부여하여 웹으로도 모니터링할 수 있다.

먼저 bottle 라이브러리를 설치해주자.

(venv) root@pve# pip install bottle
glances -w
Glances Web User Interface started on http://0.0.0.0:61208/

image



Loading script...