Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pré-traiter les données avec des agents
L'agent peut prétraiter les enregistrements analysés à partir des fichiers surveillés avant de les envoyer à votre flux Firehose. Vous pouvez activer cette fonctionnalité en ajoutant le paramètre de configuration dataProcessingOptions
à votre flux de fichiers. Une ou plusieurs options de traitement peuvent être ajoutées. Elles sont exécutées dans l'ordre spécifié.
L'agent prend en charge les options de traitement suivantes. Comme l'agent est open source, vous pouvez continuer à développer et étendre ses options de traitement. Vous pouvez télécharger l'agent depuis Kinesis Agent
Options de traitement
SINGLELINE
-
Convertit un enregistrement de plusieurs lignes en un enregistrement d'une seule ligne en supprimant les caractères de saut de ligne, les espaces de début et les espaces de fin.
{ "optionName": "SINGLELINE" }
CSVTOJSON
-
Convertit un enregistrement du format séparé par délimiteur au format JSON.
{ "optionName": "CSVTOJSON", "customFieldNames": [ "
field1
", "field2
",...
], "delimiter": "yourdelimiter
" }customFieldNames
-
[Obligatoire] Noms de domaine utilisés comme clés dans chaque paire clé-valeur JSON. Par exemple, si vous spécifiez
["f1", "f2"]
, l'enregistrement « v1, v2 » est converti en{"f1":"v1","f2":"v2"}
. delimiter
-
Chaîne utilisée comme délimiteur dans l'enregistrement. La valeur par défaut est une virgule (,).
LOGTOJSON
-
Convertit un enregistrement du format de journal au format JSON. Les formats de journal pris en charge sont Apache Common Log, Apache Combined Log, Apache Error Log et RFC3164 Syslog.
{ "optionName": "LOGTOJSON", "logFormat": "
logformat
", "matchPattern": "yourregexpattern
", "customFieldNames": [ "field1
", "field2
",…
] }logFormat
-
[Obligatoire] Format d'entrée de journal. Les valeurs admises sont les suivantes :
-
COMMONAPACHELOG
: le format de journal courant d'Apache. Chaque entrée de journal a le schéma suivant par défaut : «%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}
». -
COMBINEDAPACHELOG
: le format de journal combiné d'Apache. Chaque entrée de journal a le schéma suivant par défaut : «%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}
». -
APACHEERRORLOG
: le format de journal d'erreurs d'Apache. Chaque entrée de journal a le schéma suivant par défaut : «[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}
». -
SYSLOG
— Le format RFC3164 Syslog. Chaque entrée de journal a le schéma suivant par défaut : «%{timestamp} %{hostname} %{program}[%{processid}]: %{message}
».
-
matchPattern
-
Remplace le modèle par défaut pour le format de journal spécifié. Utilisez ce paramètre pour extraire les valeurs des entrées du journal si elles utilisent un format personnalisé. Si vous spécifiez
matchPattern
, vous devez également spécifiercustomFieldNames
. customFieldNames
-
Noms de champ personnalisés utilisés comme clés dans chaque paire clé-valeur JSON. Vous pouvez utiliser ce paramètre pour définir les noms de champ pour les valeurs extraites de
matchPattern
, ou remplacer les noms de champ par défaut des formats de journalisation prédéfinis.
Exemple : Configuration LOGTOJSON
Voici un exemple de configuration LOGTOJSON
pour une entrée au format Journal courant Apache convertie au format JSON :
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }
Avant la conversion :
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
Après la conversion :
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
Exemple : Configuration LOGTOJSON avec champs personnalisés
Voici un autre exemple de configuration LOGTOJSON
:
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }
Avec ce paramètre de configuration, la même entrée au format Journal courant Apache de journal issue de l'exemple précédent est convertie au format JSON comme suit :
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
Exemple : Conversion d'une entrée au format Journal courant Apache
La configuration de flux suivante convertit une entrée au format Journal courant Apache en un enregistrement d'une seule ligne au format JSON :
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
Exemple : Conversion des enregistrements de plusieurs lignes
La configuration de flux suivante analyse les enregistrements de plusieurs lignes dont la première ligne commence par « [SEQUENCE=
». Chaque enregistrement est d'abord converti en un enregistrement d'une seule ligne. Les valeurs sont ensuite extraites de l'enregistrement sur la base d'un séparateur tabulation. Les valeurs extraites sont mappées à des valeurs customFieldNames
spécifiées pour former un enregistrement d'une seule ligne au format JSON.
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "multiLineStartPattern": "\\[SEQUENCE=
", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1
", "field2
", "field3
" ], "delimiter": "\\t
" } ] } ] }
Exemple : Configuration LOGTOJSON avec modèle de correspondance
Voici un exemple de configuration LOGTOJSON
pour une entrée au format Journal courant Apache convertie au format JSON, avec le dernier champ (octets) omis :
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }
Avant la conversion :
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
Après la conversion :
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}