InfraGuard

Visión general del servicio: panel en vivo curado

Un panel de servicios en vivo y curado donde el operador elige servicios (web, base de datos, sesión, proxy, Docker) como tarjetas de prioridad y los observa mediante un medidor de disponibilidad y series temporales en vivo.

Visión general: qué hace

Visión general del servicio es la primera pantalla del menú principal Servicio (/service): un panel de operaciones en vivo y curado para los servicios (demonios) en ejecución. El operador elige a mano los servicios que le importan y los dispone como tarjetas de prioridad. Cada tarjeta muestra un conjunto de métricas en vivo propio de su tipo, la primera tarjeta web/db/session (la de mayor prioridad) alimenta un medidor de disponibilidad y una franja inferior dibuja las series temporales en vivo de las tarjetas seleccionadas.

Rasgos clave:

Este panel no es una flota de demostración: todo son datos reales. Las fuentes de las métricas son las tablas que los recolectores ya rellenan: infr_web_metric, infr_db_metric, infr_redis_metric e infr_service (Catálogo).

Cuándo usarlo

Disposición

Franja superior de KPI

Resumen para toda la organización calculado por realKpi() (se actualiza con el sondeo de 30 segundos):

KPI Significado Fuente
Tráfico web RPS total + ancho de banda de todos los servicios web registrados WebMetricService::kpi(dashboard())
Carga de BD Suma del último QPS almacenado + total de conexiones de los recolectores access=database DbCollectorService::latest()
Disponibilidad web Disponibilidad en 24 h WebProbeService::availabilityOrPassive() (primero la sonda activa)
Latencia Respuesta media de la sonda (ms) ídem
Incidencias Incidencias abiertas en los últimos 7 días InfrIncident created_at ≥ now-7d

La disponibilidad web y la latencia prefieren la sonda sintética activa. Los contadores de tráfico vts pasivos, por sí solos, diagnostican mal las caídas sin tráfico, los 5xx ocultos tras un 3xx y los reinicios de contador, así que el panel usa los resultados de sonda HTTP reales de WebProbeService. Si la sonda todavía no se ha ejecutado (sin cobertura), se recurre al modo pasivo (web24h).

Medidor de disponibilidad del servicio

Se dibuja a partir de la primera tarjeta web/db/session en orden de prioridad (si ninguno de esos tres tipos está en el panel, se muestra una pista de marcador de posición).

Tipo de tarjeta Forma del medidor Valor central Regla de tono
web rosquilla de códigos de respuesta en 4 segmentos REQ (RPS actual) 2xx=good · 3xx=info · 4xx=warn · 5xx=crit
database arco de saturación de conexiones (conn_pct) QPS ≥90 crit · ≥70 warn · en otro caso good
session arco de tasa de aciertos OPS ≥90 good · ≥70 warn · en otro caso crit

Panel de servicios (cuadrícula de tarjetas)

Los servicios seleccionados se disponen como tarjetas en orden de prioridad. Cada tarjeta muestra un conjunto de KPI distinto según el tipo:

Tipo Demonio por defecto Cabecera (alias) KPI principales
web nginx dominio representativo latencia · RPS · sesiones abiertas (conexiones activas) · peticiones acumuladas en 24 h · tasa de error
database mysql/mariadb/postgres/mongo alias del recolector QPS · plazas (usadas/máx.) · saturación · en ejecución · bloqueo (ms medios de bloqueo de fila) · total de slow · en espera
session redis alias del nodo OPS · tasa de aciertos · clientes (sesiones actuales) · claves · saturación (% de memoria usada)
proxy software_key/proxy alias de la instancia dependencias (+N) · latencia · puertos a la escucha
docker software_key/docker alias de la instancia dependencias (+N) · latencia · puertos a la escucha

Servicio en vivo (serie temporal inferior)

Las tarjetas seleccionadas que tienen serie (web/db/session) se dibujan como minigráficos SVG de área+línea en una cuadrícula de 2 columnas. Cada gráfico lleva una regla (líneas de rejilla verticales + etiquetas HH:MM de inicio/medio/fin) para identificar la línea de tiempo. Un selector de rango (1h · 6h · 1d) en la parte superior cambia la ventana (1h por defecto).

Controles de cabecera

Cómo usarlo

