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.
Procesadores que puede utilizar
Esta sección contiene información sobre cada procesador que puede usar en un transformador de registro de eventos. Los procesadores se pueden clasificar en analizadores, mutadores de cadenas, mutadores JSON y procesadores de fecha.
Procesadores configurables tipo analizador
parseJSON
El procesador ParseJSON analiza los eventos del registro JSON e inserta los pares clave-valor JSON extraídos en el destino. Si no especifica un destino, el procesador coloca el par clave-valor debajo del nodo raíz. Si parseJSON
lo utiliza como primer procesador, debe analizar todo el evento del registro utilizando el campo @message
de origen. Tras el análisis inicial de JSON, puede manipular campos específicos en los procesadores posteriores.
El @message
contenido original no se modifica, las nuevas claves se añaden al mensaje.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
origen |
Ruta al campo del evento de registro que se analizará. Utilice la notación de puntos para acceder a los campos secundarios. Por ejemplo, store.book |
No |
|
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
destination |
El campo de destino del JSON analizado |
No |
|
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
Ejemplo
Supongamos que un evento de registro ingerido tiene este aspecto:
{ "outer_key": { "inner_key": "inner_value" } }
Entonces, si tenemos este procesador ParseJSON:
[ { "parseJSON": { "destination": "new_key" } } ]
El evento de registro transformado sería el siguiente.
{ "new_key": { "outer_key": { "inner_key": "inner_value" } } }
grok
Utilice el procesador grok para analizar y estructurar datos no estructurados mediante la coincidencia de patrones. Este procesador también puede extraer campos de los mensajes de registro.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites | Notas |
---|---|---|---|---|---|
origen |
Ruta del campo al que se va a aplicar la coincidencia de Grok |
No |
|
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
match |
El patrón de grok que coincide con el evento de registro |
Sí |
Longitud máxima: 512 Patrones de corte máximos: 20 Algunos tipos de patrones grok tienen límites de uso individuales. Se puede usar cualquier combinación de los siguientes patrones hasta cinco veces: {URI, URIPARAM, URIPATHPARAM, SPACE, DATA, GREEDYDATA, GREEDYDATA_MULTILINE} Los patrones grok no admiten conversiones de tipos. Para los patrones de formato de registro comunes (APACHE_ACCESS_LOG, NGINX_ACCESS_LOG SYSLOG5424), solo se admite incluir los patrones DATA, GREEDYDATA o GREEDYDATA_MULTILINE después del patrón de registro común. |
Estructura de un patrón Grok
Esta es la estructura del patrón grok compatible:
%{PATTERN_NAME:FIELD_NAME}
-
PATTERN_NAME: hace referencia a una expresión regular predefinida para hacer coincidir un tipo específico de datos. Solo se admiten los patrones grok predefinidos de la lista de patrones grok compatibles. No se permite crear patrones personalizados.
-
FIELD_NAME: asigna un nombre al valor extraído.
FIELD_NAME
es opcional, pero si no especifica este valor, los datos extraídos se eliminarán del evento de registro transformado. SiFIELD_NAME
utiliza una notación punteada (p. ej., «parent.child»), se considera una ruta JSON. -
Conversión de tipos: no se admiten las conversiones de tipos explícitos. Utilice el TypeConverter procesador para convertir el tipo de datos de cualquier valor extraído por grok.
Para crear expresiones coincidentes más complejas, puede combinar varios patrones grok. Se pueden combinar hasta 20 patrones grok para que coincidan con un evento logarítmico. Por ejemplo, esta combinación de patrones se %{NUMBER:timestamp} [%{NUMBER:db}
%{IP:client_ip}:%{NUMBER:client_port}] %{GREEDYDATA:data}
puede usar para extraer campos de una entrada de registro lenta de Redis como esta:
1629860738.123456 [0 127.0.0.1:6379] "SET" "key1" "value1"
Ejemplos de grok
Ejemplo 1: Utilice grok para extraer un campo de registros no estructurados
Ejemplo de registro:
293750 server-01.internal-network.local OK "[Thread-000] token generated"
Transformador utilizado:
[ { "grok": { "match": "%{NUMBER:version} %{HOSTNAME:hostname} %{NOTSPACE:status} %{QUOTEDSTRING:logMsg}" } } ]
Salida:
{ "version": "293750", "hostname": "server-01.internal-network.local", "status": "OK", "logMsg": "[Thread-000] token generated" }
Ejemplo de registro:
23/Nov/2024:10:25:15 -0900 172.16.0.1 200
Transformador utilizado:
[ { "grok": { "match": "%{HTTPDATE:timestamp} %{IPORHOST:clientip} %{NUMBER:response_status}" } } ]
Salida:
{ "timestamp": "23/Nov/2024:10:25:15 -0900", "clientip": "172.16.0.1", "response_status": "200" }
Ejemplo 2: Utilice grok en combinación con ParseJSON para extraer campos de un evento de registro JSON
Ejemplo de registro:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1" }
Transformador utilizado:
[ { "parseJSON": {} }, { "grok": { "source": "logMsg", "match": "%{WORD:http_method} %{NOTSPACE:request} HTTP/%{NUMBER:http_version}" } } ]
Salida:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1", "http_method": "GET", "request": "/page.html", "http_version": "1.1" }
Ejemplo 3: patrón Grok con anotación punteada en FIELD_NAME
Ejemplo de registro:
192.168.1.1 GET /index.html?param=value 200 1234
Transformador utilizado:
[ { "grok": { "match": "%{IP:client.ip} %{WORD:method} %{URIPATHPARAM:request.uri} %{NUMBER:response.status} %{NUMBER:response.bytes}" } } ]
Salida:
{ "client": { "ip": "192.168.1.1" }, "method": "GET", "request": { "uri": "/index.html?param=value" }, "response": { "status": "200", "bytes": "1234" } }
Patrones de grok compatibles
En las tablas siguientes se enumeran los patrones que admite el grok
procesador.
Patrones de crecimiento generales
Patrón de grok | Descripción | Límite máximo de patrones | Ejemplo |
---|---|---|---|
NOMBRE DE USUARIO O USUARIO | Coincide con uno o más caracteres que pueden incluir letras minúsculas (a-z), letras mayúsculas (A-Z), dígitos (0-9), puntos (.), guiones bajos (_) o guiones (-) | 20 |
Entrada: Patrón: Salida: |
INT | Coincide con un signo más o menos opcional seguido de uno o más dígitos. | 20 |
Entrada: Patrón: Salida: |
BASE10 NUM | Coincide con un número entero o un número de punto flotante con signo y coma decimal opcionales | 20 |
Entrada: Patrón: Salida: |
BASE16NUM | Hace coincidir los números decimales y hexadecimales con un signo opcional (+ o -) y un prefijo 0x opcional | 20 |
Entrada: Patrón: Salida: |
PUNTO | Coincide con números enteros positivos sin ceros a la izquierda, compuestos por uno o más dígitos (del 1 al 9 seguido del 0 al 9) | 20 |
Entrada: Patrón: Salida: |
NO NEGLIGENTE | Coincide con cualquier número entero (formado por uno o más dígitos del 0 al 9), incluido el cero y los números con ceros a la izquierda. | 20 |
Entrada: Patrón: Salida: |
PALABRA | Coincide con palabras completas compuestas por uno o más caracteres verbales (\ w), incluidas letras, dígitos y guiones bajos | 20 |
Entrada: Patrón: Salida: |
NO ESPACIO | Coincide con uno o más caracteres que no son espacios en blanco. | 5 |
Entrada: Patrón: Salida: |
SPACE | Coincide con cero o más caracteres de espacio en blanco. | 5 |
Entrada: Patrón: Salida: |
DATA | Coincide con cualquier carácter (excepto la línea nueva) cero o más veces, no es codicioso. | 5 |
Entrada: Patrón: Salida: |
DATOS CODICIOSOS | Coincide con cualquier carácter (excepto la línea nueva) cero o más veces, es codicioso. | 5 |
Entrada: Patrón: Salida: |
GREEDYDATA_MULTILINE | Coincide con cualquier carácter (incluida la línea nueva) cero o más veces, es codicioso. | 1 |
Input:
Patrón: Salida: |
CADENA ENTRECOMILLADA | Hace coincidir las cadenas entre comillas (comillas simples o dobles) con caracteres de escape. | 20 |
Entrada: Patrón: Salida: |
UUID | Coincide con un formato UUID estándar: 8 caracteres hexadecimales, seguidos de tres grupos de 4 caracteres hexadecimales y termina con 12 caracteres hexadecimales, todos separados por guiones. | 20 |
Entrada: Patrón: Salida: |
URNA | Coincide con la sintaxis URN (nombre uniforme de recurso). | 20 |
Entrada: Patrón: Salida: |
AWS patrones de grok
Patrón | Descripción | Límite máximo de patrones | Ejemplo |
---|---|---|---|
ARN |
Hace coincidir los nombres de los recursos de AWS Amazon (ARNs) y captura la partición ( |
5 |
Entrada: Patrón: Salida: |
Patrones de ruptura de redes
Patrón Grok | Descripción | Límite máximo de patrones | Ejemplo |
---|---|---|---|
CISCOMAC | Coincide con una dirección MAC en formato hexadecimal 4-4-4. | 20 |
Entrada: Patrón: Salida: |
WINDOWS/MAC | Coincide con una dirección MAC en formato hexadecimal con guiones | 20 |
Entrada: Patrón: Salida: |
COMMONMAC | Hace coincidir una dirección MAC en formato hexadecimal con dos puntos. | 20 |
Entrada: Patrón: Salida: |
MAC | Coincide con uno de los patrones grok de CISCOMAC, WINDOWSMAC o COMMONMAC | 20 |
Entrada: Patrón: Salida: |
IPV6 | Coincide con IPv6 las direcciones, incluidos los formularios comprimidos y las direcciones IPv4 mapeadas IPv6 . | 5 |
Entrada: Patrón: Salida: |
IPV4 | Coincide con una IPv4 dirección. | 20 |
Entrada: Patrón: Salida: |
IP | Coincide con IPv6 las direcciones admitidas por% {IPv6} o con IPv4 las direcciones admitidas por% {IPv4} | 5 |
Entrada: Patrón: Salida: |
HOSTNAME o HOST | Coincide con los nombres de dominio, incluidos los subdominios | 5 |
Entrada: Patrón: Salida: |
IP O HOST | Coincide con un nombre de host o una dirección IP | 5 |
Entrada: Patrón: Salida: |
HOSTPORT | Coincide con una dirección IP o un nombre de host, tal como lo admite el patrón% {IPORHOST} seguido de dos puntos y un número de puerto, y captura el puerto como «PORT» en el resultado. | 5 |
Entrada: Patrón: Salida: |
URIHOST | Coincide con una dirección IP o un nombre de host, tal como lo admite el patrón% {IPORHOST}, seguido opcionalmente de dos puntos y un número de puerto, capturando el puerto como «puerto» si está presente. | 5 |
Entrada: Patrón: Salida: |
Patrones de rotura de rutas
Patrón Grok | Descripción | Límite máximo de patrones | Ejemplo |
---|---|---|---|
RUTA UNIX | Coincide con las rutas URL y puede incluir parámetros de consulta. | 20 |
Entrada: Patrón: Salida: |
WINPATH | Coincide con las rutas de archivos de Windows. | 5 |
Entrada: Patrón: Salida: |
PATH | Coincide con la URL o las rutas de los archivos de Windows | 5 |
Entrada: Patrón: Salida: |
TTY | Coincide con las rutas de los dispositivos Unix para terminales y pseudoterminales. | 20 |
Entrada: Patrón: Salida: |
URIPROTO | Coincide con las letras, seguidas opcionalmente por un carácter más (+) y letras adicionales o caracteres más (+) | 20 |
Entrada: Patrón: Salida: |
URIPATA | Coincide con el componente de ruta de un URI | 20 |
Entrada: Patrón: Salida: |
URIPARAM | Coincide con los parámetros de consulta URL | 5 |
Entrada: Patrón: Salida: |
URIPATHPARAM | Coincide con una ruta URI seguida, opcionalmente, de parámetros de consulta | 5 |
Entrada: Patrón: Salida: |
URI | Coincide con un URI completo | 5 |
Entrada: Patrón: Salida: |
Patrones de registro de fecha y hora
Patrón de grok | Descripción | Límite máximo de patrones | Ejemplo |
---|---|---|---|
MONTH | Hace coincidir los nombres de los meses completos o abreviados en inglés como palabras completas | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
NÚMERO DE MES | Coincide con los números de los meses del 1 al 12, con el cero inicial opcional para los meses de un solo dígito. | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
MONTHNUM2 | Coincide con números mensuales de dos dígitos del 01 al 12. | 20 |
Entrada: Patrón: Salida: |
MES/DÍA | Coincide con el día del mes del 1 al 31, con el cero inicial opcional. | 20 |
Entrada: Patrón: Salida: |
YEAR | Coincide con el año en dos o cuatro dígitos | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
DAY | Coincide con los nombres de los días completos o abreviados. | 20 |
Entrada: Patrón: Salida: |
HOUR | Coincide con la hora en formato de 24 horas con un cero (0) 0-23 a la izquierda opcional. | 20 |
Entrada: Patrón: Salida: |
MINUTE | Minutos de partidos (00-59). | 20 |
Entrada: Patrón: Salida: |
SECOND | Coincide con un número que representa los segundos (0) 0-60, seguido opcionalmente de un punto decimal o dos puntos y uno o más dígitos para las fracciones de minutos | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
TIME | Coincide con un formato de hora con horas, minutos y segundos en el formato (H) H:mm :( s) s. Los segundos incluyen los segundos intercalares (0) 0-60. | 20 |
Entrada: Patrón: Salida: |
DATE_US | Coincide con una fecha con el formato de (M) M/ (d) d/ (yy) yy o (M) M- (d) d- (yy) yy. | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
DATE_EU | Coincide con la fecha en el formato de (d) d/ (M) M/ (yy) yy, (d) d- (M) M- (yy) yy o (d) d. (M) M. (yy) yy. | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
ISO8601_TIMEZONE | Coincide con el desplazamiento UTC «Z» o el desplazamiento de zona horaria con dos puntos opcionales en el formato [+-] (H) H (:) mm. | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
ISO8601_SECOND | Coincide con un número que representa los segundos (0) 0-60, seguido opcionalmente por un punto decimal o dos puntos y uno o más dígitos para fracciones de segundo | 20 |
Entrada: Patrón: Salida: |
TIMESTAMP_ 01 ISO86 | Coincide con el formato de fecha y hora ISO86 01 (yy) yy- (M) M- (d) dT (H) H:mm :mm :( (s) s) (Z| [+-] (H) H:mm) con segundos y zona horaria opcionales. | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
DATE | Coincide con una fecha en formato estadounidense con% {DATE_US} o en formato UE con% {DATE_EU} | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
MARCA DE FECHA | Coincide con el patrón% {DATE} seguido del patrón% {TIME}, separado por un espacio o un guión. | 20 |
Entrada: Patrón: Salida: |
TZ | Coincide con las abreviaturas de zonas horarias habituales (PST, PDT, MST, MDT, CST CDT, EST, EDT, UTC). | 20 |
Entrada: Patrón: Salida: |
DATESTAMP_ RFC822 | Coincide con la fecha y la hora en el formato: Día MonthName (D) D (YY) YY (H) H:mm :( s) s Zona horaria | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
DATESTAMP_ RFC2822 | RFC2822 Coincide con el formato de fecha y hora: Día, (d) d MonthName (yy) yy (H) H:mm :( s) s Z| [+-] (H) H:mm | 20 |
Entrada: Patrón: Salida: Entrada: Patrón: Salida: |
DATESTAMP_OTHER | Coincide con la fecha y la hora en el formato: Día MonthName (d) d (H) H:mm :( s) s Zona horaria (yy) yy | 20 |
Entrada: Patrón: Salida: |
DATESTAMP_EVENTLOG | Coincide con el formato compacto de fecha y hora sin separadores: (yy) yMm (d) d (H) Hmm (s) s | 20 |
Entrada: Patrón: Salida: |
Patrones de surcos largos
Patrón Grok | Descripción | Límite máximo de patrones | Ejemplo |
---|---|---|---|
NIVEL DE REGISTRO | Coincide con los niveles de registro estándar en diferentes mayúsculas y abreviaturas, incluidas las siguientes:Alert/ALERT ,,Trace/TRACE ,Debug/DEBUG ,Notice/NOTICE ,,Info/INFO ,Warn/Warning/WARN/WARNING , Err/Error/ERR/ERROR Crit/Critical/CRIT/CRITICAL Fatal/FATAL Severe/SEVERE Emerg/Emergency/EMERG/EMERGENCY |
20 |
Entrada: Patrón: Salida: |
HTTP://DATE | Coincide con el formato de fecha y hora que se utiliza con frecuencia en los archivos de registro. Formato: (d) MonthName d/ (yy) yy :( H) H:mm :( s) s Zona horaria: coincide con los nombres de los meses en inglés completos o abreviados (ejemplo MonthName: «enero» o «enero») Zona horaria: coincide con el patrón% {INT} grok | 20 |
Entrada: Patrón: Salida: |
SYSLOGTIMESTAMP | Coincide con el formato de fecha con MonthName (d) d (H) H:mm :( s) s: Coincide con los nombres de los meses completos o abreviados en inglés (por ejemplo MonthName: «enero» o «enero») | 20 |
Entrada: Patrón: Salida: |
PROGRAMA | Coincide con el nombre de un programa compuesto por una cadena de letras, dígitos, puntos, guiones bajos, barras diagonales, signos porcentuales y guiones. | 20 |
Entrada: Patrón: Salida: |
SYSLOGPROG | Coincide con el patrón grok de PROG seguido opcionalmente de un identificador de proceso entre corchetes. | 20 |
Entrada: Patrón: Salida: |
SYSLOGHOST | Coincide con un patrón% {HOST} o% {IP} | 5 |
Entrada: Patrón: Salida: |
SERVICIO SYSLOG | Coincide con la prioridad de syslog en formato decimal. El valor debe estar entre corchetes angulares (<>). | 20 |
Entrada: Patrón: Salida: |
Patrones de caída de troncos comunes
Puede utilizar patrones grok personalizados y predefinidos para que coincidan con los formatos de registro de Apache, NGINX y Syslog Protocol (RFC 5424). Al usar estos patrones específicos, deben ser los primeros patrones de la configuración coincidente y ningún otro patrón puede precederlos. Además, solo puede seguirlos con exactamente un dato. Patrón GREEDYDATA o GREEDYDATA_MULTILINE.
Patrón de Grok | Descripción | Límite máximo de patrones |
---|---|---|
APACHE_ACCESS_LOG |
Concuerda con los registros de acceso de Apache |
1 |
NGINX_ACCESS_LOG |
Coincide con los registros de acceso de NGINX |
1 |
SYSLOG5424 |
Coincide con los registros del protocolo Syslog (RFC 5424) |
1 |
A continuación se muestran ejemplos válidos y no válidos del uso de estos patrones de formato de registro comunes.
"%{NGINX_ACCESS_LOG} %{DATA}" // Valid "%{SYSLOG5424}%{DATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{GREEDYDATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{SYSLOG5424}" // Invalid (multiple common log patterns used) "%{NGINX_ACCESS_LOG} %{NUMBER:num}" // Invalid (Only GREEDYDATA and DATA patterns are supported with common log patterns) "%{GREEDYDATA:logMsg} %{SYSLOG5424}" // Invalid (GREEDYDATA and DATA patterns are supported only after common log patterns)
Ejemplos de formatos de registro comunes
Ejemplo de registro de Apache
Ejemplo de registro:
127.0.0.1 - - [03/Aug/2023:12:34:56 +0000] "GET /page.html HTTP/1.1" 200 1234
Transformador:
[ { "grok": { "match": "%{APACHE_ACCESS_LOG}" } } ]
Salida:
{ "request": "/page.html", "http_method": "GET", "status_code": 200, "http_version": "1.1", "response_size": 1234, "remote_host": "127.0.0.1", "timestamp": "2023-08-03T12:34:56Z" }
Ejemplo de registro de NGINX
Ejemplo de registro:
192.168.1.100 - Foo [03/Aug/2023:12:34:56 +0000] "GET /account/login.html HTTP/1.1" 200 42 "https://www.amazon.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
Transformador:
[ { "grok": { "match": "%{NGINX_ACCESS_LOG}" } } ]
Salida:
{ "request": "/account/login.html", "referrer": "https://www.amazon.com/", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", "http_method": "GET", "status_code": 200, "auth_user": "Foo", "http_version": "1.1", "response_size": 42, "remote_host": "192.168.1.100", "timestamp": "2023-08-03T12:34:56Z" }
Ejemplo de registro del protocolo Syslog (RFC 5424)
Ejemplo de registro:
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource= "Application" eventID="1011"][examplePriority@32473 class="high"]
Transformador:
[ { "grok": { "match": "%{SYSLOG5424}" } } ]
Salida:
{ "pri": 165, "version": 1, "timestamp": "2003-10-11T22:14:15.003Z", "hostname": "mymachine.example.com", "app": "evntslog", "msg_id": "ID47", "structured_data": "exampleSDID@32473 iut=\"3\" eventSource= \"Application\" eventID=\"1011\"", "message": "[examplePriority@32473 class=\"high\"]" }
Analizar a OCSF
El procesador ParseToOCSF convierte los registros al formato Open
El @message
contenido original no se modifica, las nuevas claves se añaden al mensaje.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
eventSource |
El servicio o proceso que produce el registro de eventos que se convertirán con este procesador. Los valores válidos son los siguientes:
|
Sí |
- |
- |
Versión OCSF |
La versión del esquema OCSF que se utilizará para los eventos de registro transformados. Actualmente, el único valor admitido es V1.1 |
Sí |
|
- |
Ejemplo
El siguiente ejemplo transforma los registros de flujo de Amazon VPC al formato OCSF.
[ "parseToOCSF": { eventSource: "VPCFlow", version: "V1.1" } ]
csv
El procesador csv analiza los valores separados por comas (CSV) de los eventos del registro en columnas.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
origen |
Ruta al campo del evento de registro que se analizará |
No |
|
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
delimiter |
El carácter utilizado para separar cada columna del evento de registro de valores original separado por comas |
No |
|
Longitud máxima: 1 |
Citar personaje |
Carácter utilizado como calificador de texto para una sola columna de datos |
No |
|
Longitud máxima: 1 |
columns |
Lista de nombres que se utilizarán en las columnas del evento de registro transformado. |
No |
|
Número máximo de columnas CSV: 100 Longitud máxima: 128 Profundidad máxima de claves anidadas: 3 |
Ejemplo
Supongamos que parte de un evento de registro ingerido tiene este aspecto:
'Akua Mansa',28,'New York, USA'
Supongamos que utilizamos solo el procesador csv:
[ "csv": { "delimiter": ",", "quoteCharacter": ":"" } ]
El evento de registro transformado sería el siguiente.
{ "column_1": "Akua Mansa", "column_2": "28", "column_3": "New York: USA" }
parseKeyValue
Utilice el parseKeyValueprocesador para analizar un campo específico en pares clave-valor. Puede personalizar el procesador para analizar la información del campo con las siguientes opciones.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
origen |
Ruta al campo del registro del evento que se analizará |
No |
|
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
destination |
El campo de destino en el que se van a colocar los pares clave-valor extraídos |
No |
Longitud máxima: 128 |
|
Delimitador de campo |
La cadena delimitadora de campo que se utiliza entre los pares clave-valor en el registro de eventos original |
No |
|
Longitud máxima: 128 |
keyValueDelimiter |
La cadena delimitadora que se utilizará entre la clave y el valor de cada par del evento de registro transformado |
No |
|
Longitud máxima: 128 |
nonMatchValue |
Un valor para insertar en el campo de valores del resultado cuando un par clave-valor no se divide correctamente. |
No |
Longitud máxima: 128 |
|
keyPrefix |
Si desea añadir un prefijo a todas las claves transformadas, especifíquelo aquí. |
No |
Longitud máxima: 128 |
|
overwriteIfExists |
Si se debe sobrescribir el valor si la clave de destino ya existe |
No |
|
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
key1:value1!key2:value2!key3:value3!key4
Supongamos que utilizamos la siguiente configuración de procesador:
[ { "parseKeyValue": { "destination": "new_key", "fieldDelimiter": "!", "keyValueDelimiter": ":", "nonMatchValue": "defaultValue", "keyPrefix": "parsed_" } } ]
El evento de registro transformado sería el siguiente.
{ "new_key": { "parsed_key1": "value1", "parsed_key2": "value2", "parsed_key3": "value3", "parsed_key4": "defaultValue" } }
Procesadores integrados para los AWS registros vendidos
ParseWAF
Utilice este procesador para analizar los registros AWS WAF vendidos. Toma el contenido httpRequest.headers
y crea claves JSON a partir de cada nombre de encabezado, con el valor correspondiente. También hace lo mismo paralabels
. Estas transformaciones pueden facilitar mucho la consulta de AWS WAF los registros. Para obtener más información sobre el formato de AWS WAF registro, consulte Ejemplos de registro para el tráfico de ACL web.
Este procesador solo acepta @message
como entrada.
importante
Si utiliza este procesador, debe ser el primer procesador del transformador.
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [], "httpRequest": { "clientIp": "1.1.1.1", "country": "AU", "headers": [ { "name": "Host", "value": "localhost:1989" }, { "name": "User-Agent", "value": "curl/7.61.1" }, { "name": "Accept", "value": "*/*" }, { "name": "x-stm-test", "value": "10 AND 1=1" } ], "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": [{ "name": "value" }] }
La configuración del procesador es la siguiente:
[ { "parseWAF": {} } ]
El evento de registro transformado sería el siguiente.
{ "httpRequest": { "headers": { "Host": "localhost:1989", "User-Agent": "curl/7.61.1", "Accept": "*/*", "x-stm-test": "10 AND 1=1" }, "clientIp": "1.1.1.1", "country": "AU", "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": { "name": "value" }, "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [] }
ParsePostgres
Utilice este procesador para analizar los registros Amazon RDS for PostgreSQL vendidos, extraer campos y convertirlos al formato JSON. Para obtener más información sobre el formato de registro de RDS para PostgreSQL, consulte Archivos de registro de bases de datos de RDS para PostgreSQL.
Este procesador solo acepta como entrada. @message
importante
Si utiliza este procesador, debe ser el primer procesador del transformador.
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
2019-03-10 03:54:59 UTC:10.0.0.123(52834):postgres@logtestdb:[20175]:ERROR: column "wrong_column_name" does not exist at character 8
La configuración del procesador es la siguiente:
[ { "parsePostgres": {} } ]
El evento de registro transformado sería el siguiente.
{ "logTime": "2019-03-10 03:54:59 UTC", "srcIp": "10.0.0.123(52834)", "userName": "postgres", "dbName": "logtestdb", "processId": "20175", "logLevel": "ERROR" }
ParseCloudFront
Utilice este procesador para analizar los registros Amazon CloudFront vendidos, extraer campos y convertirlos al formato JSON. Los valores de los campos codificados se decodifican. Los valores enteros y dobles se tratan como tales. Para obtener más información sobre el formato de Amazon CloudFront registro, consulte Configurar y usar registros estándar (registros de acceso).
Este procesador solo acepta @message
como entrada.
importante
Si utiliza este procesador, debe ser el primer procesador del transformador.
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
2019-12-04 21:02:31 LAX1 392 192.0.2.24 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - -
La configuración del procesador es la siguiente:
[ { "parseCloudfront": {} } ]
El evento de registro transformado sería el siguiente.
{ "date": "2019-12-04", "time": "21:02:31", "x-edge-location": "LAX1", "sc-bytes": 392, "c-ip": "192.0.2.24", "cs-method": "GET", "cs(Host)": "d111111abcdef8.cloudfront.net", "cs-uri-stem": "/index.html", "sc-status": 200, "cs(Referer)": "-", "cs(User-Agent)": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "cs-uri-query": "-", "cs(Cookie)": "-", "x-edge-result-type": "Hit", "x-edge-request-id": "SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==", "x-host-header": "d111111abcdef8.cloudfront.net", "cs-protocol": "https", "cs-bytes": 23, "time-taken": 0.001, "x-forwarded-for": "-", "ssl-protocol": "TLSv1.2", "ssl-cipher": "ECDHE-RSA-AES128-GCM-SHA256", "x-edge-response-result-type": "Hit", "cs-protocol-version": "HTTP/2.0", "fle-status": "-", "fle-encrypted-fields": "-", "c-port": 11040, "time-to-first-byte": 0.001, "x-edge-detailed-result-type": "Hit", "sc-content-type": "text/html", "sc-content-len": 78, "sc-range-start": "-", "sc-range-end": "-" }
ParseRoute53
Utilice este procesador para analizar los registros Amazon Route 53 Public Data Plane vendidos, extraer campos y convertirlos a formato JSON. Los valores de los campos codificados se decodifican. Este procesador no admite Amazon Route 53 Resolver registros.
Este procesador solo acepta @message
como entrada.
importante
Si utiliza este procesador, debe ser el primer procesador del transformador.
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
1.0 2017-12-13T08:15:50.235Z Z123412341234 example.com AAAA NOERROR TCP IAD12 192.0.2.0 198.51.100.0/24
La configuración del procesador es la siguiente:
[ { "parseRoute53": {} } ]
El evento de registro transformado sería el siguiente.
{ "version": 1.0, "queryTimestamp": "2017-12-13T08:15:50.235Z", "hostZoneId": "Z123412341234", "queryName": "example.com", "queryType": "AAAA", "responseCode": "NOERROR", "protocol": "TCP", "edgeLocation": "IAD12", "resolverIp": "192.0.2.0", "ednsClientSubnet": "198.51.100.0/24" }
ParseVPC
Utilice este procesador para analizar los registros vendidos de Amazon VPC, extraer campos y convertirlos a formato JSON. Los valores de los campos codificados se decodifican.
Este procesador solo los acepta @message
como entrada.
importante
Si utiliza este procesador, debe ser el primer procesador del transformador.
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
2 123456789010 eni-abc123de 192.0.2.0 192.0.2.24 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
La configuración del procesador es la siguiente:
[ { "parseVPC": {} } ]
El evento de registro transformado sería el siguiente.
{ "version": 2, "accountId": "123456789010", "interfaceId": "eni-abc123de", "srcAddr": "192.0.2.0", "dstAddr": "192.0.2.24", "srcPort": 20641, "dstPort": 22, "protocol": 6, "packets": 20, "bytes": 4249, "start": 1418530010, "end": 1418530070, "action": "ACCEPT", "logStatus": "OK" }
Procesadores que mutan cadenas
lowerCaseString
El lowerCaseString
procesador convierte una cadena a su versión en minúsculas.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
Con Keys |
Una lista de claves para convertir a minúsculas |
Sí |
Número máximo de entradas: 10 |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "INNER_VALUE" } }
La configuración del transformador es la siguiente, que se usa lowerCaseString
conparseJSON
:
[ { "parseJSON": {} }, { "lowerCaseString": { "withKeys":["outer_key.inner_key"] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": "inner_value" } }
upperCaseString
El upperCaseString
procesador convierte una cadena a su versión en mayúsculas.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
Con Keys |
Una lista de teclas para convertir a mayúsculas |
Sí |
Número máximo de entradas: 10 |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "inner_value" } }
La configuración del transformador es la siguiente, que se usa upperCaseString
conparseJSON
:
[ { "parseJSON": {} }, { "upperCaseString": { "withKeys":["outer_key.inner_key"] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": "INNER_VALUE" } }
SplitString
El splitString
procesador es un tipo de procesador de mutaciones de cadenas que divide un campo en una matriz utilizando un carácter delimitador.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz debe contener source delimiter campos. |
Sí |
Número máximo de entradas: 10 |
|
origen |
La clave del valor del campo que se va a dividir |
Sí |
Longitud máxima: 128 |
|
delimiter |
La cadena delimitadora en la que se divide el valor del campo |
Sí |
Longitud máxima: 128 |
Ejemplo 1
Tomemos el siguiente ejemplo de registro de eventos:
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
La configuración del transformador es la siguiente, que se usa splitString
conparseJSON
:
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": [ "inner", "value" ] } }
Ejemplo 2
El delimitador en el que se divide la cadena puede tener varios caracteres.
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "item1, item2, item3" } }
La configuración del transformador es la siguiente:
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": ", " } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": [ "item1", "item2", "item3" ] } }
SubstituteString
El substituteString
procesador es un tipo de procesador de mutaciones de cadenas que compara el valor de una clave con el de una expresión regular y reemplaza todas las coincidencias por una cadena de reemplazo.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz debe contener source from , y to campos. |
Sí |
Número máximo de entradas: 10 |
|
origen |
La clave del campo que se va a modificar |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
desde |
La cadena de expresión regular que se va a reemplazar. Los caracteres de expresiones regulares especiales, como [y], deben estar separados por\\ cuando se usan comillas dobles y con\ cuando se usan comillas simples o cuando se configuran desde. AWS Management Console Para obtener más información, consulte Class Pattern Puede incluir un patrón |
Sí |
Longitud máxima: 128 |
|
a |
Se puede utilizar la cadena que se sustituirá por cada coincidencia de from referencias inversas con los grupos de captura. Use la forma $n para grupos numerados, como, por ejemplo, $1 y ${group_name} para grupos con nombre, como $. {my_group} > |
Sí |
Longitud máxima: 128 Número máximo de referencias inversas: 10 Número máximo de retroreferencias duplicadas: 2 |
Ejemplo 1
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key1": "[]", "inner_key2": "123-345-567", "inner_key3": "A cat takes a catnap." } }
La configuración del transformador es la siguiente, que se usa substituteString
conparseJSON
:
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "\\[\\]", "to": "value1" }, { "source": "outer_key.inner_key2", "from": "[0-9]{3}-[0-9]{3}-[0-9]{3}", "to": "xxx-xxx-xxx" }, { "source": "outer_key.inner_key3", "from": "cat", "to": "dog" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key1": "value1", "inner_key2": "xxx-xxx-xxx", "inner_key3": "A dog takes a dognap." } }
Ejemplo 2
Tomemos el siguiente ejemplo de evento de registro:
{ "outer_key": { "inner_key1": "Tom, Dick, and Harry", "inner_key2": "arn:aws:sts::123456789012:assumed-role/MyImportantRole/MySession" } }
La configuración del transformador es la siguiente, que se usa substituteString
conparseJSON
:
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "(\w+), (\w+), and (\w+)", "to": "$1 and $3" }, { "source": "outer_key.inner_key2", "from": "^arn:aws:sts::(?P<account_id>\\d{12}):assumed-role/(?P<role_name>[\\w+=,.@-]+)/(?P<role_session_name>[\\w+=,.@-]+)$", "to": "${account_id}:${role_name}:${role_session_name}" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key1": "Tom and Harry", "inner_key2": "123456789012:MyImportantRole:MySession" } }
TrimString
El trimString
procesador elimina los espacios en blanco del principio y del final de una clave.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
Con Keys |
Una lista de teclas para recortar |
Sí |
Número máximo de entradas: 10 |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": " inner_value " } }
La configuración del transformador es la siguiente, que se usa trimString
conparseJSON
:
[ { "parseJSON": {} }, { "trimString": { "withKeys":["outer_key.inner_key"] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": "inner_value" } }
Procesadores JSON mutan
Añadir claves
Utilice el addKeys
procesador para añadir nuevos pares clave-valor al evento de registro.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz puede contener key value , y overwriteIfExists campos. |
Sí |
Número máximo de entradas: 5 |
|
clave |
La clave de la nueva entrada que se va a añadir |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
valor |
El valor de la nueva entrada que se va a añadir |
Sí |
Longitud máxima: 256 |
|
overwriteIfExists |
Si lo establece entrue , el valor existente se sobrescribe si key ya existe en el evento. El valor predeterminado es false . |
No |
false |
Sin límite |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "inner_value" } }
La configuración del transformador es la siguiente, que se usa addKeys
conparseJSON
:
[ { "parseJSON": {} }, { "addKeys": { "entries": [ { "source": "outer_key.new_key", "value": "new_value" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": "inner_value", "new_key": "new_value" } }
DeleteKeys
Utilice el deleteKeys
procesador para eliminar campos de un evento de registro. Estos campos pueden incluir pares clave-valor.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
Con claves |
La lista de claves que se van a eliminar. |
Sí |
Sin límite |
Número máximo de entradas: 5 |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "inner_value" } }
La configuración del transformador es la siguiente, que se usa deleteKeys
conparseJSON
:
[ { "parseJSON": {} }, { "deleteKeys": { "withKeys":["outer_key.inner_key"] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": {} }
MoveKeys
Utilice el moveKeys
procesador para mover una clave de un campo a otro.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz puede contener source target , y overwriteIfExists campos. |
Sí |
Número máximo de entradas: 5 |
|
origen |
La clave para moverse |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
destino |
La clave para pasar a |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
overwriteIfExists |
Si lo estableces entrue , el valor existente se sobrescribe si key ya existe en el evento. El valor predeterminado es false . |
No |
false |
Sin límite |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key1": { "inner_key1": "inner_value1" }, "outer_key2": { "inner_key2": "inner_value2" } }
La configuración del transformador es la siguiente, que se usa moveKeys
conparseJSON
:
[ { "parseJSON": {} }, { "moveKeys": { "entries": [ { "source": "outer_key1.inner_key1", "target": "outer_key2" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key1": {}, "outer_key2": { "inner_key2": "inner_value2", "inner_key1": "inner_value1" } }
Cambie el nombre de las claves
Utilice el renameKeys
procesador para cambiar el nombre de las claves de un evento de registro.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz puede contener key target , y overwriteIfExists campos. |
Sí |
Sin límite |
Número máximo de entradas: 5 |
clave |
La clave para cambiar el nombre |
Sí |
Sin límite |
Longitud máxima: 128 |
destino |
El nombre de la nueva clave |
Sí |
Sin límite |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
overwriteIfExists |
Si lo estableces entrue , el valor existente se sobrescribe si key ya existe en el evento. El valor predeterminado es false . |
No |
false |
Sin límite |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "inner_value" } }
La configuración del transformador es la siguiente, que se usa renameKeys
conparseJSON
:
[ { "parseJSON": {} }, { "renameKeys": { "entries": [ { "key": "outer_key", "target": "new_key" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "new_key": { "inner_key": "inner_value" } }
CopyValue
Utilice el copyValue
procesador para copiar los valores de un evento de registro. También puede utilizar este procesador para añadir metadatos al registro de eventos, copiando los valores de las siguientes claves de metadatos en el registro de eventos:@logGroupName
,@logGroupStream
,@accountId
,@regionName
. Esto se ilustra en el siguiente ejemplo.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz puede contener source target , y overwriteIfExists campos. |
Sí |
Número máximo de entradas: 5 |
|
origen |
La clave para copiar |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
destino |
La clave a la que se debe copiar el valor |
Sí |
Sin límite |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
overwriteIfExists |
Si lo estableces entrue , el valor existente se sobrescribe si key ya existe en el evento. El valor predeterminado es false . |
No |
false |
Sin límite |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": { "inner_key": "inner_value" } }
La configuración del transformador es la siguiente, que se usa copyValue
conparseJSON
:
[ { "parseJSON": {} }, { "copyValue": { "entries": [ { "source": "outer_key.new_key", "target": "new_key" }, { "source": "@logGroupName", "target": "log_group_name" }, { "source": "@logGroupStream", "target": "log_group_stream" }, { "source": "@accountId", "target": "account_id" }, { "source": "@regionName", "target": "region_name" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": { "inner_key": "inner_value" }, "new_key": "inner_value", "log_group_name": "myLogGroupName", "log_group_stream": "myLogStreamName", "account_id": "012345678912", "region_name": "us-east-1" }
listToMap
El listToMap
procesador toma una lista de objetos que contienen campos clave y los convierte en un mapa de claves de destino.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
origen |
La clave es ProcessingEvent con una lista de objetos que se convertirán en un mapa |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
clave |
La clave de los campos que se van a extraer como claves en el mapa generado |
Sí |
Longitud máxima: 128 |
|
Clave de valor |
Si se especifica, los valores que especifique en este parámetro se extraerán de los source objetos y se colocarán en los valores del mapa generado. De lo contrario, los objetos originales de la lista de fuentes se incluirán en los valores del mapa generado. |
No |
Longitud máxima: 128 |
|
destino |
La clave del campo que contendrá el mapa generado |
No |
Nodo Raíz |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
flatten |
Un valor booleano para indicar si la lista se aplanará en elementos individuales o si los valores del mapa generado serán listas. De forma predeterminada, los valores de las claves coincidentes se representarán en una matriz. |
No |
false |
|
Elemento aplanado |
Si lo establecetrue , flatten utilícelo flattenedElement para especificar qué elemento, first o bienlast , desea conservar. |
Obligatorio cuando |
El valor solo puede ser first o last |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ] }
Transformador para el caso de uso 1: flatten
es false
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": false } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": [ "val-a" ], "b": [ "val-b1", "val-b2" ], "c": [ "val-c" ] }
Transformador para el caso de uso 2: flatten
es true
y flattenedElement
es first
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "first" } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b1", "c": "val-c" }
Transformador para el caso de uso 3: flatten
es true
y flattenedElement
es last
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "last" } } ]
El evento de registro transformado sería el siguiente.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b2", "c": "val-c" }
Procesadores convertidores de tipos de datos
Convertidor de tipos
Utilice el typeConverter
procesador para convertir un tipo de valor asociado a la clave especificada en el tipo especificado. Es un procesador de conversión que cambia los tipos de los campos especificados. Los valores se pueden convertir en uno de los siguientes tipos de datos:integer
, ydouble
. string
boolean
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
entries |
Matriz de entradas. Cada elemento de la matriz debe contener key type campos. |
Sí |
Número máximo de entradas: 10 |
|
clave |
La clave con el valor que se va a convertir a un tipo diferente |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
type |
El tipo al que se va a convertir. Los valores válidos son integer , double , string y boolean . |
Sí |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{ "name": "value", "status": "200" }
La configuración del transformador es la siguiente, que se usa typeConverter
conparseJSON
:
[ { "parseJSON": {} }, { "typeConverter": { "entries": [ { "key": "status", "type": "integer" } ] } } ]
El evento de registro transformado sería el siguiente.
{ "name": "value", "status": 200 }
DateTimeConverter
Utilice el datetimeConverter
procesador para convertir una cadena de fecha y hora en el formato que especifique.
Campo | Descripción | ¿Obligatorio? | Predeterminado/a | Límites |
---|---|---|---|---|
origen |
La clave a la que se aplica la conversión de fecha. |
Sí |
Número máximo de entradas: 10 |
|
Patrones de coincidencias |
Una lista de patrones para compararlos con los del campo source |
Sí |
Número máximo de entradas: 5 |
|
destino |
El campo JSON en el que se almacenará el resultado. |
Sí |
Longitud máxima: 128 Profundidad máxima de clave anidada: 3 |
|
Formato de destino |
El formato de fecha y hora que se utilizará para los datos convertidos en el campo de destino. |
No |
|
Longitud máxima: 64 |
Zona horaria de origen |
La zona horaria del campo de origen. Para obtener una lista de los valores posibles, consulte los identificadores y compensaciones de zona compatibles con Java |
No |
UTC |
Longitud mínima: 1 |
Zona horaria objetivo |
La zona horaria del campo de destino. Para obtener una lista de los valores posibles, consulte los identificadores y compensaciones de zona compatibles con Java |
No |
UTC |
Longitud mínima: 1 |
locale |
La configuración regional del campo de origen. Para obtener una lista de valores posibles, consulte el método Locale getAvailableLocales () en Java con ejemplos |
Sí |
Longitud mínima:1 |
Ejemplo
Tomemos el siguiente ejemplo de registro de eventos:
{"german_datetime": "Samstag 05. Dezember 1998 11:00:00"}
La configuración del transformador es la siguiente, que se usa dateTimeConverter
conparseJSON
:
[ { "parseJSON": {} }, { "dateTimeConverter": { "source": "german_datetime", "target": "target_1", "locale": "de", "matchPatterns": ["EEEE dd. MMMM yyyy HH:mm:ss"], "sourceTimezone": "Europe/Berlin", "targetTimezone": "America/New_York", "targetFormat": "yyyy-MM-dd'T'HH:mm:ss z" } } ]
El evento de registro transformado sería el siguiente.
{ "german_datetime": "Samstag 05. Dezember 1998 11:00:00", "target_1": "1998-12-05T17:00:00 MEZ" }