Sie können den Apache-Parser für das Common Log Format (CLF) sowohl für FileLog als auch für WinLog-Collectors konfigurieren.

Parser im Common Log Format (Apache)

Der Standard-CLF-Parser definiert die folgende Reihenfolge und Namen der Felder.

host ident authuser datetime request statuscode bytes

Parser-Name: clf

Die spezifische Option für den CLF-Parser ist format.

format-Option

Die format-Option gibt das Format an, in dem Apache-Protokolle erstellt werden. Die Option ist nicht obligatorisch.

Wenn kein Format angegeben ist, wird das folgende Standardformat als Common Log Format verwendet.

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

Die CLF-Parser-Formatzeichenfolge akzeptiert keine Regex-Ausdrücke. Geben Sie z. B. statt des Ausdrucks „\s+“ ein Leerzeichen an.

Zum Analysieren anderer Protokollformate geben Sie das betreffende Format in der Agentenkonfiguration an. Analysierte Felder werden auf der Serverseite mit den folgenden Namen angezeigt.

Hinweis: In Fällen, in denen eine Variable erforderlich ist, werden die Felder ignoriert, wenn {VARNAME} nicht in der Konfiguration bereitgestellt ist.
Felder Wert
'%a': "remote_ip"
'%A': "local_ip"
'%B', '%b': "response_size"
'%C': abhängig vom Namen der im Format angegebenen Variablen
'%c': abhängig vom Namen der im Format angegebenen Variablen
'%D': "request_time_mcs"
'%E': "error_status"
'%e': abhängig vom Namen der im Format angegebenen Variablen
'%F', '%f': "file_name"
'%h': "remote_host"
'%H': "request_protocol"
'%i': abhängig vom Namen der im Format angegebenen Variablen
'%k': "keepalive_request_count"
'%l': "remote_log_name"
'%L' "request_log_id"
'%M': "log_message" (Parser beendet nach dem Erreichen des Spezifizierers die Analyse des Eingabeprotokolls)
'%m': "request_method"
'%n': abhängig vom Namen der im Format angegebenen Variablen
'%o': abhängig vom Namen der im Format angegebenen Variablen
'%p': "server_port" Mit dem Spezifizierer %{format}p können weitere Formate verwendet werden. Unterstützte Format sind "canonical", "local" oder "remote". Wenn das Format "canonical" verwendet wird, bleibt der Feldname "server_port". Wenn das Format "local" verwendet wird, lautet der Feldname "local_server_port" und wenn das Format "remote" verwendet wird, lautet der Feldname "remote_server_port".
'%P': "process_id" Mit dem Spezifizierer %{format}P können weitere Formate verwendet werden. Unterstützte Format sind pid", "tid" und "hextid". Wenn "pid" als ein Format verwendet wird, lautet der Feldname "process_id". Durch die Formate "tid" und "hextid" werden Felder mit dem Namen "thread_id" generiert.
'%q': "query_string"
'%r': "request"
'%R': "response_handler"
'%s': "status_code", durch das der endgültige Status der Anfrage generiert wird, wird ebenfalls unterstützt. Dies wird auf dem Server als "status_code" angezeigt.
'%t':

"timestamp" dient bei der Erfassung als Ereigniszeitstempel und bindet den Zeitstempel-Parser ein. Die automatische Erkennung von Zeitstempel, Datums- und Zeitformat kann durch Angabe in geschweiften Klammern: %{%Y-%m-%d %H:%M:%S}t überschrieben werden. Weitere Informationen finden Sie unter Timestamp-Parser.

Das Format des Zeitstempels für den CLF-Parser kann mit "begin:"- oder "end:"-Präfixen beginnen. Wenn das Format mit begin: beginnt (Standard), wird die Zeit zu Beginn der Anforderungsverarbeitung erfasst. Wenn es mit end: beginnt, ist die Zeit diejenige, zu welcher der Protokolleintrag verfasst wird, beinahe am Ende der Anforderungsverarbeitung. Vom CLF-Parser werden beispielsweise Formate wie die folgenden unterstützt: %h %l %u [%{begin:%d/%b/%Y %T}t.%{msec_frac}t] \"%r\" %>s %b

Die folgenden Format-Token werden ebenfalls für die Formatspezifizierung des Zeitstempels des CLF-Parsers unterstützt:
sec
Anzahl der Sekunden seit der Epoche. Dies entspricht dem Spezifizierer %s des Zeitstempel-Parsers.
msec
Anzahl der Millisekunden seit der Epoche
usec
Anzahl der Mikrosekunden seit der Epoche
msec_frac
Millisekundenbruchteile (entspricht dem Spezifizierer %f des Zeitstempel-Parsers)
musec
Mikrosekundenbruchteile (entspricht dem Spezifizierer %f des Zeitstempel-Parsers)
Um Protokolle zu analysieren, in denen Zeitstempel durch Format-Token wiedergegeben werden, können die folgenden Formate in der Konfiguration verwendet werden:
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

