시스템 관리자라면 리눅스 서버의 건강 상태를 실시간으로 파악하는 것이 중요합니다. 이번 포스트에서는 리눅스 시스템 모니터링에 필수적인 명령어들을 자세히 살펴보겠습니다. 시스템 부하부터 메모리, 디스크 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/s
와 kB_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
과 같은 추가 도구까지 적절히 활용하면 시스템의 다양한 측면을 효과적으로 모니터링할 수 있습니다. 각 도구는 고유한 장점과 활용 사례가 있으므로, 모니터링 목적에 맞는 도구를 선택하고 출력 결과를 올바르게 해석하는 것이 중요합니다. 정기적인 모니터링을 통해 시스템 성능 추세를 파악하고, 잠재적인 문제를 조기에 발견하여 대응할 때 이번 포스트의 리눅스 명령어들을 활용 해보시기 바랍니다.