Saltar a contenido

Plugin Analizador de registros

Convierte el editor en un banco de trabajo capaz para registros: analiza archivos de registro estructurados mediante perfiles editables, navega por campos analizados y marcas de tiempo, funde varias fuentes en una sola línea de tiempo, sigue una única petición a través de varias fuentes y analiza tasas, percentiles y valores más frecuentes, todo ello sin cargar el texto en bruto en una pestaña normal del editor.

Dónde encontrarlo

El plugin añade tres entradas al menú Analizador de registros:

  • Analizador de registros ▸ Abrir como registro… — abre un único archivo de registro en una ventana de Vista de registro dedicada.
  • Analizador de registros ▸ Abrir registros combinados… — elige dos o más archivos, dale a cada uno su propio perfil y velos entrelazados en una sola línea de tiempo.
  • Analizador de registros ▸ Abrir el registro del sistema… (solo en Windows) — consulta el Registro de eventos de Windows a través de la misma vista, con los filtros empujados hasta el Get-WinEvent de PowerShell.

Una página Preferencias ▸ Complementos ▸ Analizador de registros te permite fijar las fichas de nivel predeterminadas, el perfil de reserva para los archivos que no coinciden con ningún glob, el umbral de «avisar antes de analizar archivos de más de N MB», el modo de filtro predeterminado y el intervalo de sondeo del seguimiento del final: un único mando tanto para el temporizador del final de archivo como para el flujo del registro del sistema (cada sondeo del Registro de eventos de Windows lanza un proceso de PowerShell, así que las fuentes pesadas pueden querer un intervalo más lento).

Los archivos grandes se analizan en un hilo en segundo plano con un contador de registros en vivo, y las agregaciones costosas (plantillas de mensaje, anomalías) también se calculan en segundo plano: la barra de estado muestra «Analizando las estadísticas en segundo plano…» y los paneles se rellenan cuando están listos, de modo que la ventana sigue respondiendo en todo momento. En cargas muy grandes, las estadísticas se agregan sobre los 150 000 registros más recientes y la línea de tiempo muestrea todo el intervalo.

Vista de registro de un solo archivo

Al abrir un registro aparece la ventana dedicada de Vista de registro. Refleja la ergonomía de las propias ventanas basadas en tablas del editor (como la ventana de comparación de diferencias) y se mantiene fuera de la tira de pestañas del editor.

Disposición

  • Barra de herramientas — fichas de nivel (TRACE…FATAL), modo de filtro y línea de filtro, Error siguiente / anterior (F8 / Shift+F8), Ir a la hora (Ctrl+G).
  • Tira de línea de tiempo en la parte superior — volumen de eventos agrupado en intervalos de tiempo, coloreado por nivel. Arrastra un intervalo para filtrar por tiempo; haz clic en una barra para llevar la tabla al primer registro de ese intervalo o posterior.
  • Tabla en el centro — Hora / Nivel / Origen / Mensaje, virtualizada para que se desplace con suavidad incluso con cientos de miles de registros.
  • Panel de detalle bajo la tabla — muestra la entrada completa en bruto, incluso de varias líneas, de la fila seleccionada.
  • Panel de estadísticas acoplado a la derecha — recuentos por nivel, tasa de eventos, selector de percentil (p50/p95/p99 sobre cualquier campo numérico, bytes de forma predeterminada), distribución de clases de estado HTTP (1xx…5xx, oculta cuando no hay campo status) y una tabla de los N valores más frecuentes de cualquier campo (url de forma predeterminada, con un tope de 25 filas).

La tabla de registros y el panel de detalle usan la fuente del editor de Preferencias ▸ General —la misma familia y el mismo tamaño que una pestaña normal del editor—, de modo que las marcas de tiempo y los niveles queden alineados columna a columna. Cambiar ese ajuste se aplica a las vistas de registro que ya están abiertas, sin necesidad de reabrirlas. Lo mismo vale para la vista fundida, sus paneles en paralelo y el diagrama de secuencia. La barra de herramientas, la línea de filtro y el panel de estadísticas conservan la fuente de la interfaz: son marco, no contenido del registro.

