OpenSearch Lenguaje de procesamiento canalizado (PPL) - Amazon CloudWatch Logs

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.

OpenSearch Lenguaje de procesamiento canalizado (PPL)

Esta sección contiene una introducción básica a la consulta de CloudWatch registros mediante PPL. OpenSearch Con el PPL se pueden recuperar, consultar y analizar datos mediante comandos que están canalizados juntos, lo que facilita la comprensión y la redacción de consultas complejas. Su sintaxis se basa en las canalizaciones de Unix y permite encadenar comandos para transformar y procesar datos. Con el PPL, se pueden filtrar y agregar datos, así como utilizar un amplio conjunto de funciones matemáticas, de cadenas, de fecha, condicionales y de otro tipo para el análisis.

Incluirlo SOURCE en una consulta de PPL es una forma útil de especificar los grupos de registros, los índices de campos y las fuentes de datos que se van a incluir en una consulta cuando se utiliza la API AWS CLI o la API para crear una consulta. El SOURCE comando solo se admite en la API AWS CLI and, no en la CloudWatch consola. Cuando utiliza la CloudWatch consola para iniciar una consulta, utiliza la interfaz de la consola para especificar los grupos de registros y el nombre y el tipo de la fuente de datos.

Se usa aws:fieldIndex para devolver solo datos indexados, mediante el forzado de una consulta a analizar solo los grupos de registros que están indexados en un campo que se especifique en la consulta. Los grupos de registros relevantes se seleccionan automáticamente en función de los campos especificados en el filterIndex comando. Esto reduce el volumen escaneado, ya que se omiten los grupos de registro que no tienen ningún evento de registro que contenga el campo especificado en la consulta y se escanean únicamente los grupos de registro que coincidan con el valor especificado en la consulta para este índice de campos. Se utiliza aws:fieldIndex para especificar el nombre del campo, junto con el nombre y el valor del campo en el comando source para consultar únicamente los datos indexados que contienen el campo y el valor especificados. Para obtener más información, consulte Creación de índices de campo para mejorar el rendimiento de las consultas y reducir el volumen de análisis

Puede usar el OpenSearch PPL para consultas de grupos de registros de la clase de registro estándar.

nota

Para obtener información sobre todos los comandos de consulta de OpenSearch PPL compatibles con CloudWatch los registros e información detallada sobre la sintaxis y las restricciones, consulte los comandos de PPL compatibles en la Guía para desarrolladores de OpenSearch servicios.

Para obtener información sobre otros lenguajes de consulta que puede utilizar, consulte CloudWatch Logs Insights, OpenSearch Service SQL y CloudWatch Metrics Insights

Comando o función Consulta de ejemplo Description (Descripción)

campos

fields field1, field2

Muestra un conjunto de campos que necesitan ser proyectados.

unirse

LEFT JOIN left=l, right=r on l.id = r.id `join_right_lg` | fields l.field_1, r.field_2

Une dos conjuntos de datos.

where

where field1="success" | where field2 != "i-023fe0a90929d8822" | fields field3, field4, field5,field6 | head 1000

Filtra los datos en función de las condiciones que especifique.

AWS: índice de campos

source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10

Devuelve únicamente datos indexados, obligando a una consulta a analizar únicamente los grupos de registros que están indexados en un campo que usted especifique en la consulta.

stats

stats count(), count(field1), min(field1), max(field1), avg(field1) by field2 | head 1000

Realiza agregaciones y cálculos.

parse

parse field1 ".*/(?<field2>[^/]+$)" | where field2 = "requestId" | fields field1, field2 | head 1000

Extrae un patrón de expresión regular (regex) de una cadena y muestra el patrón extraído. El patrón extraído se puede utilizar además para crear nuevos campos o filtrar datos.

sort

stats count(), count(field1), min(field1) as field1Alias, max(`field1`), avg(`field1`) by field2 | sort -field1Alias | head 1000

Ordena los resultados mostrados por un nombre de campo. Use ordenar: FieldName para ordenar en orden descendente.

eval

eval field2 = field1 * 2 | fields field1, field2 | head 20

Modifica o procesa el valor de un campo y lo almacena en un campo diferente. Esto resulta útil para modificar matemáticamente una columna, aplicar funciones de cadena a una columna o aplicar funciones de fecha a una columna.

rename

