Procese previamente los datos con los agentes - Amazon Data Firehose

La entrega de transmisiones de Amazon Data Firehose a Apache Iceberg Tables en Amazon S3 está en versión preliminar y está sujeta a cambios.

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.

Procese previamente los datos con los agentes

El agente puede preprocesar los registros analizados de los archivos monitorizados antes de enviarlos a la transmisión 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 de un formato separado por delimitadores a un formato. JSON

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

[Obligatorio] Los nombres de los campos utilizados como claves en cada par de valores JSON clave. 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 de un formato de registro a un JSON formato. 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— El formato RFC3164 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 los campos personalizados utilizados como claves en cada par de valores JSON clave. 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 : LOGTOJSON Configuración

A continuación, se muestra un ejemplo de LOGTOJSON configuración para una entrada de Apache Common Log convertida al JSON formato:

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

Este es otro ejemplo de configuración LOGTOJSON:

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

Con este ajuste de configuración, la misma entrada del registro común de Apache del ejemplo anterior se convierte al JSON formato siguiente:

{"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 flujo convierte una entrada del registro común de Apache en un JSON formato de registro de una sola línea:

{ "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. Los valores extraídos se asignan a customFieldNames valores específicos para formar un registro de una sola 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 : LOGTOJSON Configuración con patrón de coincidencia

Este es un ejemplo de LOGTOJSON configuración para una entrada del registro común de Apache convertida al JSON formato, omitiendo el último campo (bytes):

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