Modos de filtro

La línea de filtro de la barra de herramientas acepta cinco expresiones distintas; elige el modo en el desplegable que tiene a su izquierda:

Modo Con qué coincide
Simple Subcadena sin distinguir mayúsculas, contra la línea en bruto.
Palabras Elementos separados por espacios; todos deben aparecer en algún punto de la línea, en cualquier orden. phpinfo GET coincide con una línea que contiene tanto phpinfo como GET.
Comodines Glob con * y ? contra la línea en bruto, sin distinguir mayúsculas.
Expresión regular Patrón QRegularExpression normal, sin distinguir mayúsculas de forma predeterminada.
Consulta Gramática estructurada con predicados de campo, de nivel y de tiempo, más AND/OR/NOT y paréntesis.

Ejemplos para el modo Consulta:

level>=WARN
status:500 AND method:POST
message~/timeout|refused/ AND @time in [09:00..09:05]
NOT (source:nginx OR source:apache)
level>=ERROR OR (status:5\d\d AND method:POST)

La línea de filtro aplica un retardo de 200 ms a la escritura para que la tabla no vuelva a filtrar en cada pulsación; pulsar Intro o perder el foco la aplica de inmediato, y borrar la línea también se aplica al instante. Cuando una expresión de comodines, expresión regular o consulta no compila, la línea se pone roja y la descripción emergente muestra el diagnóstico: el proxy mantiene en pantalla el filtro válido anterior para que la tabla no se quede en blanco mientras escribes.

  • F8 / Shift+F8 — registro de error o fatal siguiente / anterior.
  • Ctrl+G — ir a una hora concreta (UTC, con calendario emergente).
  • Haz clic en una barra de la línea de tiempo para saltar al primer registro de ese intervalo.

Estas tres combinaciones son reasignables por el usuario en la Asignación de atajos (categoría Analizador de registros); las vistas de registro abiertas aplican una reasignación de inmediato y las descripciones emergentes de la barra de herramientas muestran la combinación actual.

Análisis en vivo y cancelación

Los archivos grandes empiezan a mostrar registros en decenas de milisegundos; el análisis continúa en segundo plano y la tabla crece a medida que llegan los registros. Filtrar, desplazarse y F8 funcionan mientras el análisis sigue en marcha. Cerrar la ventana detiene el trabajador de inmediato.

Vista de registros fundidos

Analizador de registros ▸ Abrir registros combinados… te permite investigar un problema que abarca varias fuentes: un registro de cliente más uno de servidor, un registro de aplicación más un diario del sistema, accesos web más errores, etc.

El selector de perfil por archivo

Después de elegir dos o más archivos verás un pequeño diálogo con una fila por archivo y un desplegable de perfil por fila. El desplegable viene preseleccionado comparando el nombre del archivo con los globs de nombre de archivo de cada perfil (sin distinguir mayúsculas). Para un despliegue típico de nginx, access.log elige automáticamente nginx — access log (default combined) y error.log elige nginx — error log. Anula manualmente cualquier fila antes de pulsar Aceptar.

Disposición

  • Barra de herramientas — fichas de nivel, línea de filtro con desplegable de modo, controles de traza (desplegable + Seguir / Borrar), conmutador de diagrama de secuencia, conmutador de vista en paralelo.
  • Tira de línea de tiempo en la parte superior — histograma apilado por fuente, con un carril por fuente, para que puedas ver visualmente las ráfagas correlacionadas.
  • Banner de traza sobre la tabla — franja ámbar que se muestra solo cuando hay un filtro de traza activo: Siguiendo <field> = <value> — N filas en todos los orígenes.
  • Área principal apilada — tres páginas que se cambian desde la barra de herramientas:
    • Tabla (predeterminada): una fila por registro fundido con las columnas Hora / Fuente / Nivel / Registrador / Mensaje; el color de primer plano de la columna Fuente es el color de carril de esa fuente, para que puedas identificar el origen de un vistazo.
    • Diagrama de secuencia — consulta Seguir la traza.
    • Paneles en paralelo — consulta Lado a lado.
  • Panel de detalle bajo la tabla.

