>> Read No. 1398 article  
아파치 로그를 postgreSQL로 관리하기..

등록 2001-06-24 13:59:00     조회 4
이름 김용성    

		웹서버를 운영하면서.. 로그 관리라는 걸 하게 되었습니다.
로그 파일이 커지면 일단 웹서버가 느려지고 보통의 경우 /var/log에 로그 관리를 했는데
(님들은 어떻게 하시는 지 모릅니다..emoticon) 저의 경우 /var에 메모리 할당을 적게 하기 때문에
주기적으로 지워주기 위해 logrotate를 썼는데 컴파일이 잘 안되더군요.(참고로 전 스크래칭
리눅스를 사용하고 있습니다..emoticon) 그리고 cron디몬이 root로 뿌려대는 메일의 양도 만만치
않더군요. 특히나 제가 webalizer를 깔고 5분마다 한번씩 돌려주었기 때문에..emoticon;;
 그래서 다른 방법을 찾아보다가 로그를 디비로 관리하는 걸 우연치 않게 발견해서 그냥 
맨날 보고 가기 미안한 마음도 있구해서리...그야말로 1전짜리 팁을 하나 제공하고자 합니
다.  이 아파치 모듈은 포스트그래스를 이용합니다. 전 포스트그래스와 MySQL을 동시에 사용
하고 있는데요. 일단 포스트그래스는 MySQL에 비해 시스템 리소스를 덜먹습니다.(디몬자체
는..)물론 쿼리속도는 MySQL이 짱이지요. 따라서 극한의 빠른속도가 필요한 항목이 아닌 경
우엔 오히려 MySQL보다 나은점이 많이 있는것같구요. 저는 초보라(디비에 있어선..) 잘 모르
겠습니다만은 포스트그래스가 고급기술이 더 많이 채용되어 있다고 하네용.emoticon 근데 사실 
제가 운영하는 소형 웹서버에서는 거의 상관이 없을 정도로 속도가 그렇게 나쁘다고 생각
되지는 않습니다.  이 모듈은 아파치를 첨부터 다시 컴파일을 할 필요가 없습니다...모듈만
 컴파일해서 그냥 httpd.conf 에 올려주기만 하면 되더군요.
 *설치
 PostgreSQL의 설치는 설명하지 않겠습니다. http://kltp.kldp.org에 좋은 팁들이 많이 있더군요.
 일단 그냥 하시던대로 아파치를 컴파일하십시오. rpm으로 해도 상관은 없는 듯합니다.
이 부분도 많은 하우투들이 있으니 참고하세요.
 저의경우엔, MySQL,PostgreSQL,php,mod_gzip을 미리 컴파일하였습니다.
 모듈소스코드 다운로드 : http://download.extreme-ware.com/  무슨 소프트웨어 회사인거 같은데요..
.Open Source Project라는 항목 3번째에 mod_pgsqllog 항목이 있습니다. 다운로드 받으세요..
 압축푸세용.
#zcat mod_pgsqllog-0.4.tar.gz|tar xvf -
#cd mod_pgsqllog-0.4
#ls
COPYING  INSTALL  create-table.sql  src
 일단 INSTALL을 잘 읽으세요..하우투가 있더라도..특정한 문제엔 INSTALL을 보는 게 좋더구만
요. 제 경험...emoticon
 src디렉으로 이동합니다. 컴파일해야죵...emoticon
 #cd src
#ls
Makefile  mod_pgsqllog.c  mod_pgsqllog.h
 다음 Makefile을 vi나 기타 좋아하시는 에디터로 편집하세요.
#vi Makefile
 <<<<<파일의 시작
##
##  Makefile -- Build procedure for sample pgsqllog Apache module
##  Autogenerated via ``apxs -n pgsqllog -g''.
##
 #   the used tools
APXS=apxs //<-아파치에 포함되어 있는 apxs가 있는 위치로 바꿔주세요..
APACHECTL=apachectl//<-마찬가지..만약 아파치를 /usr/local/apache에 깔았다면..이부분은 /usr/local/apac
he/bin/apachectl이라고 하면 됩니다.  #   additional defines, includes and libraries
#DEF=-D_DEBUG -D_TRACE_C_CALLS -D_TRACE_POSTGRESQL
INC=-I/usr/local/pgsql/include // <-postgres를 깐위치..저의경우 prefix를 /usr/local/pgsql에 두었으니 이
렇게 되었겠지요? LIB=-L/usr/local/lib -lpq -L/usr/local/pgsql/lib -lpq // <-마찬가지입니다.
 #   the default target
