FileLog 및 WinLog 수집기 모두에 대해 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 파서에 대한 타임 스탬프 형식은
CLF 파서 타임 스탬프 형식 지정자에 대해 다음 형식 토큰도 지원됩니다.
타임 스탬프가 형식 토큰으로 표시되는 로그를 구문 분석하려면 구성에 다음 형식을 사용할 수 있습니다.
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 토큰을 사용할 수 있습니다. 예를 들어 타임 스탬프 파서의 |
||
'%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 서버에서 각각 referer 및 user_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\"
- 액세스 로그 형식(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 - 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\"
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
- 오류 로그 형식(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 - 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.
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
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