FileLogWinLog 수집기 모두에 대해 CLF(Common Log Format) Apache 구문 분석기를 구성할 수 있습니다.

CLF(Common Log Format)(Apache) 구문 분석기

기본 CLF 구문 분석기는 다음과 같은 순서 및 이름의 필드를 정의합니다.

host ident authuser datetime request statuscode bytes

구문 분석기 이름: clf

CLF 구문 분석기의 옵션은 format입니다.

format 옵션

format 옵션은 Apache 로그 생성에 사용되는 형식을 지정합니다. 이 옵션은 필수 사항이 아닙니다.

형식을 지정하지 않으면 다음의 기본 공통 로그 형식이 사용됩니다.

%h %l %u %t \"%r\" %s %b

CLF 구문 분석기 형식 문자열은 정규식을 허용하지 않습니다. 예를 들어 식 \s+ 대신 공백을 지정하십시오.

다른 로그 형식을 구문 분석하려면 에이전트의 구성에 해당 형식을 지정하십시오. 구문 분석된 필드는 서버 측에 다음 이름으로 표시됩니다.

참고: 변수가 필요한 경우 구성에 {VARNAME}이 제공되지 않으면 필드가 무시됩니다.
필드
'%a': "remote_ip"
'%A': "local_ip"
'%B', '%b': "response_size"
'%C': 형식에 지정된 변수 이름에 따라 다릅니다.
'%c': 형식에 지정된 변수 이름에 따라 다릅니다.
'%D': "request_time_mcs"
'%E': "error_status"
'%e': 형식에 지정된 변수 이름에 따라 다릅니다.
'%F', '%f': "file_name"
'%h': "remote_host"
'%H': "request_protocol"
'%i': 형식에 지정된 변수 이름에 따라 다릅니다.
'%k': "keepalive_request_count"
'%l': "remote_log_name"
'%L' "request_log_id"
'%M': "log_message"(이 지정자에 도달한 후에 파서는 입력 로그 구문 분석을 중지함)
'%m': "request_method"
'%n': 형식에 지정된 변수 이름에 따라 다릅니다.
'%o': 형식에 지정된 변수 이름에 따라 다릅니다.
'%p': "server_port"

추가 형식을 이 지정자와 함께 사용할 수 있습니다. %{format}p. 지원되는 형식은 "canonical", "local" 또는 "remote"입니다. "canonical" 형식이 사용되면 필드 이름은 "server_port"로 유지됩니다. "local" 형식이 사용되면 필드 이름은 "local_server_port"가 되고 "remote" 형식이 사용되면 필드 이름은 "remote_server_port"가 됩니다.

'%P': "process_id"

추가 형식을 이 지정자와 함께 사용할 수 있습니다. %{format}P. 지원되는 형식은 "pid", "tid" 및 "hextid"입니다. "pid"가 형식으로 사용되면 필드 이름은 "process_id"가 됩니다. 반면에 "tid" 및 "hextid" 형식은 이름이 "thread_id"인 필드를 생성합니다.

'%q': "query_string"
'%r': "request"
'%R': "response_handler"
'%s': "status_code"는 요청의 최종 상태를 생성합니다.
'%t':

"timestamp"는 수집 시 이벤트 타임 스탬프로 작동하고, 타임 스탬프 구문 분석기를 활용합니다. 타임 스탬프 자동 감지를 재정의하려면 날짜 및 시간 형식을 %{%Y-%m-%d %H:%M:%S}t와 같이 중괄호로 지정할 수 있습니다. 자세한 내용은 타임 스탬프 구문 분석기를 참조하십시오.

CLF 파서에 대한 타임 스탬프 형식은 "begin:" 또는 "end:" 접두사로 시작할 수 있습니다. 형식이 begin:으로 시작하면(기본값) 요청 처리가 시작될 때가 시간으로 지정됩니다. end:로 시작될 경우 이 시간은 요청 처리가 끝나는 시간에 가까운, 로그 항목이 기록될 때에 해당합니다. 예를 들어 다음과 같은 형식은 CLF 파서에서 지원됩니다. %h %l %u [%{begin:%d/%b/%Y %T}t.%{msec_frac}t] \"%r\" %>s %b

CLF 파서 타임 스탬프 형식 지정자에 대해 다음 형식 토큰도 지원됩니다.
sec
Epoch 이후의 시간(초)입니다. 이 시간은 타임 스탬프 파서의 %s 지정자와 같습니다.
msec
Epoch 이후의 시간(밀리초)입니다.
usec
Epoch 이후의 시간(마이크로초)입니다.
msec_frac
밀리초 부분(타임 스탬프 파서의 %f 지정자와 같음)
musec
마이크로초 부분(타임 스탬프 파서의 %f 지정자와 같음)
타임 스탬프가 형식 토큰으로 표시되는 로그를 구문 분석하려면 구성에 다음 형식을 사용할 수 있습니다.
format=%h %l %u %{sec}t \"%r\" %s %b
format=%h %l %u %{msec}t \"%r\" %s %b
format=%h %l %u %{usec}t \"%r\" %s %b

