Vous pouvez configurer des options communes à tous les analyseurs qui produisent des champs nommés.

Mots réservés pour les noms de champs

Les champs de noms sont limités. Les noms suivants sont réservés et ne peuvent pas être utilisés comme noms de champs.

  • event_type
  • hostname
  • source
  • text

Options communes aux analyseurs

Les options dans le tableau suivant peuvent être utilisées avec tous les analyseurs pris en charge.

Option Description
base_parser

Le nom de l'analyseur de base étendu par cet analyseur personnalisé. Il peut s'agir d'un nom d'analyseur intégré ou d'un autre nom d'analyseur de client. Cette clé de configuration est obligatoire.

field_decoder
Analyseurs imbriqués spécifiés en tant que chaînes JSON. Les clés représentent les noms des champs auxquels vous devez appliquer l'analyseur imbriqué et la valeur correspond au nom de l'analyseur à utiliser pour ce champ. Chaque analyseur imbriqué est appliqué au champ approprié décodé par l'analyseur de base. Les décodeurs de champ sont utiles lorsque la valeur d'un champ est une valeur complexe, par exemple un horodatage. L'option field_decoder prend également en charge des objets JSON plus complexes en tant qu'arguments qui vous permettent d'utiliser des conditions pour des valeurs de champ spécifiques qui sont vérifiées avant l'application de l'analyseur imbriqué.
Note : Pour plus d'informations sur l'utilisation et les configurations conditionnelles, reportez-vous à la section Configurations conditionnelles de l'option field_decoder ci-dessous.
field_rename

Cette option renomme les champs extraits. Utilisez une chaîne JSON dans laquelle les clés sont les noms d'origine des champs, et les valeurs sont les nouveaux noms des champs. L'option field_decoder est toujours appliquée avant field_rename. Dans le fichier INI, l'ordre de ces options est sans importance. Pour plus clarté, spécifiez d'abord l'option field_decoder.

next_parser

Le nom du prochain analyseur à exécuter. Cette option permet d'exécuter plusieurs analyseurs de façon séquentielle sur la même entrée.

Note : Les analyseurs traitent tous les analyseurs suivants définis par le mot-clé next_parser et peuvent remplacer une valeur de champ déjà extraite par un analyseur précédent.
exclude_fields

Une liste de noms de champs séparés par des points-virgules à supprimer de l'événement avant que ce dernier ne soit livré au serveur. Les noms de champs sont supprimés avant le filtrage des événements, afin que le champ que vous excluez lors de l'analyse ne puisse pas être utilisé dans la condition de filtre.

debug

Une option Oui ou Non qui permet de déboguer un analyseur donné. Lorsque le débogage est activé, l'analyseur effectue une journalisation détaillée de l'entrée qu'il a reçue, de l'opération exécutée et du résultat produit. Cette option s'applique par section, à savoir uniquement à l'analyseur défini par la section donnée.

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

Configurations conditionnelles de l'option field_decoder

Pour les journaux ayant le même format commun, mais des différences importantes liées à des valeurs de champ spécifiques, des journaux avec les gravités info et erreur par exemple, vous pouvez utiliser l'analyseur imbriqué conditionnel pour réduire l'application d'analyseurs inutiles aux champs correspondants de journaux déjà analysés.

Par exemple, à l'aide de ces journaux :
2019-03-29T11:00:54.858Z host-FQDN Hostd: error hostd[2099230] [Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user] AdapterServer caught exception: SSLExceptionE(SSL Exception: error:140000DB:SSL routines:SSL routines:short read: The connection was closed by the remote end during handshake.)
2019-03-29T11:00:55.477Z host-FQDN Hostd: info hostd[6D620B70] ['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart -- 

Vous pouvez utiliser la configuration suivante pour les analyser :

[parser|clf_parser]
base_parser=clf
format=%t %{generator_host}i %i: %{log_severity}i %i[%{thread_id}i]%M
field_decoder={"log_message" : {"log_severity" : {"error" : "error_parser", "info" : "info_parser"}}}
exclude_fields=log_message

[parser|info_parser]
base_parser=clf
format=[%{common_info}i] [%{process}i] %M
field_rename={"log_message" : "info_log_content"}

[parser|error_parser]
base_parser=clf
format=[%{common_info}i] %{exception_handler}i %i:%{exception_type}i:%i:%{error_id}i:%i:%i:%i: %M
field_rename={"log_message" : "exception_content"}

Cette configuration produit les résultats suivants :

timestamp=2019-03-29T11:00:54.858000 generator_host="host-FQDN" log_severity="error" thread_id="2099230" common_info=Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user exception_handler="AdapterServer" exception_type="SSLExceptionE(SSL Exception" error_id="140000DB" exception_content="The connection was closed by the remote end during handshake.)"

De plus, les champs suivants sont analysés pour le journal info :

timestamp=2019-03-29T11:00:55.477000 generator_host="host-FQDN" log_severity="info" thread_id="6D620B70" log_message="['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --" common_info="'commonhost' opID=5759adcc-cf" process="transportConnector" info_log_content="-- FINISH task-internal-5726666 -- -- Completed connection restart --"