Vous pouvez configurer l'analyseur Apache Common Log Format (CLF) pour les collecteurs FileLog et WinLog.

Analyseur Common Log Format (Apache)

L'analyseur Common Log Format (CLF) par défaut définit l'ordre et les noms de champs suivants :

host ident authuser datetime request statuscode bytes

Nom de l'analyseur :clf

L'option spécifique à l'analyseur CLF est format.

Option Format

L'option format spécifie le format auquel les journaux Apache sont générés. Cette option n'est pas obligatoire.

Si vous ne spécifiez aucun format, le format commun par défaut suivant est utilisé.

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

La chaîne de format de l'analyseur CLF n'accepte pas les expressions regex. Par exemple, spécifiez un espace au lieu de l'expression \s+.

Pour analyser d'autres formats de journaux, spécifiez-les dans la configuration de l'agent. Les champs analysés s'affichent côté serveur sous les noms suivants :

Note : Si une variable est requise et que la variable {VARNAME} est omise de la configuration, les champs sont ignorés.
Champs Valeur
'%a': « remote_ip »
'%A': « local_ip »
'%B', '%b': « response_size »
'%C': Dépend du nom de variable spécifié dans le format
'%c': Dépend du nom de variable spécifié dans le format
'%D': « request_time_mcs »
'%E': « error_status »
'%e': Dépend du nom de variable spécifié dans le format
'%F', '%f': « file_name »
'%h': « remote_host »
'%H': « request_protocol »
'%i': Dépend du nom de variable spécifié dans le format
'%k': « keepalive_request_count »
'%l': « remote_log_name »
'%L' « request_log_id »
'%M': « log_message » (l'analyseur cesse d'analyser le journal d'entrée lorsque ce spécificateur est atteint)
'%m': « request_method »
'%n': dépend du nom de variable spécifié dans le format
'%o': dépend du nom de variable spécifié dans le format
'%p': « server_port »

Des formats supplémentaires peuvent être utilisés avec ce spécificateur : %{format}p. Les formats pris en charge sont « canonical », « local » ou « remote ». Lorsque le format « canonical » est utilisé, le nom de champ reste « server_port ». Lorsque le format « local » est utilisé, le nom de champ est « local_server_port » et, lorsque le format « remote » est utilisé, le nom de champ est « remote_server_port ».

'%P': « process_id »

Des formats supplémentaires peuvent être utilisés avec ce spécificateur : %{format}P. Les formats pris en charge sont « pid », « tid » et « hextid ». Si « pid » est utilisé comme format, le nom de champ est « process_id ». Les formats « tid » et « hextid » génèrent des champs avec le nom « thread_id »

'%q': « query_string »
'%r': « request »
'%R': « response_handler »
'%s': « status_code », qui génère l'état final de la demande.
'%t':

« timestamp », qui fonctionne en tant qu'horodatage d'événement lors de l'ingestion et engage l'analyseur horodatage. Pour remplacer la détection automatique d'horodatage, le format de date et d'heure peut être spécifié entre accolades : %{%Y-%m-%d %H:%M:%S}t, reportez-vous à la section Analyseur Timestamp pour plus de détails.

Le format d'horodatage de l'analyseur CLF peut commencer par le préfixe "begin:" ou "end:". Si le format commence par begin: (par défaut), l'heure est prise au début du traitement de la demande. S'il commence par end:, l'heure est prise au moment de l'écriture de l'entrée de journal, vers la fin du traitement de la demande. Par exemple, les formats tels que les suivants sont pris en charge par l'analyseur CLF : %h %l %u [%{begin:%d/%b/%Y %T}t.%{msec_frac}t] \"%r\" %>s %b

Les jetons de format suivants sont également pris en charge pour le spécificateur du format d'horodatage de l'analyseur CLF :
sec
nombre de secondes depuis Epoch. Équivalent au spécificateur %s de l'analyseur Horodatage.
msec
nombre de millisecondes depuis Epoch
usec
nombre de microsecondes depuis Epoch
msec_frac
fraction de milliseconde (équivalent au spécificateur %f de l'analyseur Horodatage)
musec
fraction de microseconde (équivalent au spécificateur %f de l'analyseur Horodatage)
Pour analyser des journaux dans lesquels l'horodatage est représenté avec des jetons de format, les formats suivants peuvent être utilisés dans la configuration :
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

Ces jetons ne peuvent pas être combinés entre eux ou avec le formatage de l'analyseur Horodatage dans la même chaîne de format. Vous pouvez utiliser plusieurs jetons %{format}t à la place. Par exemple, pour utiliser Horodatage qui inclut des millisecondes, à l'exception de l'utilisation du spécificateur %f de l'analyseur Horodatage, l'horodatage combiné suivant peut être utilisé : %{%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 », qui dépend du nom de la variable spécifiée dans le format
'%x': Dépend du nom de variable spécifié dans le format
'%I': « received_bytes »
'%O': « sent_bytes »
'%S': « transferred_size »

Par exemple, pour analyser les journaux collectés à partir des sources winlog ou filelog à l'aide de l'analyseur CLF, spécifiez la configuration suivante :

[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

Selon cette configuration, les journaux collectés à partir de la source clflogs, par exemple à partir du répertoire directory=D:\Logs, sont analysés par myclf. L'analyseur myclf traite uniquement les journaux générés au format décrit dans la configuration.

La valeur par défaut du débogage est debug=no pour les analyseurs.

Analyse des journaux générés à l'aide du format CLF

Pour analyser les journaux générés à l'aide du format CLF, définissez le format correspondant dans la configuration. Par exemple,

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

Les champs remplis qui utilisent les spécificateurs %{Referer}i et %{User_Agent}i s'affichent sur le serveur vRealize Log Insight sous les noms referer et user_agent, respectivement.

Intégration de l'analyseur timestamp à l'analyseur CLF

Vous pouvez analyser des journaux Apache à un format d'heure personnalisée.

Accédez aux journaux dont le format d'heure personnalisée est le suivant :

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

Si aucune heure personnalisée n'est spécifiée, l'analyseur CLF tente de déduire automatiquement le format d'heure en exécutant l'analyseur timestamp automatique. Dans le cas contraire, le format d'heure personnalisée est utilisé.

Les formats d'heures personnalisées pris en charge pour les journaux d'erreurs sont les suivants :

Format d'heure personnalisée Description Format de configuration
%{u}t Heure actuelle microsecondes incluses format=[%{u}t] [%l] [pid %P] [client %a] %M
%{cu}t Heure actuelle au format compact ISO 8601 microsecondes incluses format=[%{cu}t] [%l] [pid %P] [client %a] %M

Pour obtenir la liste complète des spécificateurs d'horodatage pris en charge, consultez la rubrique analyseur timestamp.

Configuration des journaux d'accès Apache par défaut pour Windows

Cet exemple montre comment formater des configurations de journaux d'accès Apache v2.4 pour Windows.

;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\"
Définissez le format des journaux d'accès :
  1. Configurez Apache pour le format des journaux d'accès (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. Définissez la configuration de l'analyseur 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\"
L'analyseur CLF renvoie les informations suivantes :
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

Cet exemple montre comment formater des configurations de journaux d'erreurs Apache v2.4 pour Windows.

;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
Note : Les noms fournis correspondent au format de journal combiné. Les journaux d'erreurs d'Apache sont également décrits à l'aide des clés de formatage précédentes, et non avec le format du journal d'erreurs d'Apache.
Définissez le format des journaux d'erreurs :
  1. Configurez Apache pour le format des journaux d'erreurs (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. Définissez la configuration de l'analyseur 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

Entrée journal :

[Wed May 13 14:37:17.042371 2015] [mpm_winnt:notice] [pid 4488:tid 272] AH00354: Child: Starting 150 worker threads.
L'analyseur CLF renvoie les champs suivants pour l'entrée journal (si un analyseur est utilisé dans un fuseau horaire +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.

Entrée journal :

[Wed May 13 14:37:27.042371 2015] [mpm_winnt:notice] [pid 5288] AH00418: Parent: Created child process 3480
L'analyseur CLF renvoie les champs suivants pour l'entrée journal (si un analyseur est utilisé dans un fuseau horaire +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