Filtros que se componen

En la vista fundida, la cadena de filtros se ejecuta en este orden, componiéndose todos unos sobre otros:

  1. Visibilidad de las fuentes — una casilla en el margen izquierdo de la línea de tiempo, una por carril, junto al nombre y el color de la fuente. Un carril sin marcar conserva su fila, atenuada: tiene que hacerlo, porque esa casilla es la única forma de volver. Haz clic derecho en el margen para Mostrar solo este origen / Mostrar todos los orígenes.
  2. Fichas de nivel — TRACE…FATAL.
  3. Seguir la traza — ver más abajo.
  4. Filtro de texto — Simple / Palabras / Comodines / Expresión regular / Consulta (los mismos modos y comportamiento que en la vista de un solo archivo, aplicados al flujo fundido).

Eso significa que puedes hacer, por ejemplo, level>=ERROR AND status:500 sobre los registros de acceso y de error de nginx a la vez en una única expresión, y además seguir a un solo cliente por ambos: el filtro de traza acota más el conjunto sin romper los filtros de nivel, fuente y texto.

Seguir la traza

  1. Elige una clave de correlación en el desplegable Traza: de la barra de herramientas. Viene sembrado con el conjunto convencional (trace_id / request_id / session_id / correlation_id / span_id / xRequestId) y con cualquier nombre de campo distinto que esté realmente presente en los registros cargados. Escribe un nombre personalizado si hace falta.
  2. Selecciona una fila de la tabla.
  3. Haz clic en Seguir la traza, o haz clic derecho en la fila y elige Seguir la traza: \<field>=\<value> para cualquier clave convencional que lleve el registro (un camino de un solo paso que no necesita el desplegable).

La tabla se filtra de inmediato para dejar solo los registros que comparten el valor de esa clave en todas las fuentes. Haz clic en Borrar la traza para quitar el filtro.

Diagrama de secuencia

Una vez que hay un filtro de traza activo y hay exactamente entre 2 y 4 fuentes visibles, el conmutador Diagrama de secuencia de la barra de herramientas se habilita. Cambia el área principal a un diagrama de carriles fijos:

  • Cada fuente visible es un carril vertical etiquetado en la parte superior con una muestra de color.
  • Una fila por registro, con el tiempo fluyendo de arriba abajo. La marca de tiempo real está a la izquierda, para que no pierdas precisión; las filas son por rango (de altura fija) en lugar de proporcionales al tiempo, porque una traza real tiene ráfagas y pausas largas, y un eje proporcional al tiempo desperdiciaría casi toda la pantalla en las pausas.
  • Un punto de color en el carril de la fuente propietaria, más una flecha gris sutil entre registros consecutivos de carriles distintos, para que veas literalmente la traza rebotando entre sistemas.
  • Ficha de nivel y texto del mensaje a la derecha.

Haz clic en cualquier fila del diagrama para desplazar la tabla subyacente hasta ese registro. Desactiva la acción para volver a la tabla.

Con más de 4 fuentes el diagrama se desactiva y se mantiene la vista de tabla.

Paneles en paralelo

Cuando hay exactamente dos fuentes visibles, el conmutador Lado a lado de la barra de herramientas se habilita. Divide el área principal en dos paneles de tabla —una fuente cada uno— con las posiciones de desplazamiento enlazadas por marca de tiempo: desplaza cualquiera de los dos y el otro se sitúa en el registro más cercano a esa hora o posterior. La deriva entre los relojes de los servidores aparece de forma natural como paneles que se separan.

Los conmutadores de diagrama de secuencia y de vista en paralelo son mutuamente excluyentes (activar uno apaga el otro); ambos vuelven a la vista de tabla cuando el número de fuentes activas sale del intervalo que admiten.

Los conjuntos de rotación son un solo carril

Elegir tres archivos de un mismo conjunto rotado es elegir un solo registro, así que se cargan como un único carril. El selector muestra una fila por carril con sus segmentos listados debajo, del más antiguo al más nuevo, y el carril se etiqueta con el nombre de su archivo más reciente y un recuento de los más antiguos: MxAPILog.txt (+2).