이러한 토큰을 서로 조합하거나 동일한 형식 문자열의 타임 스탬프 파서 형식과 조합할 수 없습니다. 대신 여러 %{format}t 토큰을 사용할 수 있습니다. 예를 들어 타임 스탬프 파서의 %f 지정자를 사용하는 경우를 제외하고 밀리초를 포함하는 타임 스탬프를 사용하려면 다음의 조합된 타임 스탬프를 사용할 수 있습니다. %{%d/%b/%Y %T}t.%{msec_frac}t .

'%T': "request_time_sec"
'%u': "remote_auth_user"
'%U': "requested_url"
'%v': "server_name"
'%V': "self_referential_server_name"
'%X': "connection_status"는 형식에 지정된 변수 이름에 따라 다릅니다.
'%x': 형식에 지정된 변수 이름에 따라 다릅니다.
'%I': "received_bytes"
'%O': "sent_bytes"
'%S': "transferred_size"

예를 들어 winlog 또는 filelog 소스에서 수집된 로그를 CLF 구문 분석기로 구문 분석하려면 다음 구성을 지정합니다.

[filelog|clflogs]
directory=D:\Logs
include=*.txt
parser=myclf

[parser|myclf]
debug=yes ;Note: use this option only while debugging and set it to ‘no’ when used in production.
base_parser=clf
format=%h %l %u %b %t \"%r\" %s

이 구성을 사용하면 clflogs 소스에서(예: directory=D:\Logs 디렉토리에서) 수집된 로그가 myclf에 의해 구문 분석됩니다. myclf 구문 분석기는 구성에 설명된 형식으로 생성된 로그만 구문 분석합니다.

구문 분석기에 대한 디버그의 기본 값은 debug=no입니다.

CLF를 사용하여 생성된 로그 구문 분석

CLF를 사용하여 생성된 로그를 구문 분석하려면 구성에서 해당 형식을 정의해야 합니다. 예를 들면 다음과 같습니다.

format=%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User_Agent}i\"

지정자 %{Referer}i%{User_Agent}i를 사용하는 비어 있지 않은 필드는 vRealize Log Insight 서버에서 각각 refereruser_agent라는 이름으로 표시됩니다.

타임 스탬프 구문 분석기와 CLF 구문 분석기 통합

사용자 지정 시간 형식의 Apache 로그를 구문 분석할 수 있습니다.

다음과 같이 사용자 지정 시간 형식을 가진 로그에 액세스합니다.

format = %h %l %u %{%a, %d %b %Y %H:%M:%S}t \"%r\" %>s %b

사용자 지정 시간이 지정되지 않은 경우 CLF 구문 분석기는 자동 타임 스탬프 구문 분석기를 실행하여 자동으로 시간 형식을 추론하려고 시도하며, 그렇지 않은 경우에는 사용자 지정 시간 형식이 사용됩니다.

오류 로그에 대해 지원되는 사용자 지정 시간 형식은 다음과 같습니다.

사용자 지정 시간 형식 설명 구성 형식
%{u}t 마이크로초(ms)를 포함한 현재 시간 format=[%{u}t] [%l] [pid %P] [client %a] %M
%{cu}t 마이크로초(ms)를 포함한 컴팩트 ISO 8601 형식 현재 시간 format=[%{cu}t] [%l] [pid %P] [client %a] %M

지원되는 타임 스탬프 지정자의 전체 목록은 타임 스탬프 구문 분석기를 참조하십시오.

Windows에 대한 Apache 기본 액세스 로그 구성

이 예는 Windows에 대한 Apache v2.4 액세스 로그 구성의 형식을 지정하는 방법을 보여줍니다.

;ACCESS LOG
;127.0.0.1 - - [13/May/2015:14:44:05 +0400] "GET /xampp/navi.php HTTP/1.1" 200 4023 "http://localhost/xampp/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0"
;format=%h %l %u %{%d/%b/%Y:%H:%M:%S %z}t \"%r\" %>s %b \"%{Referer}i\" \"%{User_agent}i\"
 
; Section to collect Apache ACCESS logs
[filelog|clflogs-access]
    directory=C:\xampp\apache\logs
    include=acc*
    parser=clfparser_apache_access
    enabled=yes

;Parser to parse Apache ACCESS logs
[parser|clfparser_apache_access]
    debug=yes
    base_parser=clf
    format=%h %l %u %{%d/%b/%Y:%H:%M:%S %z}t \"%r\" %>s %b \"%{Referer}i\" \"%{User_agent}i\"
액세스 로그 형식 정의:
  1. 액세스 로그 형식(httpd.conf)에 대해 Apache를 구성합니다.
     LogFormat "%h %l %u %{%d-%b-%Y:%H:%M:%S}t \"%r\" %a %A %e %k %l %L %m %n %T %v %V %>s %b \"%{Referer}i\" \"%{User_Agent}i\"" combined
    
  2. CLF 구문 분석기 구성을 정의합니다.