rename field2 as field1 | fields field1;

Cambia el nombre de uno o más campos del resultado de la búsqueda.

head

fields `@message` | head 20

Limita los resultados de la consulta a las N primeras filas.

top

top 2 field1 by field2

Busca los valores más frecuentes de un campo.

dedup

dedup field1 | fields field1, field2, field3

Elimina entradas duplicadas en función de los campos que especifique.

rare

rare field1 by field2

Busca los valores menos frecuentes de todos los campos de la lista de campos.

subquery

where field_1 IN [ search source= `subquery_lg` | fields field_2 ] | fields id, field_1

Realiza consultas anidadas y complejas en las instrucciones de PPL.

trendline

trendline sma(2, field1) as field1Alias

Calcula los promedios móviles de los campos.

eventStats

eventstats sum(field1) by field2

Enriquece los datos del evento con estadísticas resumidas calculadas. Analiza los campos específicos de sus eventos, calcula varias medidas estadísticas y, a continuación, agrega estos resultados a cada evento original como campos nuevos.

expandir

eval tags_array_string = json_extract(`@message`, '$.tags')| eval tags_array = json_array(json_extract(tags_string, '$[0]'), json_extract(tags_string, '$[1]'))| expand tags_array as color_tags

Divide un campo que contiene varios valores en filas independientes, creando una nueva fila para cada valor del campo especificado.

fillnull

fields `@timestamp`, error_code, status_code | fillnull using status_code = "UNKNOWN", error_code = "UNKNOWN"

Rellena los campos nulos con el valor que proporcione. Se puede usar en uno o más campos.

flatten

eval metadata_struct = json_object('size', json_extract(metadata_string, '$.size'), 'color', json_extract(metadata_string, '$.color')) | flatten metadata_struct as (meta_size, meta_color)

Aplana un campo. El campo debe ser de este tipo: struct<?,?> o array<struct<?,?>>.

cidrmatch

where cidrmatch(ip, '2003:db8::/32') | fields ip

Verifica si la dirección IP especificada está dentro del rango de CIDR dado.

fieldsummary

where field1 != 200 | fieldsummary includefields= field1 nulls=true

Calcula las estadísticas básicas de cada campo (recuento, recuento distinto, mínimo, máximo, promedio, stddev y media).

grok

grok email '.+@%{HOSTNAME:host}' | fields email, host

Analiza un campo de texto con un patrón grok y agrega los resultados al resultado de la búsqueda.

Funciones de cadena

eval field1Len = LENGTH(field1) | fields field1Len

Funciones integradas en PPL que pueden manipular y transformar datos de texto y cadenas de texto dentro de las consultas de PPL. Por ejemplo, convertir mayúsculas y minúsculas, combinar cadenas, extraer partes y limpiar el texto.

Funciones de fecha y hora

eval newDate = ADDDATE(DATE('2020-08-26'), 1) | fields newDate

Funciones integradas para administrar y transformar los datos de fecha y hora en las consultas PPL. Por ejemplo, date_add, date_format, datediff, date-sub, timestampadd, timestampdiff, current_timezone, utc_timestamp y current_date.

Funciones de condiciones

eval field2 = isnull(field1) | fields field2, field1, field3

Funciones integradas que verifican condiciones de campo específicas y evalúan las expresiones de forma condicional. Por ejemplo, si field1 es nulo, devuelve el field2.

Funciones matemáticas

eval field2 = ACOS(field1) | fields field1

Funciones integradas para realizar cálculos matemáticos y transformaciones en consultas PPL. Por ejemplo, abs (valor absoluto), round (redondea números), sqrt (raíz cuadrada), pow (cálculo de potencia) y ceil (redondea al entero más cercano).

CryptoGraphic funciones

eval crypto = MD5(field)| head 1000

Para calcular el hash de un campo determinado

Funciones JSON

eval valid_json = json('[1,2,3,{"f1":1,"f2":[5,6]},4]') | fields valid_json

Funciones integradas para el manejo de JSON, incluidas las matrices, la extracción y la validación. Por ejemplo, json_object, json_array, to_json_string, json_array_length, json_extract, json_keys y json_valid.

Alcance de la consulta

