커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 네트워크(network) > 웹 서버(web, httpd, apache) 도움말
검색 : 사이트 WHOIS 웹서버 종류

WebDAV (7, 글 1, 자료 4)
웹서버 튜닝 (5, 글 4, 자료 2)
웹서버 사용 통계 자료 (2, 자료 1)
Apache SSL / mod_ssl (4, 글 3, 자료 2)

  아파치 로그 설정 (rotatelogs 사용, image와 warm 로그는 별도 파일로) 작성일 : 2003/08/07 02:15
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 15119
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2000 아님 2001(언제인지 기억 안남 ^^)
    수정일 : 2003.8.6(수)

    접속자가 많은 사이트에서는 아파치 로그를 관리하는 것도 만만치 않다.
    Linux, solaris 등에서 로그 파일 크기가 2GB가 넘어서 골치아픈 경우도 발생한다.
    또한 로그 파일이 크면 클수록 서버에 필요없는 무리를 주는 것도 사실이다.


    1) Apache 자체에서 제공하는 rotatelogs를 이용하여 로그를 시간과 용량에 따라
       분리 저장하는 방법
    2) 보다 개선된 형태의 cronolog로 로그를 rotation하는 방법
    3) images 로그와 윈도 OS 관련된 warm 로그를 별도로 저장하는 방법을 소개한다.


    ------------------------------------------------------------------------
    1) weblog를 자동 rotation하기

    로그를 관리하기 위해 logrotate 를 사용하는 경우가 많지만, 이는 서비스를 일시 중단해야
    한다. 그러나 apache에서 제공하는 rotatelogs는 웹서버 동작중에 (1) 특정시간간격이나
    (2) 특정 크기 단위로 로그를 저장한다.

    예) CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access.log 86400" common

    위는 웹서버를 실행한지 86400초(24시간)간격으로 로그파일을 나눠서 저장한다.
    로그 파일명은 'access.log.????' 형식으로 ???? 는 로그파일 생성시의 timestamp 이다.

    즉, access.log.1060189068,  access.log.1060120280 형태로 파일명이 만들어진다.
    이런형태의 파일명이라면 이해하기 힘들 것이다. 좀더 쉽게 파일명을 만들어보자.

    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d-%H%M%S 86400" common
    또는
    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d 86400" common

    이제는 'access_log.월일-시분초' 또는 'access_log.월일' 형태로 생성될 것이다.

    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d-%H%M%S 100M" common

    100M 단위로 로그를 저장할 수도 있다.

    2) cronolog 툴로 개선된 형태로 log rotation하기

    cronolog는 년월일에 따라 다른 디렉토리에 로그를 남길 수도 있다.
    또한 webalizer 같은 웹로그 분석툴은 access_log 와 같이 지정한 파일을 분석하는데,
    access_log.년월일' 처럼 로그 파일이 매번 바뀐다면 로그파일 지정하는게 쉽지않다.
    cronolog 는 심볼릭 링크를 통해 이를 쉽게 해결해주고 있다.

    http://www.cronolog.org/ 에서 cronolog-x.y.z.tar.gz 을 받아

    ./configure
    make
    make install

    을 한다.

    사용은 rotatelogs와 비슷하다.

      (1) 년월 단위로 로테이션한다.

      CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/access_log.%Y%m" common

      년월로 나눠서 'access_log.년월'형식으로 저장을 한다.

      /usr/local/apache/logs/access_log.200307
      /usr/local/apache/logs/access_log.200308

      (2) 다음과 같이 년월에 따라 다른 디렉토리에 로그를 나눌 수도 있다.

      CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/%Y/%m/access_log.%Y%m%d" common

      /usr/local/apache/logs/2003/07/access_log.20030701
      /usr/local/apache/logs/2003/07/access_log.20030702
      /usr/local/apache/logs/2003/07/access_log.20030703
      ...
      /usr/local/apache/logs/2003/08/access_log.20030801

      (3) 로그파일을 access_log로 심볼릭 링크해보자

      CustomLog "|/usr/local/sbin/cronolog --symlink=/usr/local/apache/logs/access_log
      /usr/local/apache/logs/access_log.%Y%m" common

      /usr/local/apache/logs/access_log -> /usr/local/apache/logs/access_log.200308
      /usr/local/apache/logs/access_log.200307
      /usr/local/apache/logs/access_log.200308

    3) images 로그와 warm 로그는 별도로 저장

    웹서버 튜닝 중에 이미지 파일만 별도의 웹서버로 분리하는 방법이 있다.
    이 방법은 Request와 I/O 출력, 트래픽을 분산하는 효과가 있을 것이다.

    이런 튜닝 방법과는 다르지만 images 로그만 별개로 파일로 저장하는 방법을 소개한다.
    다음은 이미지 파일은 images_log에, Codered나 Nimda 등의 warm은 warm_log 에 저장하는 설정이다.

    ---------------------------------
    SetEnvIf Request_URI "\.gif$"           except=images
    SetEnvIf Request_URI "\.jpe?g$"         except=images
    SetEnvIf Request_URI "\.png$"           except=images
    SetEnvIf Request_URI "^/default\.ida"   except=warm     # Codered
    SetEnvIf Request_URI "/root\.exe?"      except=warm     # Nimda
    SetEnvIf Request_URI "/cmd\.exe?"       except=warm
    SetEnvIf Request_URI "^/NULL\.printer"  except=warm     #
    SetEnvIf Request_URI "^/NULL\.IDA?"     except=warm
    SetEnvIf Request_URI "^/NULL\.ida?"     except=warm
    SetEnvIf Request_URI "^/NULL\.idq?"     except=warm

    SetEnvIf except      images   images
    SetEnvIf except      warm     warm

    CustomLog logs/access_log common env=!except
    CustomLog logs/images_log common env=images
    CustomLog logs/warm_log   common env=warm
    ---------------------------------
      
    URI 중에 .gif, .jpg, .jpeg, .png 로 끝나는 것은 except 변수에 images값으로 정의하고,
    /default.ida, /root.exe?, /cmd.exe?, /NULL.printer, /NULL.IDA?, /NULL.ida? /NULL.idq?
    등은 윈도의 IIS의 취약점을 이용한 웜 공격으로 except 변수에 warm 값으로 정의한다.
      
    그리고 또한번  변수 except의 값이 images 인 것은 변수 images로 정의
    변수 except의 값이 images 인 것은 변수 warm으로 정의
      
    CustomLog 설정을 보면
    env=!except 에 의해 image와 warm로그(except변수로 정의)를 제외한(=!) 것만 access_log
    에 저장하게 된다.
    마찬가지로 env=images, env=warm에 따라 각각 images_log, warm_log에 저장하게 된다.
      
      
    cronolog 와 함께 쓸 때는 다음과 같이
      
    CustomLog "|/usr/local/sbin/cronolog --symlink=/usr/local/apache/logs/access_log
    /usr/local/apache/logs/access_log.%Y%m" common env=!except
    CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/images_log.%Y%m"  common env=images
    CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/warm_log.%Y%m"    common env=warm
      커피닉스 카페 최근 글
    [08/12] Жизнь на юге
    [08/12] гидра зеркало
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
    [01/20] Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~