Preprocesar los datos con los agentes - Amazon Data Firehose

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Preprocesar los datos con los agentes

El agente puede preprocesar los registros analizados de los archivos monitorizados antes de enviarlos al flujo de Firehose. Para habilitar esta característica, añada la opción de configuración dataProcessingOptions al flujo de archivos. Puede añadir una o más opciones de procesamiento que se ejecutarán en el orden especificado.

El agente es compatible con las siguientes opciones de procesamiento. Dado que el agente es de código abierto, el usuario puede desarrollar y ampliar sus opciones de procesamiento. Puede descargar el agente desde Kinesis Agent.

Opciones de procesamiento
SINGLELINE

Elimina los caracteres de nueva línea y los espacios situados al principio y al final de las líneas para convertir un registro multilínea en un registro de una sola línea.

{ "optionName": "SINGLELINE" }
CSVTOJSON

Convierte un registro con un formato separado mediante delimitadores al formato JSON.

{ "optionName": "CSVTOJSON", "customFieldNames": [ "field1", "field2", ... ], "delimiter": "yourdelimiter" }
customFieldNames

[Obligatorio] Los nombres de campos utilizados como claves en cada par de valores de clave JSON. Por ejemplo, si especifica ["f1", "f2"], el registro "v1, v2" se convierte en {"f1":"v1","f2":"v2"}.

delimiter

La cadena utilizada como delimitador en el registro. El valor predeterminado es una coma (,).

LOGTOJSON

Convierte un registro con un formato de registro en un registro con formato JSON. Los formatos de registro admitidos son Apache Common Log, Apache Combined Log, Apache Error Log y RFC3164 Syslog.

{ "optionName": "LOGTOJSON", "logFormat": "logformat", "matchPattern": "yourregexpattern", "customFieldNames": [ "field1", "field2", ] }
logFormat

[Obligatorio] El formato de entrada del registro. Los valores posibles son los siguientes:

  • COMMONAPACHELOG: formato común de registro de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}".

  • COMBINEDAPACHELOG: formato combinado de registro de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}".

  • APACHEERRORLOG: formato de registro de errores de Apache. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}".

  • SYSLOG: formato RFC3164 de Syslog. Cada entrada de registro sigue el siguiente patrón de forma predeterminada: "%{timestamp} %{hostname} %{program}[%{processid}]: %{message}".

matchPattern

Sobrescribe el patrón predeterminado del formato de log especificado. Utilice esta configuración para extraer valores de entradas de log si utilizan un formato personalizado. Si especifica matchPattern, también debe especificar customFieldNames.

customFieldNames

Los nombres de campos utilizados como claves en cada par de valores de clave JSON. Utilice esta opción para definir nombres de campos para valores extraídos de matchPattern, o sobrescriba los nombres de campos de los formatos de logs predefinidos.

ejemplo : Configuración LOGTOJSON

Este es un ejemplo de configuración LOGTOJSON de una entrada de registro en Formato común de registro de Apache convertida a formato JSON:

{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }

Antes de la conversión:

64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291

Después de la conversión:

{"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"}
ejemplo : Configuración LOGTOJSON con campos personalizados

Este es otro ejemplo de configuración LOGTOJSON:

{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }

Con esta configuración, la misma entrada de registro con Formato común de registro de Apache del ejemplo anterior se convierte a formato JSON de la siguiente manera:

{"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"}
ejemplo : Convertir una entrada de registro con Formato común de registro de Apache

La siguiente configuración de secuencia convierte la entrada de registro común de Apache en un registro de una línea con formato JSON:

{ "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "my-delivery-stream", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
ejemplo : Convertir registros multilínea

La siguiente configuración de flujo analiza aquellos registros multilínea cuya primera línea comience por "[SEQUENCE=". Primero, cada registro se convierte en un registro de una línea. Después, se extraen los valores del registro basándose en tabulaciones delimitadoras. Finalmente, los valores extraídos se asignan a valores customFieldNames específicos para formar un registro de una línea en formato JSON.

{ "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "my-delivery-stream", "multiLineStartPattern": "\\[SEQUENCE=", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1", "field2", "field3" ], "delimiter": "\\t" } ] } ] }
ejemplo : Configuración LOGTOJSON con patrón de coincidencia

Este es un ejemplo de una configuración de entrada de registro con Formato común de registro de Apache LOGTOJSON convertida a formato JSON con el último campo (bytes) omitido:

{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }

Antes de la conversión:

123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200

Después de la conversión:

{"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"}