Vous pouvez configurer l'analyseur de paire clé-valeur (KVP) pour les collecteurs FileLog et WinLog.

Analyseur de paire clé-valeur

L'analyseur kvp recherche toutes les correspondances key=value dans un texte de message journal arbitraire et les extrait. L'exemple suivant illustre le format de l'analyseur kvp.
[parser|kvp_parser]
base_parser=kvp
fields=*

Par exemple, le journal clé-valeur peut être au format suivant : scope=local; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0;

Avec l'analyseur kvp, vous devez spécifier les champs dont les valeurs doivent être extraites. Par exemple, si la définition fields=name,lastname,country existe dans la configuration, seules les valeurs comportant les clés spécifiées sont analysées et envoyées vers le serveur.

La clé et la valeur peuvent éventuellement être placées entre guillemets (" ") pour définir un espace ou d'autres caractères spéciaux.

Lorsque des guillemets doubles sont utilisés pour la clé ou la valeur, le caractère barre oblique inverse « \ » peut être utilisé comme caractère d'échappement. Tout caractère suivant le caractère barre oblique inverse est défini littéralement, notamment le caractère guillemet double ou le caractère barre oblique inverse. Par exemple : « \\ »

Notez les points suivants :

  • Si la paire clé-valeur n'est pas suivie d'un signe égal et que l'extrait de code VALUE n'est pas fourni, l'option est ignorée et traitée comme un texte libre.
  • La clé ne peut pas être vide, mais la valeur peut l'être.
  • Si un signe égal n'est suivi d'aucune valeur, il est ignoré et traité comme un texte libre.
  • Une valeur peut être une chaîne de caractères encadrés de guillemets ou elle peut être vide. Pour l'échappement de caractères spéciaux faisant partie de la valeur, utilisez une barre oblique inverse.

Options de l'analyseur KVP

Les informations relatives à la structure de l'analyseur kvp sont les suivantes :

Option Description
fields

Informations à extraire décrites comme unités de données. Par exemple, fields=name,lastname,country.

Si des noms de champs spécifiques sont définis par l'option fields, chaque caractère non valide d'un nom de champ extrait d'un journal est remplacé par un trait de soulignement. Par exemple, si l'option fields cherche les champs « x-A » et « a*(X+Y) », l'analyseur extrait ces champs des journaux et les renomme respectivement « x_a » et « a__x_y ». Cela permet d'extraire des champs dont le nom contient tout type de caractère.

Si l'option fields est définie sur « * », l'analyseur kvp reconnaît automatiquement les paires champ/valeur et il recherche les champs comportant uniquement des caractères « alphanumériques + trait de soulignement » (pris en charge par le serveur LI). Tous les autres caractères non valides sont rejetés au lieu d'être convertis en traits de soulignement. Cela empêche l'analyseur d'extraire des informations inutiles dans les champs statiques.

delimiter

Cette option est facultative.

Les délimiteurs par défaut sont les caractères espace, tabulation, nouvelle ligne, virgule et point-virgule.

Si aucun délimiteur n'est spécifié dans la configuration, l'analyseur kvp utilise les délimiteurs par défaut.

Pour modifier les délimiteurs par défaut, vous devez définir des délimiteurs spécifiques entre guillemets doubles. Par exemple : delimiter = "#^|". Selon cette définition, chaque caractère encadré de guillemets sert de délimiteur. Pour l'analyseur kvp, tout caractère peut être utilisé comme délimiteur. Vous pouvez inclure les délimiteurs par défaut et d'autres délimiteurs dans la définition.

Par exemple, l'instruction delimiter = "#^|\t\r\n\s" inclut les caractères tabulation, nouvelle ligne, ainsi que l'espace comme délimiteurs. Si ces caractères sont utilisés, ils doivent être précédés du caractère d'échappement. Par exemple, pour définir le caractère espace comme délimiteur, entrez le caractère d'échappement « \ » avant le caractère espace lors de sa définition comme délimiteur, par exemple, delimiter="\s".

field_decoder

Les analyseurs imbriqués spécifiés en tant que chaîne JSON, dans laquelle les clés sont les noms des champs auxquels appliquer l'analyseur imbriqué et la valeur est le nom de l'analyseur à utiliser pour ce champ.

Chaque analyseur imbriqué est appliqué au champ approprié, tel qu'il est décodé par l'analyseur de base.

Les décodeurs de champs sont utiles lorsque la valeur d'une paire clé-valeur est complexe, telle qu'un horodatage ou une liste séparée par des virgules.

