stats - 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.

stats

Utilice stats para crear visualizaciones de los datos de registro, como gráficos de barras, gráficos de líneas y gráficos de áreas apiladas. Esto le ayuda a identificar de forma más eficiente los patrones en los datos de registro. CloudWatch Logs Insights genera visualizaciones para las consultas que utilizan la stats función y una o más funciones de agregación.

Por ejemplo, la siguiente consulta en un grupo de registro de Route 53 devuelve visualizaciones que muestran la distribución de los registros de Route 53 por hora, por tipo de consulta.

stats count(*) by queryType, bin(1h)

Todas estas consultas pueden generar gráficos de barras. Si la consulta utiliza la función bin() para agrupar los datos en función de un mismo campo a lo largo del tiempo, también puede ver gráficos de líneas y gráficos de áreas apiladas.

La función bin admite las siguientes unidades de tiempo y abreviaturas. Para todas las unidades y abreviaturas que incluyan más de un carácter, se admite agregar s para pluralizar. Así que tanto hr como hrs funcionan para especificar las horas.

  • millisecond ms msec

  • second s sec

  • minute m min

  • hour h hr

  • day d

  • week w

  • month mo mon

  • quarter q qtr

  • year y yr

Visualización de datos de series temporales

Las visualizaciones de series temporales funcionan con las consultas que tienen las siguientes características:

  • La consulta contiene una o varias funciones de agregación. Para obtener más información, consulte Aggregation Functions in the Stats Command.

  • La consulta utiliza la función bin() para agrupar los datos por un campo.

Estas consultas pueden generar gráficos de líneas, de áreas apiladas, de barras y circulares.

Ejemplos

Para ver un tutorial completo, consulte Tutorial: Ejecutar una consulta que produce una visualización de serie temporal.

Aquí hay más consultas de ejemplo que funcionan para la visualización de series temporales.

La siguiente consulta genera una visualización de los valores medios del campo myfield1, con un punto de datos creado cada cinco minutos. Cada punto de datos es la agregación de las medias de los valores myfield1 de los registros de los últimos cinco minutos.

stats avg(myfield1) by bin(5m)

La siguiente consulta genera una visualización de los tres valores basados en diferentes campos, con un punto de datos creado cada cinco minutos. La visualización se genera porque la consulta contiene las funciones de agregación y utiliza bin() como campo de agrupación.

stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)

Restricciones de los gráficos de líneas y de áreas apiladas

Las consultas que agregan información de entradas de registro pero no utilizan la función bin() pueden generar gráficos de barras. Sin embargo, las consultas no pueden generar gráficos de líneas ni gráficos de áreas apiladas. Para obtener más información sobre estos tipos de consultas, visite Visualización de datos de registro agrupados por campos.

Visualización de datos de registro agrupados por campos

Puede generar gráficos de barras para consultas que utilizan la función stats y una o varias funciones de agregación. Para obtener más información, consulte Aggregation Functions in the Stats Command.

Para ver la visualización, ejecute la consulta. A continuación, elija la pestaña Visualization (Visualización), seleccione la flecha situada junto a Line (Línea) y haga clic en Bar (Barra). Las visualizaciones de los gráficos de barras tienen un límite máximo de 100 barras.

Ejemplos

Para ver un tutorial completo, consulte Tutorial: Ejecutar una consulta que produce una visualización agrupada por campos de registro. Los párrafos siguientes incluyen más consultas de ejemplo de visualizaciones por campos.

La siguiente consulta de registro de flujo de VPC busca el número medio de bytes transferidos por sesión en cada dirección de destino.

stats avg(bytes) by dstAddr

También puede generar un gráfico que contenga varias barras para cada valor resultante. Por ejemplo, la siguiente consulta de registro de flujo de VPC busca el número medio y máximo de bytes transferidos por sesión en cada dirección de destino.

stats avg(bytes), max(bytes) by dstAddr

En la siguiente consulta, se busca el número de registros de Amazon Route 53 para cada tipo de consulta.

stats count(*) by queryType

Utilice varios comandos de estadísticas en una sola consulta

Puede usar hasta dos comandos stats en una sola consulta. Esto le permite realizar una agregación adicional en el resultado de la primera agregación.

Ejemplo: consulta con dos comandos stats

Por ejemplo, la siguiente consulta busca primero el volumen de tráfico total en los intervalos de 5 minutos y, a continuación, calcula el volumen de tráfico más alto, más bajo y medio de esos intervalos de 5 minutos.

FIELDS strlen(@message) AS message_length | STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m) | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb

Ejemplo: combine varios comandos de estadísticas con otras funciones, como filter, fields, bin