;ACCESS LOG
;127.0.0.1 unknown - 21-May-2015:13:59:35 "GET /xampp/navi.php HTTP/1.1" 127.0.0.1 127.0.0.1 - 0 unknown - GET - 1 localhost localhost 200 4023 "http://localhost/xampp/" "-"
[filelog|clflogs-access]
    directory=C:\xampp\apache\logs
    include=acc*;_myAcc*
    parser=clfparser_apache_access
    enabled=yes
; Parser to parse Apache ACCESS logs
[parser|clfparser_apache_access]
   debug=yes
   base_parser=clf
   format=%h %l %u %{%d-%b-%Y:%H:%M:%S}t \"%r\" %a %A %e %k %l %L %m %n %T %v %V %>s %b \"%{Referer}i\" \"%{User_Agent}i\"
CLF 구문 분석기가 다음을 반환합니다.
remote_host=127.0.0.1
timestamp=2015-05-13T10:44:05
request=GET /xampp/navi.php HTTP/1.1
status_code=200
response_size=4023
referer=http://localhost/xampp/
user_agent=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0

이 예는 Windows에 대한 Apache v2.4 오류 로그 구성의 형식을 지정하는 방법을 보여줍니다.

;ERROR LOG
;[Wed May 13 14:37:17.042371 2015] [mpm_winnt:notice] [pid 4488:tid 272] AH00354: Child: Starting 150 worker threads.
;[Wed May 13 14:37:27.042371 2015] [mpm_winnt:notice] [pid 5288] AH00418: Parent: Created child process 3480
;format=[%{%a %b %d %H:%M:%S%f %Y}t] [%m:%{severity}i] [pid %P:tid %{thread_id}i] %E: %M
;format=[%{%a %b %d %H:%M:%S%f %Y}t] [%m:%{severity}i] [pid %P] %E: %M 
 
; Section to collect Apache ERROR logs
[filelog|clflogs-error]
    directory=C:\xampp\apache\logs
    include=err*
    parser=clfparser_apache_error
    enabled=yes
 
;Parser to parse Apache ERROR logs
[parser|clfparser_apache_error]
    debug=yes
    base_parser=clf
    format=[%{%a %b %d %H:%M:%S%f %Y}t] [%m:%{severity}i] [pid %P:tid %{thread_id}i] %E: %M
    next_parser=clfparser_apache_error2
 
;Parser to parse Apache ERROR logs
[parser|clfparser_apache_error2]
    debug=yes
    base_parser=clf
    format=[%{%a %b %d %H:%M:%S%f %Y}t] [%m:%{severity}i] [pid %P] %E: %M
참고: 제공되는 이름은 결합된 로그 형식에 해당합니다. Apache 오류 로그는 Apache 오류 로그 형식이 아니라 위의 형식 지정 키를 사용하여 설명되기도 합니다.
오류 로그 형식 정의:
  1. 오류 로그 형식(httpd.conf)에 대해 Apache를 구성합니다.
     LogFormat "%h %l %u %{%d-%b-%Y:%H:%M:%S}t \"%r\" %a %A %e %k %l %L %m %n %T %v %V %>s %b \"%{Referer}i\" \"%{User_Agent}i\"" combined
    
  2. CLF 구문 분석기 구성을 정의합니다.
;Parser to parse Apache ERROR logs
[parser|clfparser_apache_error]
   debug=yes
   base_parser=clf
   format=[%{%a %b %d %H:%M:%S%f %Y}t] [%m:%{severity}i] [pid %P] %E: %M
   next_parser=clfparser_apache_error2

;Parser to parse Apache ERROR logs
[parser|clfparser_apache_error2]
   debug=yes
   base_parser=clf
   format=[%{%a %b %d %H:%M:%S%f %Y}t] [%m:%{severity}i] [pid %P:tid %{thread_id}i] %E: %M

로그 항목:

[Wed May 13 14:37:17.042371 2015] [mpm_winnt:notice] [pid 4488:tid 272] AH00354: Child: Starting 150 worker threads.
CLF 구문 분석기가 로그 항목에 대해 다음 필드를 반환합니다(+0400 표준 시간대에서 구문 분석기를 사용 중인 경우).
timestamp=2015-05-13T10:37:17.042371
request_method=mpm_winnt
severity=notice
process_id=4488
thread_id=272
error_status=AH00354
log_message=Child: Starting 150 worker threads.

로그 항목:

[Wed May 13 14:37:27.042371 2015] [mpm_winnt:notice] [pid 5288] AH00418: Parent: Created child process 3480
CLF 구문 분석기가 로그 항목에 대해 다음 필드를 반환합니다(+0400 표준 시간대에서 구문 분석기를 사용 중인 경우).
timestamp=2015-05-13T10:37:27.042371
request_method=mpm_winnt
severity=notice
process_id=5288
error_status=AH00418
log_message=Parent: Created child process 3480