InfraGuard

Servidores (series temporales de carga)

Carga, CPU y memoria por servidor como anillos indicadores, más gráficos de series temporales, en la pantalla Infraestructura ▸ Servidores.

Resumen: qué hace

Infraestructura ▸ Servidores (/infra/servers) muestra la carga media · CPU · memoria de cada nodo de servidor registrado desde una perspectiva de series temporales. Mientras que la pantalla Estado capta «el estado de cada nodo en este momento» mediante sondeos en vivo, la pantalla Servidores se centra en «cómo ha evolucionado la carga durante las últimas horas o días». Es una reimplementación de monitoring/part de stats-design (load_average · cpu_usage · memory_usage).

Una tarjeta por nodo:

Las métricas proceden de la tabla heredada server_status (solo lectura). El constructor ServerMetricService acota la consulta a una ventana reciente de seq (evitando un recorrido completo lento) y aplica una caché de 20 segundos. La cuadrícula de tarjetas admite reordenación por arrastre + masonry y se refresca automáticamente mediante sondeo cada 30 segundos.

server_status la rellena el recolector Node run_report.js, que se ejecuta fuera de Laravel con un ciclo de aproximadamente 5 minutos. Por tanto, la resolución del eje temporal es de unos 5 minutos y la pantalla se actualiza por sondeo (no mediante inserción en tiempo real / Reverb).


Cuándo utilizarla

La supervisión de sesión en vivo (con los puntos de servicio de nginx/php/mysql) está en Estado, los gráficos de bytes/paquetes de E/S de red en Tráfico, y la salud de disco y RAID en Almacenamiento y RAID.


Diseño de la pantalla

Barra superior de KPI

La calcula ServerMetricService::kpi().

KPI Significado
Servidores Número total de nodos presentes en la ventana
En línea Nodos que han informado de loadavg en los últimos 2 ciclos de recolección
Fuera de línea Total − en línea
Mayor carga Nodo con la carga de 1 minuto más alta + alias
Mayor CPU Nodo con el CPU% actual más alto + alias
Mayor memoria Nodo con el porcentaje de memoria actual más alto + alias

Selector de range

Selecciona la ventana de visualización (número de puntos de la ventana de seq). La elección se guarda en localStorage (infr:range:infra-servers) y se conserva entre visitas.

range puntos de seq ≈ ventana real (ciclo de 5 min)
1h 12 ~1 hora
6h 72 ~6 horas
24h 288 ~24 horas (predeterminado)
3d 864 ~3 días

range se convierte en «los últimos N ciclos de recolección» (no en un intervalo de tiempo absoluto). Con un ciclo de 5 minutos, 24h ≈ 288 puntos. Un nodo que informa con poca frecuencia puede mostrar una ventana real más corta para el mismo range: la etiqueta de ventana de la parte inferior indica el intervalo real como 24h/6h/45m/2d.

Tarjeta de nodo

┌──────────────────────────────────────────────┐
│ label · alias · IP           online / last Nm │   ← cabecera (etiqueta enriquecida desde infr_instance)
│  ( Load )   ( CPU )   ( MEM )                    │   ← 3 anillos indicadores (valor actual)
│  ▁▂▅▇▅▃  minigráfico (polilínea SVG)            │
│  peak · disk 42% · net out 1,234     [Detalles] │   ← pie
└──────────────────────────────────────────────┘

El borde de la tarjeta y los anillos se pintan con un tono de umbral; la gravedad global de la tarjeta sigue a la peor de las tres métricas.

Métrica good warn crit
Load (1 min) < 8 ≥ 8 ≥ 16
CPU % < 70 ≥ 70 ≥ 90
MEM % < 85 ≥ 85 ≥ 95

El anillo de Load está normalizado de modo que se llena en carga 8 (LOAD_FULL=8), en consonancia con el umbral de warn. En una máquina con muchos núcleos, una carga de 8 no es necesariamente peligrosa, así que lea siempre también el valor absoluto que aparece en el número del centro del anillo.

Detalle expandido (ECharts + estadísticas)

Al pulsar [Detalles] la tarjeta crece en vertical; masonry recoloca automáticamente el cambio de altura.