Incluir SOURCE en una consulta es una forma útil de especificar los grupos de registros que se van a incluir en una consulta cuando se utiliza la API AWS CLI o para crear una consulta. El comando SOURCE solo se admite en la API AWS CLI and, no en la CloudWatch consola. Cuando utiliza la CloudWatch consola para iniciar una consulta, utiliza la interfaz de la consola para especificar los grupos de registros y el nombre y el tipo de la fuente de datos.

El comando source de PPL ahora admite varias formas de especificarlos:

  1. Grupo de registro

  2. Índices de campo: nuevos

  3. Fuente y tipo de datos: nuevos

Grupo de registros

La selección de fuentes de grupos de registros se puede utilizar cuando los clientes saben en qué grupos de registros exactos deben buscarse

source = [lg:`/aws/lambda/my-function`] | where status = 200 | head 10

Índices de campo

La selección de fuentes basada en índices de campos reduce la cantidad de datos consultados al limitar los resultados solo a los datos indexados cuando filtra los campos de destino que se han indexado. Los grupos de registros relevantes se seleccionan automáticamente en función de los campos especificados en el comando. filterIndex Para obtener más información sobre los índices de campos y cómo crearlos, consulte Crear índices de campos para mejorar el rendimiento de las consultas y reducir el volumen de digitalización.

Se usa aws:fieldIndex para devolver solo datos indexados, mediante el forzado de una consulta a analizar solo los grupos de registros que están indexados en un campo que se especifique en la consulta. Para los grupos de registros que están indexados en este campo, se optimiza aún más la consulta al omitir los grupos de registros que no tienen ningún evento de registro que contenga el campo especificado en la consulta del campo indexado. Se reduce aún más el volumen analizado al intentar analizar solo los eventos de registro de estos grupos de registros que coincidan con el valor especificado en la consulta para este índice de campos. Para obtener más información sobre los índices de campo y cómo crearlos, consulte Crear índices de campo para mejorar el rendimiento de las consultas y reducir el volumen de digitalización.

En PPL, aws:fieldIndex se usa para especificar qué pares de valores clave deben tratarse como índices. La sintaxis es la siguiente

source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10

donde,

  1. `aws:fieldIndex`="region"identifica la región como índice de campo.

    1. Nota: En lugar de =, los clientes pueden usar IN para especificar varios índices (ejemplo siguiente)

  2. `region`="us-west-2"identifica la condición de filtro que se va a aplicar

    1. Nota: En lugar de =, los clientes pueden usar IN para especificar varios valores (ejemplo siguiente)

Los clientes pueden especificar varios índices de campos de la siguiente manera

source = [`aws:fieldIndex` IN ("status", "region"), `status` = 200, `region` IN ("us-west-2", "us-east-1")] | head 10

Fuente y tipo de datos

La selección de fuentes basadas en fuentes y tipos de datos se puede utilizar cuando los clientes saben qué fuentes de datos exactas deben consultarse. Esta consulta se ejecuta en uno o más grupos de registros que contienen la fuente y el tipo de datos especificados.

source = [ds:`data_source.type`] | where status = 200 | head 10

PPL compatible para consultas de fuentes de datos

Para respaldar el caso de uso de la consulta de fuentes de datos en PPL, puede utilizar la cláusula de selección dinámica de fuentes. Con esta sintaxis, puede consultar las fuentes de datos especificándolas en el comando de búsqueda. Puede especificar hasta 10 fuentes de datos.

Sintaxis

source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`, ...ds:`DataSourcen.Typen`]

Consulta de ejemplo

search source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`] | fields field1, field2

Ejemplo combinado

Los clientes pueden especificar todos los operadores de selección de fuentes en cualquier orden y el resultado sería la intersección de todas las condiciones aplicadas.

Por ejemplo,/aws/lambda/my-function-1 puede contener varios tipos y fuentes de datos, incluida una amplia variedad de índices. Cuando se ejecutó la siguiente consulta, los resultados devueltos solo tendrán eventos de origen y tipo DataSource 1.Type1 y que coincidan con el criterio de «estado» = 200.

search source=[ ds:`DataSource1.Type1`, lg:`/aws/lambda/my-function-1`, `aws:fieldIndex` IN ("status"), `status` = 200 ]

Restricciones

Cuando se utiliza OpenSearch PPL para realizar consultas en Logs Insights, se aplican las siguientes restricciones. CloudWatch

  • No puede usar comandos de unión o subconsulta con las consultas de fuentes de datos.