dev-os

[Linux] 리눅스 서버 상태 파악하기

검은바람 2013. 6. 26. 12:03
반응형

서버의 cpu 부하 상태 확인 - 서버의 반응이 늦을 때 
프로세스 상태 점검 - 부하 원인 발견 
네트워크 상태 점검 - 부정한 엑세스 감시, 설정 확인 
네트워크 카드 점검 - 이더넷의 상태, 카드 설정 확인 
디스크 상태 - 용량 확인 
로그 - 서버 작동에 문제가 있을 시 확인 

### 서버의 cpu 부하 확인 
명령어 – w / top / uptime 
uptime 
12:47pm up 3 days, 12:22, 3 users, load average: 1.21, 0.86, 0.44 
부하 점검 1.21(최근 1분간의 평균) 0.86(최근 5분간의 평균) 0.44(최근 15분간의 평균) 

리눅스에서 cpu의 부하는 이 load average라는수치를 표준으로 한다. 
이는 cpu를 필요로 하고 있는(ps명령어로 STAT가 [R]로 표시되고 있는) 프로세스 수의 평균치이다. 
예를 들어 한 개의 프로세스가 폭주해 항상 CPU를 필요로 하게 되면 그 프로세스 때문에 수치가 1 증가하고 서버에 부하를 주게된다. 

간단한 표준으로 CPU가 한 개인 경우는 load average가 1을 초과하면 서버는 바쁜 상태이고, 1 미만이면 CPU부하에 관해서는 별 문제가 없다. 
load average가 마구 올라가는 경우는 어떤 프로세스가 폭주하고 있다고 생각해야 한다. 
특히 유저가 만든 CGI프로세스가 폭주해서 load average가 올라가는 경우가 흔하다. 

### 프로세스 상태 확인 
명령어 – ps / top 
ps aux 
실행 중인 프로세스가 출력된다. 
Kill 프로세스 번호 명령으로 프로세스를 종료한다. 
USER PID CPU %MEM VSZ RSS TTY STAT START TIME 
root 1 0.0 0.2 1104 72 ? S Feb11 0:04 
COMMAND 
Init [3] 

[풀이] 
USER - 실행하고 있는 유저 명 
PID - 프로세스 번호 
CPU - cpu 이용률 
%MEM - 메모리 이용률 
VSZ/RSS – 이용하고 있는 메모리 사이즈 
TTY - 표준 입력이나 표준 출력에 사용되는 단말기 종류 
STAT - 프로세스 상태 
START - 프로세스의 개시된 시간 
TIME - cpu를 이용한 시간 
COMMAND – 명령어의 이름 

[프로세스의 상태] 
S – 슬립 
D – I/O 대기 
R – CPU 대기/실행 중 
T – 정지 중 
Z – 종료 중 
W – 모두 SWAP되어 있다. 
< - 우선도가 높다. 
N – 우선도가 낮다. 
L – 특별한 프로세스 (전혀 SWAP되지 않은 메모리가 할당되어 있다.) 

@ 이상 징후 
STAT가 항상 R(CPU를 필요로 하고 있는 상태), CPU 이용률이 계속 99%가 되거나 메모리 이용률이 비 정상적으로 증대하고 있는 프로세스는 폭주하고 있을 가능성이 높다. 
정상 종료가 되지 않으면 Kill –KILL PID로 강제 종료한다. 

### 네트워크의 상태 확인 
명령어 – netstat –t (-t 옵션은 TCP/IP의 상태를 표시) 
접속자의 주소와 정보 등이 표시되고, 접속중인 상태는 ESTABLISHED라고 표시된다. 
&egrave; 부정한 엑세스 주소를 없앤다. 
netstat –tl (-l 옵션은 TCP/IP로 접속을 기다리는 상태를 표시) 
TCP/IP로 접속할 수 있는 서버가 표시되고, 대기중인 상태는 LISTEN이라고 표시된다. 
&egrave; 필요 없는 서버가 실행되어 있지 않은 지 확인 

### NIC 상태 확인 
명령어 – ifconfig 
네트워크 카드의 상태를 확인하고, MAC주소(네트워크 카드 자신의 번호)나 카드에 할당되어 있는 IP주소 이더넷 충돌의 수, 통과한 패킷의 수, 하드웨어의 정보 등을 확인 

### 디스크의 빈 공간을 확인 
명령어 – df 
사용 가능한 용량이 적어졌다면 여분의 파일을 지우거나 빈 공간이 큰 영역에 디렉토리를 이동해서 그 디렉토리에 symbolic 링크를 붙이는 등의 대책이 필요하다. 

### 디렉토리 용량을 조사한다. 
명령어 – du 
du /var/log | sort –nr 
표시된 숫자는 KB 단위이고 디렉토리마다 사용량이 큰 순서로 표시 
일반적으로 아파치의 로그가 가장 크다. 

[리눅스 로그 파일] 
/var/log/boot.log – 데몬의 실행이나 종료의 로그 
/var/log/cron – crond의 로그(정기적으로 명령어를 실행하는 데몬) 
/var/log/dmesg – 커널의 메시지 
/var/log/message – BIND나 커널, su 등 그 외의 로그 
/var/log/secure – 로그인의 기록이나 tcpd의 로그(TCP Wrappers) 

[서버의 로그] 
/var/log/maillog – sendmail 의 로그 
/var/log/smtplog – smptfeed 의 로그 
/var/log/xferlog – ftpd 의 로그 
/var/log/samba/log.* - samba 의 로그 
/usr/local/www/logs/access_log – apache 엑세스 로그 
/usr/local/www/logs/error_log – apache 에러 로그 
/usr/local/www/logs/ssl_request_log – mod_ssl 엑세스 로그 
/usr/local/www/logs/ssl_engine_log – mod_ssl 암호화에 관한 로그 

[root의 패스워드를 잊어버릴 경우] 
ctrl + alt + delete 로 재 부팅 &agrave; lilo 프롬프트에서 linux S라고 입력한 후 패스워드 변경 

[실행 중 fsck가 실패 하였을 때] 
파일 시스템이 망가졌을 경우에는 장치 명이 나온 후 패스워드를 입력한다. 
이후 fsck 수정할 파티션 장치 입력

반응형