all: mod_pgsqllog.so
 #   compile the shared object file
mod_pgsqllog.so: mod_pgsqllog.c
        $(APXS) -c $(DEF) $(INC) $(LIB) mod_pgsqllog.c
 #   install the shared object file into Apache
install: all
        $(APXS) -i -a -n 'pgsqllog' mod_pgsqllog.so
 #   cleanup
clean:
        -rm -f mod_pgsqllog.o mod_pgsqllog.so
 #   simple test
test: reload
        lynx -mime_header http://localhost/pgsqllog
 #   install and activate shared object by reloading Apache to
#   force a reload of the shared object file
reload: install restart
 #   the general Apache start/restart/stop
#   procedures
start:
        $(APACHECTL) start
restart:
        $(APACHECTL) restart
stop:
        $(APACHECTL) stop
 <<끝...
 제가 주석달아놓은 그부분만 수정하시면 되구요..
일단 올바르게 수정되었으면 make하세요.
 #make
#make install <-이렇게 해주면..아파치의 prefix에 libexec에 바이너리가 자동으로 들어가구..
httpd.conf도 고쳐줍니당...
 이제 디비를 만들어주어야겠지요..
일단 postgresql을 다룰수 있는 계정으로 접근하세요. 보통의 경우 postgres란 이름의 계정을 만
들지요.
 #su - postgres
 디비를 만들어줍니다.
 $createdb apache
CREATE
 다음 디비를 사용할 사용자를 만들어줍니다.
 $psql
>CREATE USER "apache" WITH SYSID 1012 PASSWORD '사용할패스워드' CREATEDB NOCREATEUSE
R VALID UNTIL '2038-01-18 00:00:00+09';
>q
 다음 소프트웨어 배포시 나오는 sql파일을 덤프하세요.
원래 배포되는 사이트에서 나온 sql파일은 테이블이름이 apachelog로 되어 있을 겁니다.
맘에 안드시면 바궈도 됩니다. 그럼 뒤에 httpd.conf에 table항목을 그 이름으로 바꿔주면 되겠
지요.  #psql apache < create-table.sql
 이제 모든 준비는 끝났습니다.
httpd.conf에 디비 접속정보를 넣어주어야겠군요.
 INSTALL파일을 읽어보면 LoadModule이나 Addmodule을 넣어주어야 한다는데 그건 make install시에
다 됩니다. 따라서....
 <IfModule mod_pgsqllog.c>
        PgSqlLogHost    localhost
        PgSqlLogPort    5432
        PgSqlLogDatabase        apache
        PgSqlLogUsername        apache
        PgSqlLogPassword        사용할패스워드
        PgSqlLogTable           apachelog
</IfModule>
 이것만 넣어주세요.
아파치 리부팅.
#apachectl restart
 다음 확인해보세요.
$psql apache
$select * from apachelog;
 만약 돌아간다면...httpd.conf에 access로그 관련을 모두 날리세요.(인스톨파일에는 중복-dual-
관리가 가능하다고 말하고 있으나 별 필요없는 듯합니다...)하지만 errorlog부분은 남기셔야 
합니다. 로그를 쓸 수 없을 경우 에러를 잡기 위해서입니다. 디비접속 실패 등도 이곳에 기
록됩니다.  다시 아파치 리부팅.
#apachectl restart
 모두 끝났군요.
 테스트해보세요.
 로그 분석툴을 php로 짜도 되겠죠? 히히...
지금 제가 연구중인데...워낙 초보라...혹시 잘짜신 분계심 짜서 공개해 주시면 엄청 감사
시럽겠죵..emoticon  ps. 디비에 무척이나 많이 쌓이는군여..크크..역시 가끔은 비워줘야 할것같습
니다. 하지만 일단 로그를 쓰는게 느려지지 않으니까...좋군염...
 잘못된 점 있으면 사정없이 후려주셈.
 그럼~emoticon--멍멍
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.47 초 ] 작업시간: [ 0.08 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791045283
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.