Haz clic derecho en un carril de la línea de tiempo para Mostrar por separado cada archivo rotado y, una vez dividido, Combinar los archivos rotados en un solo carril. La división es una repartición de lo que ya está en memoria, así que no se vuelve a leer nada; pero cambia lo que significa una fila, de modo que la tabla pierde su selección.

Las fuentes deben indicar tiempos comparables

Una fusión coloca registros de varias fuentes sobre un mismo eje, lo cual solo significa algo si todas pueden indicar la misma cantidad de fecha. Un syslog sin año no se puede situar frente a un registro fechado sin inventarse el año, y un registro de compilación sin marcas de tiempo no se puede situar en absoluto. Mezclarlos se rechaza de antemano, con un mensaje que nombra qué fuentes caen en qué grupo. Funde fuentes del mismo tipo, o ábrelas por separado.

Restauración

Una vista fundida vuelve con la sesión. Lo que se guarda es el perfil elegido para cada carril y los archivos a los que ese carril se resolvió; los registros se vuelven a leer en segundo plano, así que la pestaña aparece de inmediato y se va rellenando. Los archivos que han desaparecido y los perfiles que se han borrado se omiten y se anotan en el registro, en lugar de convertirse en una pregunta al arrancar.

Registros nativos del sistema (Windows)

Analizador de registros ▸ Abrir el registro del sistema… consulta el Registro de eventos de Windows sin necesidad de un archivo en el disco. El diálogo pide un canal (Aplicación / Sistema / Seguridad / un nombre personalizado), un nivel mínimo opcional y un tope de registros. El plugin llama al Get-WinEvent | ConvertTo-Json -Compress de PowerShell con el filtro empujado hacia abajo y después analiza la salida NDJSON con el perfil incluido windows-event-log.

La acción solo se registra cuando el equipo tiene realmente una fuente de Registro de eventos de Windows en funcionamiento: en Linux y macOS está genuinamente ausente en lugar de aparecer atenuada.

Las fuentes del registro unificado de macOS y de journald en Linux están previstas y encajan tras la misma interfaz interna, sin cambios en la interfaz de usuario cuando lleguen.

Perfiles

El motor no tiene analizadores integrados con casos especiales. Todos los formatos admitidos —Apache, nginx, syslog, JSON Lines, logfmt, CSV, Registro de eventos de Windows— son un archivo JSON LogProfile que se distribuye en el directorio log-profiles/ de la aplicación. Los perfiles de usuario viven en la carpeta log-profiles/ del directorio de configuración del usuario y anulan por identificador a los incluidos.

Cada perfil describe:

  • modelo de línea — regex, json, logfmt, csv o delimited.
  • marca de tiempo — qué campo, qué formatos estilo strftime se aceptan, la zona horaria de origen, las unidades de época.
  • nivel — qué campo, más una correspondencia de los elementos en bruto con la enumeración canónica Trace / Debug / Info / Warn / Error / Fatal.
  • continuación — cómo se pegan las líneas siguientes al registro actual (una traza de pila de Java se convierte en una entrada, no en 30).
  • campos derivados — campos adicionales calculados mediante un subpatrón sobre un campo existente. Los perfiles incluidos de apache y nginx usan esto para exponer un campo client_ip uniforme, de modo que Seguir la traza en la vista fundida pueda correlacionar los eventos de acceso y de error web del mismo cliente en ambas fuentes.
  • rotación — qué archivos forman un registro lógico, y en qué orden. Consulta Rotación: describir un conjunto de archivos.

No tienes que escribir estos archivos a mano: el editor para ellos —con un capturador de campos, alias estilo grok y un probador de marcas de tiempo en vivo— se describe en Editar perfiles.

Las horas se muestran con la precisión que indica el registro

No todos los registros indican una fecha completa. El syslog de RFC 3164 da un mes, un día y una hora, pero no el año; algunos registros embebidos y hechos en casa dan solo una hora del día; la salida de una compilación no da ninguna.

