시스템 관리자라면 리눅스 서버의 건강 상태를 실시간으로 파악하는 것이 중요합니다. 이번 포스트에서는 리눅스 시스템 모니터링에 필수적인 명령어들을 자세히 살펴보겠습니다. 시스템 부하부터 메모리, 디스크 I/O까지 다양한 지표를 확인할 수 있는 방법을 아래에서 함께 살펴보겠습니다.

 

1. uptime – 시스템 부하 한눈에 파악하기

uptime 명령어는 시스템이 얼마나 오래 실행되었는지와 현재 시스템 부하 상태를 간단하게 보여줍니다.

기본 기능

  • 현재 시간
  • 시스템 가동 시간(uptime)
  • 로그인한 사용자 수
  • 로드 애버리지(load average) – 1분, 5분, 15분 평균

사용 예시

기본적인 uptime 명령어 실행:

$ uptime
 14:23:01 up 35 days, 12:43,  4 users,  load average: 0.52, 0.58, 0.59

이 출력은 현재 시간이 14:23:01이고, 시스템이 35일 12시간 43분 동안 실행 중이며, 4명의 사용자가 로그인했고, 부하 평균이 1분(0.52), 5분(0.58), 15분(0.59) 임을 보여줍니다.

간단한 형식으로 가동 시간만 보기:

$ uptime -p
up 35 days, 12 hours, 43 minutes

시스템이 시작된 시간 확인:

$ uptime -s
2024-03-01 01:40:01

주의사항

  • 로드 애버리지 값이 CPU 코어 수보다 지속적으로 높다면 시스템에 과부하가 걸린 상태일 수 있습니다.
  • 일반적으로 코어당 로드 애버리지가 1.0 이하면 건강한 상태로 간주합니다.

 

2. dstat – 시스템 리소스 종합 모니터링

dstat은 CPU, 디스크, 네트워크, I/O, 메모리 등 여러 시스템 리소스를 동시에 모니터링할 수 있는 강력한 도구입니다. vmstat, iostat, ifstat, netstat 등을 대체할 수 있는 올인원 모니터링 도구입니다.

주요 옵션

  • -c: CPU 통계
  • -d: 디스크 통계
  • -m: 메모리 통계
  • -n: 네트워크 통계
  • -p: 프로세스 통계
  • -s: 스왑 통계
  • -t: 타임스탬프 포함
  • --top-cpu: CPU 사용률이 높은 프로세스 표시
  • --top-mem: 메모리 사용률이 높은 프로세스 표시

사용 예시

기본 dstat 실행 (CPU, 디스크, 네트워크, 페이징, 시스템 정보 표시):

$ dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
  4   1  94   1   0|  44k  182k|   0     0 |   0     0 | 157   299 
  3   1  96   0   0|   0     0 | 156B  304B|   0     0 | 173   326 
  2   1  97   0   0|   0     0 | 112B  304B|   0     0 | 168   288 

여기서는 CPU 사용률, 디스크 읽기/쓰기, 네트워크 송수신, 페이징, 시스템 인터럽트와 컨텍스트 스위치 정보를 실시간으로 보여줍니다.

모든 통계 정보 표시:

$ dstat -a

CPU, 메모리, 디스크, 네트워크 통계를 3초 간격으로 10회 측정:

$ dstat -cdmn 3 10

이 명령어는 CPU(-c), 디스크(-d), 메모리(-m), 네트워크(-n) 통계를 3초 간격으로 10회 측정합니다.

결과를 CSV 파일로 저장:

$ dstat --output results.csv -cdmn 1 60

이 명령어는 1분 동안 1초 간격으로 측정한 결과를 CSV 파일로 저장합니다.

주의사항

  • dstat은 기본 패키지에 포함되어 있지 않을 수 있으므로 설치가 필요할 수 있습니다: apt install dstat 또는 yum install dstat
  • 플러그인을 통해 기능을 확장할 수 있습니다 (--list 옵션으로 사용 가능한 플러그인 확인)

 

3. vmstat – 가상 메모리 통계 확인하기

vmstat은 시스템의 프로세스, 메모리, 페이징, 블록 I/O, 트랩, CPU 활동에 대한 정보를 제공합니다. 특히 메모리와 CPU 사용량을 모니터링하는 데 유용합니다.