debug =

Cette option est facultative. La valeur debug = peut être yes ou no. La valeur par défaut du débogage est debug=no pour les analyseurs.

Lorsque cette option est définie sur yes, vous pouvez afficher les journaux détaillés de l'ingestion de l'analyseur dans liagent_<date>.log.

Options de valeurs de clés supplémentaires

Clé Définition
KVP_MESSAGE = *(MESSAGE_ENTRY [WSPR])

Liste d'entrées de messages séparées par un espace facultatif

MESSAGE_ENTRY = KVP / FREE_TEXT

Une entrée est une paire clé-valeur ou simplement du texte libre

KVP = KEY ["=" VALUE]

Paire clé-valeur. Si KEY n'est pas suivi d'un signe égal et de VALUE, il est ignoré comme un texte libre.

KEY = BARE_KEY / QUOTED_KEY
FREE_TEXT = "="

Un signe égal isolé est considéré comme du texte libre et ignoré.

BARE_KEY = *1BARE_KEY_CHAR

Au moins un caractère

BARE_KEY_CHAR = %0x00-08 / %0x10-19 / %0x21-3C / %3E-%FF

Tout caractère à l'exclusion du signe égal, du caractère espace ou du caractère tabulation

QUOTED_KEY = 0x22 *1(QUOTED_STRING_CHAR / "\" CHAR) 0x22

Au moins un caractère placé entre guillemets doubles. La barre oblique inverse est utilisée comme caractère d'échappement.

QUOTED_STRING_CHAR = %0x00-21 / %0x23-FF

Tout caractère à l'exclusion du guillemet double

VALUE = BARE_VALUE / QUOTED_VALUE
BARE_VALUE = *BARE_VALUE_CHAR

Aucun caractère ou plus

BARE_VALUE_CHAR = %0x00-08 / %0x10-19 / %0x21-FF

Tout caractère à l'exclusion du caractère espace ou du caractère tabulation

QUOTED_VALUE = 0x22 *(QUOTED_STRING_CHAR / "\" CHAR) 0x22

Chaîne de caractères placés entre guillemets doubles. Elle peut être vide. La barre oblique inverse est utilisée comme caractère d'échappement.

Exemples de configurations d'analyseur KVP

Si nécessaire, vous pouvez utiliser fields=* pour analyser tous les champs.

[parser|simple_kvp]
base_parser =kvp
fields=*

Cet exemple montre comment spécifier le décodeur de champs.

[parser|mykvp]
debug=no
base_parser=kvp
delimiter="#^|"
fields=*
;OR fields=scope,abstract,lazyInit,autowireMode,dependencyCheck
field_decoder={"field1":"field1_parser1"}

[parser|field1_parser1]
base_parser=clf
format=[%{value1}i]]
field_decoder={"value1":"field_parser2"}

Pour analyser le journal KVP suivant :

Configuring transport... proto = cfapi server_hostname = LOCALHOST ssl = no port = 9000 reconnect = 30
Définissez la configuration de l'analyseur KVP :
[parser|kvp_log_parser]
base_parser=kvp
fields=*
L'analyseur KVP renvoie les champs suivants :
proto=cfapi
server_hostname=LOCALHOST
ssl=no
port=9000
reconnect=30
Note : Dans les journaux d'entrée, lorsqu'un opérateur d'attribution ( =) est précédé d'une clé générée de manière aléatoire, il est recommandé de ne pas utiliser l'analyseur KVP avec l'option *, car il génère de nombreux champs aléatoires, ce qui peut entraîner des problèmes de performances de l'interface utilisateur et des requêtes. Vous pouvez utiliser plutôt l'analyseur en spécifiant les champs qui doivent être analysés.

Exemples d'analyseurs KVP simple et complexe

Exemple d'analyseur KVP simple

[filelog|MyLog]
directory=C:\<folder_name>\Parser_logs
include=*.log
parser=my_KVP_parser

[parser|my_KVP_parser]
base_parser=kvp
fields=*

Exemple d'analyseur KVP complexe

[filelog|MyLog]
directory=C:\<folder_name>\Parser_logs
include=*.log
parser=my_KVP_parser

[parser|my_KVP_parser]
base_parser=kvp
fields=*
field_decoder={"field1":" field1_parser1"}

[parser| field1_parser1]
base_parser=clf
format=[%{value1}i]]
field_decoder={"value1":" field1_parser2"}