FileLog
および WinLog
の両方のコレクタに共通ログ フォーマット (CLF) Apache パーサを構成できます。
共通ログ フォーマット (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" |
たとえば、CLF パーサを使用して winlog または filelog ソースのいずれかから収集したログを解析する場合には、以下の構成を指定します。
[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 のデフォルト値は debug=no です。
CLF を使用して生成されたログの解析
CLF を使用して生成されたログを解析するには、対応するフォーマットを構成で定義する必要があります。次に例を示します。
format=%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User_Agent}i\"
指定子 %{Referer}i
および %{User_Agent}i
を使用する、空でないフィールドは、VMware Aria Operations for Logs サーバにそれぞれ referer
および user_agent
という名前で表示されます。
タイムスタンプ パーサと CLF パーサとの統合
Apache ログはカスタム時刻フォーマットで解析できます。
カスタム時刻フォーマットのあるアクセス ログは以下のとおりです。
format = %h %l %u %{%a, %d %b %Y %H:%M:%S}t \"%r\" %>s %b
カスタム時刻フォーマットが指定されていない場合、CLF パーサは自動タイムスタンプ パーサを実行して、自動的に時刻フォーマットを減算することを試みます。指定されている場合、カスタム時刻フォーマットが使用されます。
エラー ログでサポートされているカスタム時刻フォーマットでサポートされているものは以下のとおりです。
カスタム時刻フォーマット | 説明 | 構成フォーマット |
---|---|---|
%{u}t |
マイクロ秒を含む現在時刻 | format=[%{u}t] [%l] [pid %P] [client %a] %M |
%{cu}t |
マイクロ秒を含むコンパクトな 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