주요 옵션

  • -a: 활성 및 비활성 메모리 표시
  • -d: 디스크 통계 표시
  • -s: 메모리 통계 표시
  • -m: 슬랩(slab) 정보 표시
  • -p: 특정 파티션의 상세 통계 표시
  • -t: 타임스탬프 포함

출력 항목 설명

  • procs: r(실행 대기 중인 프로세스), b(I/O 대기 중인 프로세스)
  • memory: swpd(사용된 가상 메모리), free(여유 메모리), buff(버퍼에 사용된 메모리), cache(캐시에 사용된 메모리)
  • swap: si(디스크에서 스왑 인), so(디스크로 스왑 아웃)
  • io: bi(블록 인), bo(블록 아웃)
  • system: in(초당 인터럽트), cs(초당 컨텍스트 스위치)
  • cpu: us(사용자 시간), sy(시스템 시간), id(아이들 시간), wa(I/O 대기 시간), st(가상화 도용 시간)

사용 예시

기본 vmstat 실행:

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 7249576 376836 8178492    0    0     3     4    1    2  4  1 95  0  0

이 출력은 현재 시스템의 메모리 상태, 스왑 사용량, I/O 활동, CPU 사용률 등을 보여줍니다.

2초 간격으로 5회 측정:

$ vmstat 2 5

이 명령어는 2초 간격으로 5회 측정한 결과를 보여줍니다. 첫 번째 줄은 시스템 부팅 이후의 평균값이고, 그 이후는 각 간격의 실시간 값입니다.

상세한 메모리 통계 확인:

$ vmstat -s

디스크 통계 확인:

$ vmstat -d

타임스탬프와 함께 보기:

$ vmstat -t 1

주의사항

  • 첫 번째 결과 라인은 부팅 이후의 평균값을 보여주므로 현재 상태를 확인하려면 간격을 지정하여 두 번째 이후의 결과를 확인해야 합니다.
  • 높은 wa 값은 I/O 병목 현상을 나타내며, 높은 si/so 값은 메모리 부족을 의미할 수 있습니다.

 

4. iostat – 입출력 장치 통계 분석

iostat은 CPU 사용률과 디스크 I/O 통계를 모니터링하는 도구로, 특히 디스크 성능 문제를 진단할 때 유용합니다.

주요 옵션

  • -c: CPU 사용률만 표시
  • -d: 디스크 사용률만 표시
  • -x: 확장 통계 표시
  • -k: 킬로바이트 단위로 표시
  • -m: 메가바이트 단위로 표시
  • -t: 타임스탬프 표시
  • -p: 특정 장치 또는 파티션의 통계 표시

출력 항목 설명 (확장 옵션 -x 사용 시)

  • r/s, w/s: 초당 읽기/쓰기 요청 수
  • rkB/s, wkB/s: 초당 읽기/쓰기 킬로바이트
  • await: I/O 요청의 평균 대기 시간(밀리초)
  • svctm: I/O 요청의 평균 서비스 시간(밀리초)
  • %util: 장치 사용률(백분율)

사용 예시

기본 iostat 실행:

$ iostat
Linux 5.4.0-109-generic (hostname)     04/02/2025      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.50    0.00    0.91    0.23    0.00   95.36

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               5.89        74.75       112.71   11425987   17228472

이 출력은 CPU 사용률과 디스크 장치 통계를 보여줍니다. tps는 초당 전송 수, kB_read/skB_wrtn/s는 초당 읽기/쓰기 속도입니다.

확장 디스크 통계 확인:

$ iostat -x

특정 디스크 장치에 대한 상세 정보:

$ iostat -xd /dev/sda

2초 간격으로 5회 측정:

$ iostat -x 2 5

메가바이트 단위로 표시:

$ iostat -xm

특정 파티션 통계 확인:

$ iostat -p sda

주의사항

  • %util 값이 높으면(80-90% 이상) 해당 디스크가 병목 현상을 일으킬 수 있습니다.
  • await 값이 svctm 값보다 훨씬 크면 I/O 요청이 큐에서 오래 대기하고 있다는 의미입니다.
  • 이 명령어를 사용하려면 sysstat 패키지를 설치해야 할 수 있습니다: apt install sysstat 또는 yum install sysstat

 