Puede combinar dos comandos stats con otros comandos, como filter y fields, en una sola consulta. Por ejemplo, la siguiente consulta busca el número de direcciones IP distintas en las sesiones y busca el número de sesiones por plataforma de cliente, filtra esas direcciones IP y, finalmente, busca el promedio de solicitudes de sesión por plataforma del cliente.

STATS count_distinct(client_ip) AS session_ips, count(*) AS requests BY session_id, client_platform | FILTER session_ips > 1 | STATS count(*) AS multiple_ip_sessions, sum(requests) / count(*) AS avg_session_requests BY client_platform

Puede utilizar funciones bin y dateceil en consultas con varios comandos stats. Por ejemplo, la siguiente consulta combina primero los mensajes en bloques de 5 minutos, luego agrega esos bloques de 5 minutos en bloques de 10 minutos y calcula los volúmenes de tráfico más altos, más bajos y promedio dentro de cada bloque de 10 minutos.

FIELDS strlen(@message) AS message_length | STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)

Notas y limitaciones

Una consulta puede tener un máximo de dos comandos stats. Esta cuota no se puede cambiar.

Si utiliza un comando sort o limit, debe aparecer después del segundo comando stats. Si está antes del segundo comando stats, la consulta no es válida.

Cuando una consulta tiene dos comandos stats, los resultados parciales de la consulta no comienzan a mostrarse hasta que se completa la primera agregación stats.

En el segundo comando stats de una consulta única, solo puede hacer referencia a los campos definidos en el primer comando stats. Por ejemplo, la siguiente consulta no es válida porque el campo @message no estará disponible después de la primera agregación stats.

FIELDS @message | STATS SUM(Fault) by Operation # You can only reference `SUM(Fault)` or Operation at this point | STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message

Todos los campos a los que haga referencia después del primer comando stats deben definirse en ese primer comando stats.

STATS sum(x) as sum_x by y, z | STATS max(sum_x) as max_x by z # You can only reference `max(sum_x)`, max_x or z at this point
importante

La función bin siempre utiliza el campo @timestamp de forma implícita. Esto significa que no se puede usar bin en el segundo comando stats sin usar el primer comando stats para propagar el campo timestamp. Por ejemplo, la siguiente consulta no es válida.

FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes BY @logStream | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field

En su lugar, defina el campo @timestamp en el primer comando stats y, a continuación, podrá usarlo con dateceil en el segundo comando stats, como en el siguiente ejemplo.

FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream | STATS avg(ingested_bytes) BY dateceil(@t, 5m)

Funciones para usar con estadísticas

CloudWatch Logs Insights admite tanto las funciones de agregación de estadísticas como las funciones de no agregación de estadísticas.

Utilice las funciones de agregación de estadísticas en el comando stats y como argumentos para otras funciones.

Función Tipo de resultado Descripción

avg(fieldName: NumericLogField)

número

La media de los valores en el campo especificado.

count()

count(fieldName: LogField)

número

Cuenta los eventos de registro. count() (o count(*)) cuenta todos los eventos devueltos por la consulta, mientras que count(fieldName) cuenta todos los registros que incluyen el nombre de campo especificado.

count_distinct(fieldName: LogField)

número

Devuelve el número de valores únicos para el campo. Si el campo tiene una cardinalidad muy alta (contiene muchos valores únicos), el valor devuelto por count_distinct es solo una aproximación.

max(fieldName: LogField)

LogFieldValue

El máximo de los valores para este campo de registro en los registros consultados.

min(fieldName: LogField)

LogFieldValue

El mínimo de los valores para este campo de registro en los registros consultados.

pct(fieldName: LogFieldValue, percent: number)

LogFieldValue

Un percentil indica el peso relativo de un valor en un conjunto de datos. Por ejemplo, pct(@duration, 95) devuelve el valor @duration en que el 95 % de los valores de @duration son inferiores a este valor y un 5 por ciento son superiores a este valor.

stddev(fieldName: NumericLogField)

número

El desvío estándar de los valores en el campo especificado.

sum(fieldName: NumericLogField)

número

La suma de los valores en el campo especificado.

Funciones sin agregación de estadísticas

Utilice las funciones de no agregación en el comando stats y como argumentos para otras funciones.

Función Tipo de resultado Descripción

earliest(fieldName: LogField)

LogField

Devuelve el valor de fieldName desde el evento de registro que tiene la primera marca temporal en los registros consultados.

latest(fieldName: LogField)

LogField

Devuelve el valor de fieldName desde el evento de registro que tiene la última marca temporal en los registros consultados.

sortsFirst(fieldName: LogField)

LogField

Devuelve el valor de fieldName que ordena en primer lugar los registros consultados.

sortsLast(fieldName: LogField)

LogField

Devuelve el valor de fieldName que ordena al final los registros consultados.