Cómo usarla

  1. Abra /infra/servers → las tarjetas de nodo se disponen en orden ascendente de alias.
  2. Elija una ventana de observación con el selector range (1h/6h/24h/3d). Vuelve a consultar de inmediato, con independencia del sondeo.
  3. Abra el gráfico de series temporales y la tabla de estadísticas de un nodo con [Detalles].
  4. Pase el cursor por el gráfico para leer los valores de CPU/MEM/Load en un instante concreto mediante la retícula.
  5. Arrastre las tarjetas para llevar arriba los nodos que más vigila: el orden se conserva en localStorage (infr:order:infra-servers).
  6. Use el botón de pantalla completa de la cabecera para ocultar la navegación superior y ver la pantalla en modo panel.

La pantalla se refresca automáticamente cada 30 segundos sondeando /infra/servers/live (sin necesidad de interacción). Esta pantalla no tiene acciones de escritura ni de control: es puramente de observación.

El front-end que sondea decide si hace falta refrescar usando el token de cambio económico rev (= el último seq de server_status). Hasta que llega un nuevo ciclo de recolección, la pantalla no se mueve; eso no significa que esté «congelada», simplemente todavía no hay una instantánea nueva.


Fuentes de datos

La fuente es la tabla heredada server_status (BD MAIN, esquema clave-valor con part, solo lectura). Interpreta directamente la convención de almacenamiento de run_report.js.

part Formato del valor Significado Uso en las series
loadavg "1m 5m 15m" separados por espacios (p. ej. "0.50 0.42 0.38") Cargas medias La serie y el anillo usan solo la carga de 1 minuto; el pie muestra además las de 5/15 min
top "NN%" (p. ej. "3.6%") Uso de CPU en modo usuario Serie/anillo de CPU
free "NN%" Uso de memoria = round(used/total×100) Serie/anillo de MEM
df-data / df- / df-home JSON {p,u,a} Porcentaje de disco (p) · usado (u) · tamaño (a) Distintivo de disco más reciente (prioridad df-data → df- → df-home)
traffic-out numérico Delta de paquetes de salida de red Serie/pie de net

Disciplina de consulta y de modelado:

El registro y las credenciales del recolector run_report.js que rellena server_status se gestionan en Administración ▸ Recolectores.


Acceso

Esquema de niveles: demo=1 · staff=5 · admin=10 (véase Niveles RBAC).


Resolución de problemas y preguntas frecuentes

Solo veo «No hay métricas de servidor.» No hay ninguna instantánea reciente en server_status. Compruebe que el recolector run_report.js está en ejecución y registrado en Recolectores. Verifique también la conexión a la BD heredada (MAIN).

Un nodo aparece como fuera de línea. Significa que no se informó de ningún loadavg en los últimos 2 ciclos de recolección. Compruebe el estado de ejecución de run_report en ese nodo, su reloj (desfase) y la red. La etiqueta relativa last_seen indica cuándo informó por última vez.

Una tarjeta muestra un alias (p. ej. sol) en lugar de un nombre legible. Ese alias no está registrado en Instancias (infr_instance). Registre la instancia y su name pasará a ser la etiqueta, con ip_public/ip_private mostrados como IP.

El distintivo de disco está vacío. Ese nodo no informó de ninguno de df-data/df-/df-home en el formato JSON {p,u,a}. Para ver el uso de disco detallado y la salud del RAID, utilice Almacenamiento y RAID.

El anillo de Load parece siempre lleno. El anillo de Load se normaliza con un techo de carga 8. En servidores con muchos núcleos, una carga de 8 puede ser normal, así que juzgue por el valor absoluto que aparece en el centro del anillo. No concluya que hay peligro basándose solo en los umbrales de tono de color (warn 8 / crit 16).

Sondea cada 30 s pero no cambia nada. O bien (1) todavía no ha llegado un nuevo ciclo de recolección (~5 min), o bien (2) está dentro de la ventana de caché de 20 segundos. Confirme las actualizaciones reales mediante stamp, la etiqueta de ventana y rev (el último seq).

He puesto range en 3d, pero la ventana parece corta. range significa «los últimos N ciclos», de modo que un nodo que recolecta con poca frecuencia tiene un intervalo real corto. La etiqueta de ventana inferior muestra el intervalo real (45m/6h/2d). El techo de número de puntos es 1000.


Contenido relacionado

서버 — 부하·CPU·메모리 시계열
서버 — 부하·CPU·메모리 시계열
카드를 펼친 결합 선그래프
카드를 펼친 결합 선그래프