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.
{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. Zu den unterstützten Formaten gehören „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. Zu den unterstützten Formaten gehören „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“, der den endgültigen Status der Anfrage generiert. | ||
'%t': |
„timestamp“, der bei der Erfassung als Ereigniszeitstempel dient und den Zeitstempel-Parser einbindet. 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
Die folgenden Format-Token werden ebenfalls für die Formatspezifizierung des Zeitstempels des CLF-Parsers unterstützt:
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 |
||
'%T': |
"request_time_sec" | ||
'%u': |
"remote_auth_user" | ||
'%U': |
"requested_url" | ||
'%v': |
"server_name" | ||
'%V': |
"self_referential_server_name" | ||
'%X': |
„connection_status“, der vom Namen der im Format angegebenen Variable abhängig ist | ||
'%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 VMware Aria Operations for Logs-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\"
- 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
- 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\"
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
- 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
- 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.
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
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