5. 추가 유용한 모니터링 명령어

리눅스 시스템 모니터링에 도움이 되는 다른 명령어들도 있습니다. 상황에 맞게 적절한 도구를 선택하면 시스템 상태를 더 정확히 파악할 수 있습니다.

5.1 top – 실시간 프로세스 모니터링

top은 실시간으로 시스템의 프로세스를 보여주는 대화형 명령어입니다.

주요 키보드 단축키

  • P: CPU 사용률 기준 정렬
  • M: 메모리 사용률 기준 정렬
  • T: 실행 시간 기준 정렬
  • k: 프로세스 종료(kill)
  • r: 프로세스 우선순위 변경(renice)
  • q: 종료

사용 예시

기본 실행:

$ top

배치 모드로 한 번만 실행:

$ top -b -n 1

특정 사용자의 프로세스만 표시:

$ top -u username

5.2 htop – 향상된 top 명령어

top보다 사용자 친화적인 인터페이스를 제공하는 대체 도구입니다.

주요 기능

  • 수직 및 수평 스크롤 가능
  • 마우스 사용 지원
  • 시각적 프로세스 트리 구조
  • 컬러 출력 및 그래픽 미터

사용 예시

기본 실행:

$ htop

트리 뷰로 실행:

$ htop -t

5.3 free – 메모리 사용량 확인

free 명령어는 시스템의 물리적 메모리와 스왑 공간의 사용량을 보여줍니다.

주요 옵션

  • -h: 사람이 읽기 쉬운 형식으로 표시
  • -m: 메가바이트 단위로 표시
  • -g: 기가바이트 단위로 표시
  • -s: 지정된 간격으로 지속적으로 표시

사용 예시

읽기 쉬운 형식으로 메모리 정보 표시:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.5Gi       5.8Gi       351Mi       5.1Gi        10Gi
Swap:         8.0Gi          0B       8.0Gi

3초 간격으로 메모리 사용량 모니터링:

$ free -h -s 3

5.4 sar – 시스템 활동 보고서

sar(System Activity Reporter)는 시스템 성능 데이터를 수집, 보고 및 저장하는 도구입니다.

주요 옵션

  • -u: CPU 사용률
  • -r: 메모리 사용률
  • -b: I/O 및 전송률 통계
  • -d: 블록 장치 활동
  • -n: 네트워크 통계
  • -q: 큐 길이 및 시스템 부하

사용 예시

현재 CPU 사용률 확인:

$ sar -u 1 3

이 명령어는 1초 간격으로 3회 측정한 CPU 사용률을 보여줍니다.

메모리 사용률 확인:

$ sar -r

네트워크 통계 확인:

$ sar -n DEV

이전에 수집된 데이터 보기:

$ sar -f /var/log/sa/sa01

5.5 nmon – 다양한 시스템 정보 통합 모니터링

nmon은 CPU, 메모리, 디스크, 네트워크 등 다양한 시스템 자원을 모니터링하는 대화형 도구입니다.

주요 키보드 단축키

  • c: CPU 통계
  • m: 메모리 통계
  • d: 디스크 통계
  • n: 네트워크 통계
  • t: 상위 프로세스
  • q: 종료

사용 예시

대화형 모드로 실행:

$ nmon

데이터를 파일로 수집:

$ nmon -f -s 30 -c 60

이 명령어는 30초 간격으로 60회(30분) 동안 데이터를 수집하여 파일로 저장합니다.

 

리눅스 시스템 모니터링은 서버의 건강 상태를 유지하고 성능 문제를 진단하는 데 필수적입니다. 이 글에서 소개한 uptime, dstat, vmstat, iostat와 같은 기본 명령어부터 top, htop, free, sar, nmon과 같은 추가 도구까지 적절히 활용하면 시스템의 다양한 측면을 효과적으로 모니터링할 수 있습니다. 각 도구는 고유한 장점과 활용 사례가 있으므로, 모니터링 목적에 맞는 도구를 선택하고 출력 결과를 올바르게 해석하는 것이 중요합니다. 정기적인 모니터링을 통해 시스템 성능 추세를 파악하고, 잠재적인 문제를 조기에 발견하여 대응할 때 이번 포스트의 리눅스 명령어들을 활용 해보시기 바랍니다.

 

댓글 남기기