sar
는 System Activity Report의 약자로 시스템의 CPU, 메모리, IO 정보를 수집하여 시스템 활동 보고서를 생성하는 명령어이다. 수집된 활동 보고서를 파일에 저장할 수 있다.
sar
는 sysstat
패키지의 일부 명령이다. sysstat
에는 sar
를 비롯해 iostat
, pidstat
, mpstat
명령어가 포함되어 있다. 리눅스 배포판에 기본으로 설치되는 것이 아니라서 따로 설치해주어야 한다.
sudo apt install sysstat
sar [option] [간격] [횟수]
sar 명령어만 사용하면 이와 같은 출력 정보를 얻을 수 있다. 옵션을 주어 사용할 경우 아래와 같이 사용할 수 있다.
# 1초 간격으로 5번 CPU사용률 보고
sar -u 1 5
-u
: CPU 사용률 정보를 보고한다.
-q
: 로드 평균 정보(Load Average, 특정 시간 동안 시스템에 대기중인 프로세스의 평균 수)를 보고한다.
-r
: 메모리 사용률 정보를 보고한다.
-b
: 디스크 I/O 활동을 보고한다.
-w
: 스왑 메모리 정보를 보고한다.
-d
: 블록 디바이스 정보를 보고한다.
-n [키워드]
: 네트워크 정보를 보고한다. 키워드에 ALL을 사용하면 모든 네트워크 정보를 출력한다. 키워드에는 DEV, NFS, SOCK, IP 등등 여러가지가 사용될 수 있다.
-o [저장 파일 이름]
: 수집한 데이터를 파일로 저장한다.
-f [읽을 파일 이름]
: 파일로 저장한 데이터를 읽는다.
데이터 수집 활성화시키기
위와 같이 data collecting이 활성화되지 않았다고 출력되면 아래 명령어로
/etc/default/sysstat
의 설정파일을 변경해주어야 한다.sudo nano /etc/default/sysstat
ENABLED="false"
를ENABLED="true"
로 변경하고ctrl + o
로 저장 - 엔터 -ctrl + x
로 나가기
변경한 내용을 확인한다. 추가로 데이터 수집 주기를 변경하길 원한다면/etc/cron.d/sysstat
파일을 수정하면 된다. 수정을 마친 후 아래 명령어로sysstat
서비스를 재시작한다.sudo systemctl restart sysstat
sar -u -o cpu_data 1 5
-> CPU 사용률 데이터를 1초 간격으로 5회 수집하고 cpu_data 라는 이름의 파일에 저장한다.
sar -f cpu_data
-> 파일로 저장한 데이터를 읽는다.
dstat
은 python 으로 작성한 vmstat
, iostat
, sar
, ifstat
명령어의 대체제로 IO, CPU, Network 의 정보를 통합해서 모니터링할 수 있으며 플러그인을 통해서 기능을 확장할 수도 있다.
sudo apt install dstat
dstat
옵션없이 실행 시 -cdngy
옵션을 준 것과 동일하게 실행되며 CPU, disk, network, paging, system 정보를 갱신하면서 보여준다.
--list
옵션을 추가하여 명령어를 입력하면 전체 플러그인의 목록을 조회할 수 있다.
아래 형식으로 플러그인을 사용한다.
# 특정 플러그인 사용
dstat --[플러그인 이름]
# 여러 플러그인 사용
dstat --[플러그인1 이름] --[플러그인2 이름] --[플러그인3 이름]
# 옵션과 같이 사용
dstat -c --top-cpu
-c
: CPU 사용량 출력
-d
: Disk 입출력 정보 출력
-n
: 네트워크 사용량 출력
-p
: 현재 실행중인 프로세스 수 출력
-m
: 메모리 사용량 출력
-r
: I/O 요청 출력
-t
: 현재 시간 출력
--output [파일경로]
: 결과를 파일로 저장
iftop
은 활성화된 네트워크 인터페이스의 대역폭 관련 지표를 확인하기 위한 도구이다. if
는 interface를 의미하고 top
은 실행중인 프로세스 지표를 확인할 수 있는 top
명령어를 의미한다.
네트워크 인터페이스
네트워크 인터페이스는 컴퓨터와 private/public 네트워크간의 연결 지점으로, 컴퓨터와 네트워크 장비가 연결되는 물리적 혹은 가상적인 경로를 제공한다. 보통 네트워크 인터페이스라고 하면 NIC(Network Interface Card)를 말하는데, 네트워크 인터페이스는 꼭 물리적인 형태를 띄지 않아도 된다. 소프트웨어로 구현된 인터페이스인 Virtual Network Interface나 Loopback Interface와 같이 가상적인 형태를 띌 수도 있다. 모든 주고받는 데이터는 네트워크 인터페이스를 통해 전송되고 전달받는다.
다음 명령어로 설치한다.
apt install iftop
일반 user계정으로는 실행이 되지 않는다. 명령어 앞에 sudo
를 붙여 사용하거나 sudo su
명령어로 root user로 전환하여 사용해야한다.
iftop
네트워크 연결이 없다면 아래와 같이 빈 화면이 표시된다.
아래는 Firefox 브라우저를 키고 난 후의 iftop
실행화면이다.
=>
와 <=
화살표를 통해 첫번째 라인은 송신이고, 두번째 라인은 수신임을 알 수 있다. TX
: Transmission(송신)을 의미하며, 네트워크 인터페이스를 통해 보내진 트래픽 양을 나타낸다.RX
: Reception(수신)을 의미하며, 네트워크 인터페이스를 통해 받은 트래픽 양을 나타낸다.TOTAL
: TX
와 RX
를 합한 값으로, 전체 트래픽 양을 나타낸다.cum
: Cumulative(누적)을 의미하며, iftop
명령을 실행한 이후로 누적된 트래픽의 총량을 TX
, RX
, TOTAL
별로 나타낸다.peak
: 관찰한 기간 동안 최대 트래픽 양rates
: 시간 간격(2초, 10초, 40초)에 대한 평균 트래픽 양대역폭과 트래픽
- 대역폭(Bandwidth)은 초당 처리할 수 있는 데이터의 양이다. 자동차=데이터, 도로=대역폭 이라고 한다면 도로가 넓을수록 자동차들이 막힘없이 달리듯이 '대역폭이 크다' 라는 것은 한 번에 많은 데이터를 전송할 수 있다는 뜻이다.
- 트래픽(Traffic)이란 서버를 통해 최종 사용자에게 전달된 데이터의 양을 말한다. 전송량이라고도 한다.
단위는 일반적으로 바이트단위로 (KBytes, MegaBytes, GigaBytes 등등) 표현한다. 다음과 같이 계산할 수 있다.트래픽 = 용량 * 사용자 수 * 개수 ex) 4GB 영화 * 10명 * 10개 = 400GB
다음과 같은 주요 option들이 있다.
-b
: 상단의 bar 그래프 표시 없이 실행-B
: 상단의 bar 그래프 단위가 KB로 표시(기본값은 Mb)-t
: 텍스트 형식으로 디스플레이 됨-i [인터페이스]
: 인자로 넘긴 인터페이스의 네트워크 연결만 모니터링이렇게 option을 추가하는 것에 더해 iftop
실행 중 화면에서도 option을 설정할 수 있다.
실행 중 H
를 누르면 다음과 같이 key 안내가 나타난다.
다음은 주요 key에 대한 기능 설명이다.
n
: dnslookup을 활성화/비활성화s
: source host 보여주기 활성화/비활성화d
: destination host 보여주기 활성화/비활성화p
: 포트 표시 활성화/비활성화1/2/3
: 오른쪽 3개 컬럼을 1번째, 2번째, 3번째로 생각하고 각 번호의 컬럼을 내림차순으로 정렬sar 데이터 수집 활성화
https://www.fosslinux.com/113767/how-to-enable-data-collecting-for-sar-u-on-linux.htm
sar 명령어
https://hbase.tistory.com/326
dstat 명령어
https://www.lesstif.com/system-admin/linux-dstat-93127541.html
iftop
https://www.redhat.com/sysadmin/linux-interface-iftop
https://www.youtube.com/watch?v=uyT9fMnWGUM
인터페이스
https://mamu2830.blogspot.com/2022/10/what-is-loopback-interface.html
트래픽과 대역폭
https://kim-dragon.tistory.com/99
https://www.blueweb.co.kr/hostings/webhosting/w_sms_faq_view.html?number=459&f_nc1no=&f_c2no=&searchtext=&page=22&scale=15