호스팅 서버 모니터링 |
(1) 서비스 데몬 확인 방법 |
① pstree : 서버에서 운영 중인 데몬들을 트리 형식으로 보여주는 역할을 한다. |
|
|
|
- pstree 명령어를 사용하면 현재 서버에서 실행 중인 데몬 및 프로그램을 쉽게 확인할 수 있다. |
|
② ps : 서버에서 운영중인 프로세스를 보여준다. 검색으로 원하는 서비스 프로세스만을 볼 수 있다. |
형식 : ps [options] |
|
=Options= |
|
-l : 자세한 형태의 정보를 출력한다. |
-u : 각 프로세스의 사용자 이름과 시작 시간을 보여준다. |
-j : 작업 중심 형태로 출력한다. |
-s : 시그널 중심 형태로 출력한다. |
-v : 가상 메모리 중심 형태로 출력한다. |
-m : 메모리 정보를 출력한다. |
-a : 다른 사용자들의 프로세스도 보여준다. |
-x : 로그인 상태에 있는 동안 아직 완료되지 않은 프로세스들을 보여준다. |
-S : 차일드(child) CPU 시간과 메모리 페이지 결함(fault) 정보를 추가한다. |
-c : 커널 task_structure로부터 명령 이름을 보여준다. |
-e : 환경을 보여준다. |
-w : 긴(wide) 형태로 출력한다. 한 행 안에 출력이 잘리지 않는다. |
-h : 헤더를 출력하지 않는다. |
-r : 현재 실행중인 프로세스를 보여준다. |
-n : USER와 WCHAN을 위해 수치 출력을 지원한다. |
|
=설명= |
|
기본적으로 ps는 현재 명령이 내려지는 셸에서 만들어진 프로세스들의 목록만을 보여준다. ps는 자신이 실행되는 당시 현재의 셸에 의해서 수행된 프로세스들을 |
검사하고 보고한다는 점을 생각하자. 그러면 ps의 출력결과 리스트에 ps 자신이 있는 이유를 쉽게 이해할 수 있을 것이다. 각 필드의 의미는 다음과 같다. |
|
- COMMAND : 명령어의 이름 |
- PID : 프로세스 ID, 각 프로세스를 구분하기 위한 고유의 ID |
- RSS : 프로세스에 의해 사용되는 실제 메모리의 용량(Kbyte 단위) |
- USER : 프로세스를 실행시킨 소유자의 계정을 보여준다. |
- SZ : 프로세스의 자료와 스텍 크기(K byte 단위) |
- TIME : 현재까지 사용된 CPU의 시간(분, 초) |
- TT : 프로세스의 제어 터미널(t3=/dev/tty3) |
- %CPU : 마지막 분 동안 프로세스가 사용한 CPU 시간의 백분율 |
- START : 프로세스가 시작된 시간 |
- STAT : 프로세스의 상태 |
|
이 중 STAT 필드는 몇 가지의 부호를 사용해서 프로세스의 상태를 표시하고 있다. 그것들을 정리해 보면 다음과 같다. |
|
- P : 수행 가능/수행 중
- T : 일시 정지
- D : 디스크 입출력 대기 같은 인터럽트할 수 없는 대기상태
- S : 20초 미만의 짧게 잠듦(sleep)
- I : 20초 이상의 길게 잠듦
- Z : 좀비(zombi) 프로세스
좀비(zombie) 상태라는 것은 프로세스가 사라질 때 시그널 처리의 문제로 완전히 소멸되지 못한 상태를 말한다. |
|
(예) |
|
[root@ww14 root]# ps auxw | grep httpd : 웹서비스 데몬만을 보여준다. |
[root@ww14 root]# ps auxw | grep mysql : MySQL 서비스 데몬만을 보여준다. |
[root@ww14 root]# ps auxw | grep mail : 메일 서비스 데몬만을 보여준다. |
[root@ww14 root]# ps auxw | grep ftp : FTP 서비스 데몬만을 보여준다. |
|
③ netstat : 실행 중인 서비스 데몬의 포트 상태를 보여준다. |
형식 : netstat [ option ] |
|
=Option= |
|
-r : 라우팅 테이블의 정보를 출력한다. |
-I : 인터페이스 테이블을 출력한다. |
-s : snmp와 같은 네트워크 통계를 나타내며 프로토콜의 진단까지 할 수 있다. |
-p : pid/program 출력 |
-c : 계속되는 리스트 출력 |
-a : 연결된 모든 소켓 출력 |
|
ⓐ netstat : 현재 이 서버와 연결되었거나 연결될 목록을 프로토콜과 함께 보여주는 도스 명령어이다.
|
ⓑ netstat -a : 현재 이 서버와 연결되거나 연결될 목록을 프로토콜과 함께 모두 보여준다. -a 옵션이 없으면 연결된 목록만 보여주는데, -a 옵션을 주면 연결되었 |
거나 연결을 기다리는 목록을 모두 보여준다. |
ⓒ netstat -n : 통상 연결 목록에 서비스 이름이 나오는데, -n 옵션을 주면 서비스 이름 대신 포트 번호가 나온다.
|
ⓓ netstats -an or -na : 둘 다 같은 의미인데 이 서버와 연결되었던 혹은 연결을 기다리는 목록을 아이피 주소로 바꾸어서 보여준다.
[root@ww14 root]# netstat -anp | grep LISTEN |
tcp |
0 |
0 0.0.0.0:9930 |
0.0.0.0:* |
LISTEN |
3794/ismsagent |
tcp |
0 |
0 0.0.0.0:3306 |
0.0.0.0:* |
LISTEN |
758/mysqld |
tcp |
0 |
0 0.0.0.0:110 |
0.0.0.0:* |
LISTEN |
595/xinetd |
tcp |
0 |
0 0.0.0.0:80 |
0.0.0.0:* |
LISTEN |
636/httpd |
tcp |
0 |
0 0.0.0.0:21 |
0.0.0.0:* |
LISTEN |
662/proftpd: (accep |
tcp |
0 |
0 0.0.0.0:22 |
0.0.0.0:* |
LISTEN |
1859/sshd2 |
tcp |
0 |
0 0.0.0.0:23 |
0.0.0.0:* |
LISTEN |
595/xinetd |
tcp |
0 |
0 0.0.0.0:25 |
0.0.0.0:* |
LISTEN |
25275/sendmail: acc |
① |
② |
③ |
④ |
⑤ |
⑥ |
|
|
|
|
|
|
③의 위치에 표시된 수자가 포트 번호다. |
21 |
: FTH |
22 |
: SSH |
23 |
: Telnet |
25 |
: SMTP |
80 |
: Httpd |
110 |
: POP3 |
3306 |
: MySQL |
9930 |
: ismsagent |
|
(2) lsof를 통한 서버 모니터링 |
① lsof 도구 |
lsof는 List Of Files의 약자로서 시스템에서 읽고/쓰고 하는 모든 프로세스에 의해서 Open된 파일들에 대한 정보를 보여준다. |
|
② 옵션설명 |
-c : 지정한 프로세스가 사용 중인 파일을 보여준다.
-g : 지정한 프로세스 그룹 아이디를 가진 프로세스들이 사용 중인 파일을 보여준다.
-i : TCP 소켓이 이루어지고 있는 정보들을 출력한다.
-N : NFS로 연결되어 있는 파일들에 대해서 수행한다. |
|
③ lsof 사용 예 |
- [root@g07 root]# lsof /etc/passwd |
의미 : /etc/passwd 파일을 사용 중인 프로세스를 점검 |
- [root@g07 root]# lsof /home |
의미 : /home 디렉터리를 읽고 있는 프로세스 정보들을 출력한다. |
- [root@g07 root]# lsof -i |
의미 : 현재 서버에 사용 중인 소켓 정보들을 출력한다. |
- [root@g07 root]# lsof -c httpd |
의미 : httpd을 통해 실행 중인 모든 파일들을 출력한다. |
- [root@g07 root]# lsof -p ProcessID |
의미 : 현재 프로세스가 열고 있는 모든 파일들을 출력한다. |
- [root@g07 root]# lsof -u user1,user2,user3 |
의미 : 사용자 아이디 user1, user2, user3이 사용 중인 모든 파일을 출력한다. |
- [root@g07 root]# lsof -i -P |
의미 : 소켓에 대한 정보 및 포트 서비스 이름 대신 포트 넘버 그대로 출력한다. |
|
(3) top을 통한 서버 모니터링 |
① top 명령어 |
실시간으로 프로세스에 대한 정보를 출력해 준다. |
CPU 사용별, Memory 사용별로 소팅이 가능하다. |
top 명령행 자체에서 “명령인자”를 통해 여러 가지 조작이 가능하다. |
|
② 명령 인자 옵션 |
|