1) Elegir servicios

  1. Haga clic en [Elegir servicios] / [Añadir servicio] en la cabecera del panel para abrir el modal de selección.
  2. El modal agrupa todos los servicios disponibles por tipo (web → database → session → proxy → docker).
  3. Active (✓) o desactive los servicios. La selección se refleja de inmediato en el panel y se guarda en localStorage.

Valor por defecto en la primera visita = se selecciona automáticamente el primer elemento de web, database y session, de modo que el medidor de disponibilidad funcione sin más. Deseleccione en el modal si no los quiere.

2) Ajustar la prioridad

3) Cambiar la ventana temporal

// Ejemplo de petición POST /service/series
{ "keys": ["web:12", "db:db@blue", "session:blue"], "range": "6h" }

Convenio de clave de tarjeta:

web:{infr_web_service.id}
db:{infr_collector.key}      p. ej. db@blue
session:{node_alias}         p. ej. blue
proxy:{infr_service.id}
docker:{infr_service.id}

4) Panel de situación a pantalla completa

Fuentes de datos

Tipo de tarjeta Constructor Tablas reales
web WebMetricService::dashboard() + WebProbeService::overlayStatus() infr_web_metric (contadores vts) · infr_web_check (sonda activa) · infr_web_service
database InfrCollector(access=database) + DbCollectorService::latest()/series() infr_db_metric · infr_collector
session RedisMetricService::dashboard() infr_redis_metric · infr_instance
proxy/docker InfrService(kind IN proxy,container) infr_service · infr_instance
Incidencias del KPI — infr_incident (últimos 7 días)

Fuentes de las series temporales:

Tokens de estado

Token Significado
up correcto
degraded degradado
down caída (fallo real de conexión o sonda)
pending en espera (juicio aplazado, p. ej. por retraso de datos)

Evitar el falso rojo de la tarjeta de BD: en modo de recolección economy, si la recolección se retrasa brevemente y la última muestra tiene más de 5 minutos, statusOf devuelve down por motivo de obsolescencia. La base de datos está bien, pero vería una alarma roja, así que el panel degrada ese down obsoleto a pending y reserva down solo para un fallo real de conexión (ok=false). Además, únicamente cuando hay un usuario presente mirando el panel, si la última muestra tiene más de 45 segundos se toma una muestra puntual mediante ensureFresh(45) (que no hace nada ni abre conexión si el planificador ya está recolectando), y ese muestreador purga la conexión en un bloque finally para evitar fugas.

Acceso

Claves de localStorage:

infr:svcboard:sel:v1        array de claves de servicio seleccionadas (orden = prioridad)
infr:svcboard:h:v1          valores de los deslizadores de altura de panel/vivo
infr:range:service-overview rango de la serie temporal inferior (1h/6h/1d)

Resolución de problemas y preguntas frecuentes

El panel está vacío. Use [Añadir servicio] en la cabecera para colocar los servicios que le importan. Si no hay ningún servicio disponible (los recolectores todavía no han rellenado datos), los grupos del selector pueden parecer vacíos: verifique primero el registro de Recolectores y la cadena de recolección.

No aparece el medidor de disponibilidad. El medidor necesita una primera tarjeta web/db/session en orden de prioridad. Si solo ha elegido proxy/docker, verá una pista de marcador de posición. Coloque al menos una tarjeta web/db/session cerca del principio.

La serie temporal inferior está vacía. Solo las tarjetas web/db/session tienen serie; proxy/docker quedan excluidas. Además, si la tabla de origen no tiene datos en la ventana elegida (1h/6h/1d), el gráfico saldrá vacío.

Una tarjeta de BD está roja pero la base de datos está bien. El retraso de datos se degrada a pending (gris/en espera). Si sigue en down, se trata de un fallo real de conexión: revise la pantalla Base de datos y el estado del recolector access=database en Recolectores.

Las tarjetas persisten al recargar / se ven distintas en otro PC. La selección y el orden pertenecen al localStorage del navegador, no a un ajuste de cuenta en el servidor. Son independientes por navegador y por dispositivo.

Quiero una ventana de 5 minutos. La implementación actual ofrece ventanas de 1h · 6h · 1d (1h por defecto). Para una observación más corta, use pantallas dedicadas como Servidores o Base de datos.

Relacionado

서비스 개요 — 큐레이션 라이브 보드
서비스 개요 — 큐레이션 라이브 보드