프로세스 상태 점검 - 부하 원인 발견
네트워크 상태 점검 - 부정한 엑세스 감시, 설정 확인
네트워크 카드 점검 - 이더넷의 상태, 카드 설정 확인
디스크 상태 - 용량 확인
로그 - 서버 작동에 문제가 있을 시 확인
### 서버의 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라고 표시된다.
è 부정한 엑세스 주소를 없앤다.
netstat –tl (-l 옵션은 TCP/IP로 접속을 기다리는 상태를 표시)
TCP/IP로 접속할 수 있는 서버가 표시되고, 대기중인 상태는 LISTEN이라고 표시된다.
è 필요 없는 서버가 실행되어 있지 않은 지 확인
### 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 로 재 부팅 à lilo 프롬프트에서 linux S라고 입력한 후 패스워드 변경
[실행 중 fsck가 실패 하였을 때]
파일 시스템이 망가졌을 경우에는 장치 명이 나온 후 패스워드를 입력한다.
이후 fsck 수정할 파티션 장치 입력