El procesamiento del lenguaje de consulta de registro se basa en un modelo de flujo de datos. Cada consulta puede hacer referencia a uno o más logs y produce un juego de datos de tabla como resultado. El lenguaje de consulta proporciona varios operadores para buscar, filtrar y agregar logs estructurados y no estructurados.
Una consulta de registro incluye los siguientes componentes:
Para comenzar la búsqueda, primero debe definir el juego de logs que desea buscar. Puede elegir buscar objetos de log, grupos de log o compartimentos específicos. Puede mezclar y hacer coincidir tantos logs como necesite. El ámbito de búsqueda se define mediante el siguiente patrón:
search <log_stream> (,? <log_stream>)*
El lenguaje de consulta recupera entradas de log del ámbito que proporcione y crea un flujo de log que puede filtrar, agregar y visualizar.
Todos los campos de los flujos de log son sensibles a mayúsculas/minúsculas. Aunque los logs reales solo tienen campos indexados en minúsculas, también puede crear nuevos campos en la consulta con mayúsculas y minúsculas:
search "..."
| select event as EventName
Los campos tienen la notación JSON; por lo tanto, los caracteres especiales deben estar entre comillas.
Una pleca (|) aplica un operador del lado izquierdo a una expresión de flujo situada del lado derecho. La expresión de pleca es una expresión de flujo.
El operador en el lado derecho de una pleca debe consumir solo un flujo (por ejemplo, operaciones de agregación, filtros).
El lado izquierdo se convierte en el "flujo actual" de la expresión del lado derecho, haciendo que todos los campos del flujo actual estén disponibles según unos nombres abreviados. Por ejemplo:
Un operador tabular crea o modifica un flujo de log filtrando o cambiando las entradas del log. Consulte también la notación de sintaxis de BNF. A continuación se indican los operadores tabulares:
Crea un flujo de log a partir de objetos de log reales. Consulte también Secuencias de log para obtener más información y Uso de la CLI para obtener ejemplos adicionales.
A continuación se incluyen algunas comparaciones de ejemplo con números y comparaciones de campos booleanos:
| data.statusCode = 200
| data.isPar
Puede realizar una búsqueda de texto completo especificando un filtro en todo el contenido del log. Una búsqueda de logContent devuelve cualquier línea de log en la que un valor coincida con su cadena. Esta funcionalidad soporta comodines. Por ejemplo:
search "application"
| where logContent = 'ERROR' -- returns log lines with a value matching "ERROR"
search "application"
| where logContent = '*ERROR*' -- returns log lines with a value containing "ERROR"
top
Recupera solo un número especificado de filas del flujo de log actual ordenadas según una expresión.
<top> := top [0-9]+ by <expr>
Ejemplos:
top 3 by datetime
top 3 by *
top 3 by (a + b)
Un número de filas debe ser un entero positivo constante y se debe proporcionar una expresión de ordenación.
Ordena el flujo de log actual por las columnas especificadas, en orden ascendente (por defecto) o descendente. El operador utiliza las palabras clave "DESC" y "ASC" para especificar el tipo de orden. La ordenación por defecto es asc.
Procesa el flujo de log actual filtrando todos los duplicados por columnas especificadas. Si se especifica más de una columna, todas las columnas deben estar delimitadas por comas.
El último parámetro es sensible a mayúsculas/minúsculas.
rounddown (<expr>, '[0-9]+(d | h | m | s)')
El último parámetro es el intervalo de tiempo en días, horas, minutos o segundos.
time_format(datetime, <format>)
Formatear una hora a una cadena
concat (<axpr>, <expr>)
upper (<expr>)
lower (<expr>)
substr (<expr>, [0-9]+ (, [0-9]+)?)
El segundo argumento es el índice de inicio, mientras que el tercer argumento es opcional, es decir, el número de caracteres que debe tener.
isnull (<expr>)
isnotnull (<expr>)
Operador de agregación 🔗
count
Calcula un número de filas en el flujo de log actual:
search "application"
| count
>>
{"count": 6}
summarize
Agrupa el flujo de log actual por las columnas especificadas y el intervalo de tiempo, y agrega mediante expresiones con nombre. Si no se han especificado columnas de agrupación, summarize se agrega en todo el flujo.
search "application"
| summarize count(impact) as impact by level, rounddown(datetime, '1m') as timestamp
Columnas especiales 🔗
logContent
logContent es una columna especial que representa el texto de todo el mensaje original. Por ejemplo:
search "application"
| where logContent = '*ERROR*' -- returns log lines with a value containing "ERROR"
Comentarios 🔗
Tanto los comentarios de una sola línea como de varias líneas están soportados; por ejemplo:
search "application"
| count -- this is a single line comment
/* this is a
multi-line
comment
*/
Identificadores 🔗
Los identificadores son los nombres de todas las entidades disponibles en la consulta. Un identificador puede hacer referencia a un campo del flujo de log actual o a un parámetro definido al principio de la consulta. Los identificadores tienen el siguiente formato:
name: \$?[a-zA-Z_][a-zA-Z_0-9]*
Por ejemplo: level, app_severity, $level.
El formato entre comillas permite símbolos especiales en los nombres (excepto las comillas dobles):
name: "[^"]+"
Por ejemplo: "opc-request-id", "-level".
Todas las referencias de parámetro comienzan con un signo de dólar ($), por ejemplo: $level.
Caracteres literales 🔗
Tipo
Ejemplos
cadena
'hello', 'world\'!'
patrón de comodín
"acc-*"
entero
-1, 0, +200
flotante
1.2, 0.0001, 1.2e10
matriz
[1, 2, 3, 4], []
intervalo
3h, 2m
anulable
null
Funciones 🔗
Las funciones escalares son las siguientes:
isnull(expr1)
concat(expr1, ...)
Las funciones de agregación son las siguientes:
sum(expr1)
avg(expr1)
min(expr1)
max(expr1)
count(): cuenta un número de filas.
count(expr): cuenta una serie de valores expr no nulos.
first(expr1)
last(expr1)
Parámetros del sistema 🔗
Se reservan todos los parámetros con el prefex "query.". Los parámetros soportados son los siguientes:
Nombre
Tipo
Ejemplo
Descripción
query.from
Cadena con fecha y hora en formato ISO 8601.
'2007-04-05T14:30'
Especifica la hora de inicio de la ventana de consulta.
query.to
Cadena con fecha y hora en ISO 8601.
'2007-04-05T14:30+05:00'
Especifica la hora de finalización de la ventana de consulta.