La columna Hora muestra exactamente lo que decía la línea —13:36:55, Oct 10 14:32:52, o una marca de tiempo completa con UTC— y nunca rellena un hueco con una suposición. Lo mismo vale para la exportación TSV y para la vista previa del editor de perfiles, de modo que un año inventado no pueda salir de la aplicación y confundirse aguas abajo con uno real.

La ordenación, la línea de tiempo y las estadísticas siguen funcionando dentro de un archivo así: las partes que faltan se anclan internamente para que los registros sigan siendo comparables entre sí. Simplemente nunca salen a la superficie.

Editar perfiles

Analizador de registros ▸ Editar perfil… lista todos los perfiles con una insignia de Integrado o Personalizado. Al seleccionar uno, se carga.

Los perfiles integrados son de solo lectura, igual que los temas integrados: el formulario se muestra, pero desactivado, y Clonar es la forma de cambiar uno. Un clon toma un identificador libre, de modo que una copia nunca pueda eclipsar en silencio al perfil del que procede. Nuevo empieza desde cero, Eliminar borra uno de los tuyos, y cambiar de perfil con trabajo sin guardar pregunta antes.

Cuando se importa un perfil cuyo identificador coincide con el de uno integrado, se guarda con un identificador libre en lugar de sustituirlo, y el editor dice cuál.

Rotación: describir un conjunto de archivos

Un registro rotado es un flujo lógico cortado en varios archivos. Un perfil dice qué archivos van juntos con dos nombres; no hace falta nada más y, como solo hay una descripción, no hay nada que pueda contradecirse a sí mismo.

Campo Significado
liveName El archivo en el que se está escribiendo ahora mismo.
rotatedName La forma que toman los archivos más antiguos.
indexOrder Qué extremo de la numeración es el más nuevo.
orderBy De dónde sale el orden. Casi siempre name.

Marcadores de posición

Ambos nombres los aceptan. Fuera de ellos, cada carácter es literal: . es un punto, no «cualquier carácter», y * es un asterisco, no un comodín.

Marcador Significa
%LIVE% El archivo que abrió el usuario. Úsalo cuando el perfil no pueda conocer el nombre de antemano.
%N El número de rotación. Se lee como un número, así que _10 se ordena después de _9 y no entre _1 y _2.
%Y %y Año, de cuatro o dos dígitos. Los años de dos dígitos usan el pivote habitual: 69–99 significan 19xx, 00–68 significan 20xx.
%m %b %B Mes como número, como abreviatura (Jul) o completo (July).
%d %j Día del mes, o día del año.
%H %M %S Hora, minuto, segundo — para esquemas que rotan más de una vez al día.
%% Un signo de porcentaje literal.

Estos son los mismos campos de strftime que usan los formatos de marca de tiempo del perfil, así que no hay un segundo conjunto que aprender.

Una extensión de compresión (.gz, .zip, .bz2, .xz) se trata automáticamente y no debe aparecer en ninguno de los dos nombres: todos los esquemas la añaden al final, después de lo que describa el patrón.

Los tres estados de liveName

Valor Úsalo cuando
%LIVE% Es un perfil de uso general que no puede conocer el nombre: el conjunto se ancla al archivo que se haya abierto.
Un nombre literal, p. ej. access.log El perfil está escrito para una aplicación concreta cuyo archivo en vivo se llama siempre así.
Vacío No hay archivo en vivo sin numerar: todos los archivos están numerados o fechados. IIS y java.util.logging funcionan así.

Ejemplos resueltos

Esquema liveName rotatedName
logrotate %LIVE% %LIVE%.%N
logrotate con dateext %LIVE% %LIVE%-%Y%m%d
Apache / nginx access.log access.log.%N
IIS (vacío) u_ex%y%m%d.log
log4j2 / logback, rotación predeterminada %LIVE% app-%Y-%m-%d-%N.log
Rotación horaria %LIVE% app-%Y-%m-%d-%H.log
java.util.logging (vacío) java%N.log

