아파치 모니터링
다중 사용자 환경 시스템에 로그는 무척이나 중요한 정보를 제공한다 .왜냐하면 만일에 있을지 모르는 해킹에 대해서 뿐만 아니라 로그는 서버의 오류나 사용자의 오류에 대해서 추적할 수 잇는 정보를 제공해 주기 때문이다. 특히 웹사이트는 접속 수를 중요시하는 요즈음에는 로그는 한 사이트에 대한 대한 접속 수를 통계내는 데 중요하기 때문에 상업적으로도 대단히 중요하다.
아파치 상태 정보
현재 웹사이트의 정보를 보기 위해서는 server-status를 사용해서 현재 서버의 정보를 구할 수 있다. 과거의 정보를 구하기 위해서는 로그 파일을 분석해야 한다.
일단 현재 서버의 상태를 보도록 하자.
htttpd.conf 파일에서 코멘트 처리된 server-status를 풀어준 후 접속 가능한 컴퓨터를 다음과 같이 수정해 준다.
<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from all
</Location>
그런 다음 아파치 서버의 프로세서 번호를 확인한 후 , 아파치 서버를 재시작 해주 준다.
그런 다음으로 아래와 같이 웹사이트에 접속해보면 웹 서어의 상태에 대한 간략한 정보를 볼 수 있다. 만약 일정한 간격으로 서버의 정보를 구하자고 한다면 URL 마지막에 refresh 시간 간격을 적어주면 정해지 시간마다 서버의 정보를 구해온다. 다음 예는 5초에 한번씩 서버의 정보를 구하는 예제이다.
http://www.soo0e.org/server-status?refresh=5
TIP------------------------------------------------------------------------------------------------
httpd.conf 파일은 내용이 방대해서 초보 관리자는 설정하기가 매우 까다롭다. 자신이 설정할 옵션이 올바르게 설정이 되었는지 확인하기 위해서는 다음과 같이 apachectl를 실행해서 옵션을 테스트 해 볼 수있다.
[root@soo0e ~]# /etc/init.d/httpd configtest
Syntax OK
아파치 로그 설정
앞에서 설명한 서버 정보는 현재의 정보이다. 이에 반해 로그는 과거의 정보이다. 로그는 모든 웹 서버의 비종속적으로 사용하기 위해서 Commen Log Format(CFL)라 하는 포멧을 사용하고 있다. 이 포맷은 클라이언트의 요청에 대한 로그를 각가의 줄로 기록을 하게 되며, 한 줄에서는 스페이스로 구별을 하여 로그 정보를 적고 있다. 이 파일 포맷은 거의 모든 웹 서버에서 지원을 하고 있으나 때에 따라서 웹 서버를 만든 제작사의 포맷 또는 DB에 바로 저장할 수 있느 기능을 가지고 있는 웹 서버도 있다.
로그를 기록하기 위한 지시자는 TransferLog, LogFormat, CustomLog 세 개의 지시자이다.
TransferLog
TransferLog file=pipe
TransferLog는 로그를 적을 파일 또는 프로그램을 지정할 수 있다. 로그는 파일에 적을 수도 있지만 특정 파이프 라인을 통해서 프로그램으로 바로 전달할 수도 있다. TransferLog 지시자에는 특정 로그 포맷을 지정할 수 없기 때문에 가장 나중에 정의한 LogFormat을 사용한다. 특정 로그 포맷이 정의되지 않았다면 CLF 로그 파일 포맷을 따르게 된다.
예를 들어서 간략하게 A,B,C 세 개의 로그 포맷을 지정했다면 TransferLog가 사용하는 로그 포맷을 LogFormat C를 사용하게 된다.
LogFormat "포맷형식" A
LogFormat "포맷형식" B
LogFormat "포맷형식" C
TransferLog logs/access.log
위의 예저는 C 포맷을 사용한다. 로그가 쌓일 대상 파일은 logs/access.log 파일디ㅏ. 이 매개변수가 "/"로 시작하지 않았기 때문에 ServerRoot 밑에 있는 logs 디렉토리에서 access.log 파일에 로그를 적게 되는 것이다. 만약 "/"로 경로가 시작되었다면 이 경로는 절대 경로가 된다.
CustomLog
ClotomLog file-pipe format-or-nickname
CustomLog는 TransferLog와 똑같은 기능을 지니고 있는 자시자이지만 매개 변수에 포맷을 따로 지정하거나 가치을 적을 수 있다.
LogFormat "포맷형식" A
LogFormat "포맷형식" B
LogFormat "포맷형식" C
CustomLog/access.log A
위와 같이 로그 파일을 정의했다면, LogFormat에서 A라고 별명을 달아논 포맷을 가지고 logs/access.log 파일에 로그를 적게 된다. 물론 이 별칭 대신에 포맷을 직접 적어도 상관이 없다.
LogFromat
LogFormat format [nickname]
Default: LogFormat "%h %i %u %t "%r" %s %b"
LogFormat은 CLF 로그 포맷과 별도로 관리자가 정의한 로그 파일 형식을 만들기 위해서 사용이 된어진다.
다음 표는 로그 포맷에서 사용이 되어지는 변수들이다.
변수 설 명
%...a 요청한 클라이언트의 IP주소
%...A 로컬 IP주소
%...B HTTP 해더를 포함한 전송 바이트 수
%...b HTTP 헤더를 제외한 전송 바이트의 수, 정송 바이트가 없는 경우에 CLF에서 0으로 표기하지 않고 '-'로 표기한다.
%...{FOOBAR}e FOOBAR라는 환경 변수
%...f 파일명
%...h 요청한 원격 호스트(예:210.210.210.10)
%...H 원격 프로토콜(예 HTTP/1.1)
%...(Foobar}l Foobar의 내용 - 서버에 요청을 할 때의 헤더의 있는 내용
%...l 리모트 로그인 이름(identd 데몬으로부터 얻어올 수 있을때, 없을 경우 - 표시)

댓글목록
등록된 댓글이 없습니다.