◾️ 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
아래와 같은 결과를 얻을 수 있다.
- 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/