Cómo se decide el orden

Con orderBy: name —lo predeterminado— decide primero la fecha del nombre, el número desempata dentro de una misma fecha, y un archivo sin número es el que está en vivo y, por tanto, el más nuevo. indexOrder dice en qué sentido corren los números: higher-is-older para logrotate y spdlog, higher-is-newer para Serilog, Boost.Log y todo lo que cuenta hacia arriba a medida que avanza. El nombre por sí solo no puede distinguir ambos casos, y por eso tiene que hacerlo el perfil.

Los demás valores de orderBy existen para conjuntos cuyos números no son de fiar. La rotación cíclica reutiliza para siempre el mismo puñado de números, así que el número es una ranura, no una edad; first-record-time lee en su lugar la primera marca de tiempo de cada archivo, y mtime recurre al sistema de archivos.

Si se elige name y resulta que los nombres no llevan ni fecha ni número, el orden cae al primer registro, después a mtime y después al nombre simple; y la barra de estado dice cuál, porque mtime lo reescriben copiar, descomprimir, restaurar una copia de seguridad o cambiar de rama.

Una fecha en un nombre de archivo nunca se convierte en la marca de tiempo de un registro

Las fechas leídas de los nombres de archivo se usan para una sola cosa: poner los segmentos en orden. Los registros toman siempre sus marcas de tiempo de la línea de la que se analizaron. Un archivo llamado access.log-20260730 sigue conteniendo registros de las horas que indiquen sus propias líneas.

Patrones que se rechazan

Un patrón con dos %N, o con %N pegado directamente a un campo de fecha, se rechaza al cargar el perfil y la rotación se desactiva para él, con el motivo en los diagnósticos. app_%N%Y%m%d.log contra app_1220260730.log se puede leer de varias maneras, y elegir una en silencio desordenaría el conjunto sin nada en pantalla que lo explicara. Pon cualquier carácter literal entre ambos: todos los esquemas del mundo real ya lo hacen.

El editor de perfiles valida ambos nombres mientras escribes, así que un patrón rechazado aparece ahí y no al abrir el archivo.

Dividir por ejecución de la aplicación

Una ejecución es una vida de la aplicación de principio a fin, y no es lo mismo que un archivo: la rotación por tamaño corta una ejecución en varios archivos, y un registro que solo rota por tamaño puede contener varias ejecuciones en un archivo.

Si el registro imprime una línea al arrancar —Volluto logging system started…, Begin file log, el cartel de un framework—, pon una expresión regular que coincida con ella en el runStartMarker del perfil. Hacer clic derecho en un carril de la línea de tiempo ofrece entonces Dividir por ejecución de la aplicación, y cada ejecución se convierte en su propio carril. La entrada solo aparece cuando los registros contienen realmente más de una ejecución.

Sin un marcador, los límites solo se pueden adivinar a partir de los huecos de tiempo, y esa suposición está desactivada de forma predeterminada a propósito. La ejecución es un concepto de los registros de aplicación; nginx, apache, syslog y los registros de contenedores son servicios continuos sin ejecuciones, y una noche tranquila se leería, si no, como cientos de reinicios. Allí donde se usa la suposición, esta se adapta al ritmo propio del registro y se descarta de plano si produce ejecuciones demasiado cortas para ser reales.

Que el tiempo corra hacia atrás dentro de una fuente se trata siempre como un límite y siempre se informa: significa o bien un reinicio, o bien segmentos puestos en el orden equivocado, y ambas cosas merecen saberse.

Temas

Los colores por nivel vienen del tema: el plugin registra una categoría de paleta por nivel canónico, el Editor de temas los expone y cualquier tema puede anularlos. Cambiar de tema actualiza a la vez la columna de nivel, la tira de línea de tiempo, el panel de estadísticas y el diagrama de secuencia.

Véase también

  • Comparar / diff — la ventana de comparación de diferencias en la que están modeladas las ventanas del Analizador de registros.
  • Registro y diagnóstico — el propio archivo de registro del editor (distinto de la vista del Analizador de registros sobre formatos de registro arbitrarios).