본문 바로가기
Unix.Linux

리눅스 시스템 모니터링과 문제 찾기

by 누피짱 2008. 4. 25.
리눅스 시스템 모니터링과 문제 찾기

* 시스템 모니터링 분야와 관련 유틸
문제를 점검할 모니터링 분야에 대한 시스템 모니터링 프로그램을 먼저 알아보자. 여기 있는 프로그램들은 대부분 운영체제를 설치하면서 자동으로 설치가 되는 프로그램들이다. (sar, iostat, nmap, netcat, ntop 등은 별도로 설치를 해야 하는 모니터링 프로그램이다)


분야
모니터링 프로그램

CPU
top, ps, uptime, vmstat, pstree, iostat, sar

메모리
free, vmstat, sar

디스크 I/O
df, du, quota, iostat, sar

네트워크
ping, netstat, traceroute, tcpdump, nmap, netcat, ntop

파일(소켓포함)
Lsof


1. 부하확인

uptime

2. 프로세스 모니터

ps, top

ps와 top을 이용하여 모니터링을 할 경우 먼저 살펴보아야 하는 것이 디스크 액세스나 페이징을 기다리고 있는 프로세스가 있는가이다.

top

S : 인터럽트가 허용되는 sleep 상태
D : 인터럽트가 불가능한 sleep 상태로 page fault 등을 의미하며 page fault 등을 통해 I/O중인 상태
W : 상주하는 페이지가 없다는 것을 의미하며 프로세스가 스왑아웃된 상태

프로세스의 메모리 구조는 텍스트, 데이터, 스택 등으로 이루어져 있다.

SIZE 는 코드, 데이터, 스택을 합친 크기를 보여준다. 가상 메모리는 커널에서 자동으로 조절하기 때문에 문제가 생길 일은 없으며 RSS를 통해서 실제 물리적 메모리에서 사용하는 메모리 양을 보여준다.

ps

/proc/PID/status
VmSize : 가상메모리를 포함한 전체 사용량
VmRSS : 물리적 메모리 사용량

3. 메모리와 디스크 IO 확인

vmstat

vmstat에서 나오는 첫 줄은 부팅 이후의 각 통계치에 대한 평균값을 보여주므로 무시,

procs 영역의 b 필드

r은 현재 실행중인 프로세스 수

b는 인터럽트가 불가능한 sleep 상태에 있는 프로세스로 I/O 처리를 하는 동안 블럭 처리된 프로세스

w는 강제로 스왑아웃된 프로세스 수

si와 so는 스왑인, 스왑아웃

스왑아웃필드(so)는 항상 0에 가까워야 한다.

스왑아웃이 지속적으로 발생한다면 메모리가 부족한 것이다. 그러나 일정 간격을 두고 주기적으로 스왑아웃이 발생하는 것은 정상적인 일이다.

대부분의 사용자가 vmstat에서 si, so(스왑인, 스왑 아웃)를 주로 보고 id가 넉넉하면 시스템에 무리가 없는 것으로 생각한다. 이는 시스템의 상황에 대해서 잘못 파악할 가능성이 많은 것으로 b의 수치가 높은 경우 I/O작업을 위해 CPU가 계속 대기 상태로 있는 경우이다. 이런 경우에는 디스크 I/O 문제를 확인해야 한다.

4. 여유 메모리 확인

free

여유가 있는 메모리는 ‘free+buffers+cached’


5. 상세 디스크 IO 확인

iostat, sar

(다운로드 : ftp://metalab.unc.edu/pub/Linux/system/status/sysstat-4.0.1-1.i386.rpm)

iostat

Tps
해당 디바이스에 대한 초당 전송 숫자인데, 여기서는 디바이스에 대한 I/O 요청을 말한다

Blk_read/s
해당 디바이스에서 초당 읽은 블럭 수

Blk_wrtn/s
해당 디바이스에서 초당 기록한 블럭 수

Blk_read
전체 읽은 총 블럭 수

Blk_wrtn
전체 기록한 총 블럭 수

sar

모니터링 할 수 있는 것들

- I/O 전송량

- 페이징

- 프로세스 생성 숫자

- 블락 디바이스 활동

- 인터럽트

- 네트워크 통계

- run 큐 및 시스템 부하 평균

- 메모리와 스왑 공간 활용 통계

- 메모리 통계

- CPU 이용도

- 특정 프로세스에 대한 CPU 이용도

- inode, 파일, 기타 커널 테이블에 대한 상태

- 시스템 스위칭 활동(context switch)

- 스와핑 통계

- 특정 프로세스 통계

- 특정 프로세스의 자식 프로세스 통계

- TTY 디바이스 활동

메모리 규모에 맞게 최대 열 수 있는 파일 갯수 (file-max)와 아이노드 개수를 조정하는데 sar를 이용하여 실제 얼마나 파일 핸들을 사용했는지 최대 file-max와 실제 사용한 파일 핸들의 비율 등도 통계를 낼 수가 있다. 이러한 통계를 주기적으로 내어 적절하게 활용하기 바란다. 참고로 최대 파일 핸들의 경우 4M당 256개로 잡아주고 아이노드 개수는 이의 3-4배 정도로 설정을 한다. file-max 는 /proc/sys/fs/file-max 를 이용하여 설정하며 /proc/sys/fs/file-nr 파일을 이용 현재 할당된 파일수를 확인할 수 있다.


6. HDD 공간확인

df

리눅스에서 기본 블락 크기는 1,024byte





* 참고자료

시스템 관리의 핵심 (한빛미디어,, 장훈역)

리눅스 커널 옵션 문서 : 커널 소스 디렉토리/Documentation/filesystems/proc.txt

The Linux Kernel 번역판 (돌도끼) : http://linuxkernel.to/

리눅스 시스템 튜닝 전략 (문태준)

         http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=17

리눅스 Accounting 이용한 서버 시스템 모니터링 (문태준)

         http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=16

리눅스 시스템 관리자 가이드 Version 0.6.2 번역판

         http://kldp.org/Translations/html/SysAdminGuide-KLDP/book1.html

댓글