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 especificarcustomFieldNames
. 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"}