Diese Token können in derselben Formatzeichenfolge nicht miteinander oder mit der Formatierung des Zeitstempel-Parsers kombiniert werden. Sie können stattdessen mehrere %{format}t-Token verwenden. Um beispielsweise einen Zeitstempel mit Millisekunden zu verwenden, ohne den Spezifizierer %f des Zeitstempel-Parsers zu verwenden, kann der folgende kombinierte Zeitstempel verwendet werden: %{%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" ist abhängig vom Namen der im Format angegebenen Variablen
'%x': abhängig vom Namen der im Format angegebenen Variablen
'%I': "received_bytes"
'%O': "sent_bytes"
'%S': "transferred_size"

Um z. B. Protokolle mit dem CLF-Parser zu analysieren, die entweder aus winlog- oder aus filelog-Quellen erfasst werden, geben Sie die folgende Konfiguration an:

[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

Bei Verwendung dieser Konfiguration werden Protokolle, die aus der clflogs-Quelle erfasst werden (z. B. aus dem Verzeichnis directory=D:\Logs) von myclf analysiert. Der myclf-Parser analysiert nur die Protokolle, die mit dem in der Konfiguration beschriebenen Format generiert wurden.

Der Debug-Standardwert für Parser ist debug=no.

Analysieren von mit CLF generierten Protokollen

Um Protokolle zu analysieren, die mit CLF generiert wurden, müssen Sie das entsprechende Format in der Konfiguration definieren. Beispiel:

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

Felder, die nicht leer sind und die Bezeichner %{Referer}i und %{User_Agent}i verwenden, werden im vRealize Log Insight-Server mit den Namen referer bzw. user_agent angezeigt.

Integrieren des Timestamp-Parsers mit dem CLF-Parser

Sie können Apache-Protokolle mit einem benutzerdefinierten Zeitformat analysieren.

Greifen Sie wie folgt auf Protokolle zu, die ein benutzerdefiniertes Zeitformat haben.

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

Wenn keine benutzerdefinierte Zeit angegeben ist, versucht der CLF-Parser, das Zeitformat automatisch zu erschließen, indem er den automatischen Timestamp-Parser ausführt. Andernfalls wird das benutzerdefinierte Zeitformat verwendet.

Folgende benutzerdefinierte Zeitformate werden für Fehlerprotokolle unterstützt:

Benutzerdefiniertes Zeitformat Beschreibung Konfigurationsformat
%{u}t Aktuelle Zeit einschließlich Mikrosekunden format=[%{u}t] [%l] [pid %P] [client %a] %M
%{cu}t Aktuelle Zeit im kompakten ISO 8601-Format, einschließlich Mikrosekunden format=[%{cu}t] [%l] [pid %P] [client %a] %M

Eine vollständige Liste der unterstützten Zeitstempelbezeichner finden Sie unter Timestamp-Parser.

Apache-Standard-Zugriffsprotokollkonfiguration für Windows

Dieses Beispiel zeigt, wie Sie die Zugriffsprotokollkonfiguration für Windows für Apache v2.4 formatieren können.

;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\"
Definieren Sie das Zugriffsprotokollformat:
  1. Konfigurieren Sie Apache für das Zugriffsprotokollformat (httpd.conf):
     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. Definieren Sie die CLF-Parser-Konfiguration:
;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\"
Der CLF-Parser gibt Folgendes zurück:
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

Dieses Beispiel zeigt, wie Sie für Windows die Fehlerprotokollkonfiguration für Apache v2.4 formatieren können.

;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
Hinweis: Die bereitgestellten Namen entsprechen dem kombinierten Protokollformat. Apache-Fehlerprotokolle werden auch anhand der obigen Formatierungsschlüssel anstelle des Apache-Fehlerprotokollformats beschrieben.
Definieren Sie das Fehlerprotokollformat:
  1. Konfigurieren Sie Apache für das Fehlerprotokollformat (httpd.conf):
     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. Definieren Sie die CLF-Parser-Konfiguration:
;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

Protokolleintrag:

[Wed May 13 14:37:17.042371 2015] [mpm_winnt:notice] [pid 4488:tid 272] AH00354: Child: Starting 150 worker threads.
Der CLF-Parser gibt die folgenden Felder für den Protokolleintrag zurück (bei Verwendung eines Parsers in einer +0400-Zeitzone):
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.

Protokolleintrag:

[Wed May 13 14:37:27.042371 2015] [mpm_winnt:notice] [pid 5288] AH00418: Parent: Created child process 3480
Der CLF-Parser gibt die folgenden Felder für den Protokolleintrag zurück (bei Verwendung eines Parsers in einer +0400-Zeitzone):
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