Cómo crear un panel de métricas del servidor de MU
Monta un panel de métricas completo para tu servidor de MU Online, cubriendo jugadores online, salud de la máquina, economía del juego y alertas automáticas de seguridad.
No puedes administrar lo que no logras medir. Muchos servidores de MU Online se gestionan a ciegas: el admin solo descubre que la máquina está sobrecargada cuando los jugadores empiezan a quejarse del lag, o solo percibe una duplicación de ítems cuando la economía ya colapsó. Un panel de métricas re
No puedes administrar lo que no logras medir. Muchos servidores de MU Online se gestionan a ciegas: el admin solo descubre que la máquina está sobrecargada cuando los jugadores empiezan a quejarse del lag, o solo percibe una duplicación de ítems cuando la economía ya colapsó. Un panel de métricas resuelve esto transformando el estado del servidor en números visibles e históricos, permitiendo actuar antes de que el problema se vuelva crisis.
En este tutorial vas a montar un panel de métricas práctico combinando datos de tres fuentes: la máquina (sistema operativo), el proceso del servidor de juego y la base de datos de MU. Vamos a usar un stack abierto y común — un colector de series temporales, un almacenamiento y una capa de visualización — pero los conceptos se aplican a cualquier herramienta. Los nombres de tablas y columnas varían por season/emulador (Season 6, IGCN, MuEMU, X-Files, etc.), así que trata las consultas SQL como EJEMPLO y adáptalas a tu estructura.
Requisitos previos
Antes de empezar, ten a mano:
- Acceso administrativo a la máquina del servidor de juego.
- Una segunda máquina o VPS pequeño para alojar el colector y el panel (recomendado, para no competir por recursos con el juego).
- Acceso de lectura a la base de datos de MU (crea un usuario
metrics_rosolo conSELECT). - Familiaridad básica con SQL y con la edición de archivos de configuración.
- Puertos liberados entre el colector y la máquina del juego (solo en la red interna o vía VPN, nunca expuestos a internet).
Nunca uses la cuenta sa ni el usuario de la aplicación para recolectar métricas. Un usuario de solo lectura dedicado limita el daño en caso de que las credenciales del panel se filtren.
Paso 1 — Definir qué medir
Antes de instalar cualquier herramienta, decide qué preguntas necesita responder el panel. Un error común es recolectar todo y no mirar nada. Divide las métricas en cuatro categorías:
- Salud de la máquina: CPU, memoria, disco, red, uptime.
- Salud del servicio de juego: procesos del GameServer/ConnectServer vivos, latencia de login, colas.
- Actividad de los jugadores: cuentas online, personajes creados, distribución por mapa.
- Economía y seguridad: zen en circulación, ítems excellent creados por hora, resets por hora, fallas de login.
La categoría de economía y seguridad es la que más diferencia a un panel amateur de uno profesional, porque es allí donde detectas duplicación, bots e invasiones.
Paso 2 — Arquitectura del panel
La arquitectura recomendada tiene tres componentes:
- Colector/exportador: lee métricas de la máquina y de la base y las expone en un formato estandarizado.
- Base de series temporales: almacena los puntos recolectados a lo largo del tiempo.
- Capa de visualización: arma los gráficos y dispara alertas.
Un conjunto popular y gratuito es Prometheus (recolección + almacenamiento) con Grafana (visualización), más un node_exporter para las métricas de máquina y un pequeño script que consulta la base de MU y expone las métricas de juego. La elección exacta es secundaria; lo importante es separar recolección, almacenamiento y visualización.
Paso 3 — Recolectar métricas de máquina
Instala un exportador de métricas de sistema en la máquina del juego. Expone CPU, memoria, disco y red en un endpoint que el colector lee periódicamente. Del lado del colector, configura un objetivo apuntando a ese endpoint, accesible solo por la red interna:
scrape_configs:
- job_name: 'mu-maquina'
scrape_interval: 15s
static_configs:
- targets: ['10.0.0.5:9100'] # IP interno de la máquina del juego
Con esto ya consigues gráficos de uso de CPU y memoria. Define alertas para un uso sostenido por encima del 85% de CPU o del 90% de disco, que son los cuellos de botella más comunes en servidores de MU bajo evento.
Paso 4 — Recolectar métricas de la base de juego
Aquí está el corazón del panel. Escribe un pequeño exportador que corra consultas SQL periódicas con el usuario metrics_ro y publique los resultados como métricas. Ejemplos de consultas (adapta los nombres de las tablas):
-- Cuentas actualmente online
SELECT COUNT(*) AS online FROM MEMB_STAT WHERE ConnectStat = 1;
-- Zen total en circulación (suma de los personajes)
SELECT SUM(CAST(Money AS BIGINT)) AS zen_total FROM Character;
-- Resets realizados en las últimas 24h (si hay columna de log)
SELECT COUNT(*) AS resets_24h
FROM ResetLog
WHERE ResetDate >= DATEADD(HOUR, -24, GETDATE());
Publica cada resultado como una métrica nombrada (por ejemplo, mu_online_accounts, mu_zen_total, mu_resets_24h). Corre las consultas de juego cada 1-5 minutos; consultas pesadas corriendo cada segundo perjudican el rendimiento del juego. Usa siempre índices y evita SELECT * en tablas grandes.
Paso 5 — Montar los paneles visuales
En la capa de visualización, crea dashboards temáticos. Un buen conjunto inicial:
- Visión general: jugadores online, uptime, CPU y memoria en una sola pantalla.
- Economía: zen total, zen creado por hora, ítems excellent generados por hora.
- Seguridad: fallas de login por minuto, cuentas creadas por IP, comandos de GM usados.
- Infraestructura: disco, red, latencia de la base.
Usa gráficos de línea para las tendencias y valores instantáneos (single stat) para el estado actual. Marca los umbrales con colores: verde en lo normal, amarillo en atención, rojo en crítico.
Paso 6 — Configurar alertas
Un panel que nadie mira no previene nada. Configura alertas que empujen la información hacia ti (email, webhook de Discord, Telegram). Ejemplos de reglas útiles:
- CPU por encima del 90% por más de 5 minutos.
- Proceso del GameServer ausente (el online cayó a cero abruptamente).
- Zen total creciendo más de X% en una hora (posible duplicación).
- Más de N fallas de login por minuto viniendo del mismo IP (fuerza bruta).
- Disco con menos del 10% libre.
Tabla de métricas esenciales
| Métrica | Fuente | Intervalo | Por qué importa |
|---|---|---|---|
| Cuentas online | Base de juego | 1 min | Salud y popularidad |
| CPU / memoria | Exportador de máquina | 15-30 s | Anticipa lag y caída |
| Zen en circulación | Base de juego | 5 min | Detecta duplicación e inflación |
| Ítems excellent/hora | Base de juego | 5 min | Detecta exploit de drop |
| Resets/hora | Base de juego | 5 min | Detecta bot de reset |
| Fallas de login/min | Log de acceso | 1 min | Detecta fuerza bruta |
| Disco libre | Exportador de máquina | 1 min | Previene el bloqueo total |
| Uptime del servicio | Chequeo de proceso | 30 s | Detecta crash |
Tabla de umbrales de alerta (ejemplo)
| Señal | Atención (amarillo) | Crítico (rojo) |
|---|---|---|
| CPU sostenida | > 80% | > 90% por 5 min |
| Disco libre | < 20% | < 10% |
| Zen creado/hora | +30% | +100% |
| Fallas de login/min por IP | > 20 | > 60 |
| Jugadores online | caída del 30% | caída a 0 |
Los números de arriba son un EJEMPLO de punto de partida y varían por season/emulador, tamaño de la comunidad y horario. Ajusta los umbrales después de observar el comportamiento normal de tu servidor durante algunos días.
Errores comunes y soluciones
| Problema | Causa probable | Solución |
|---|---|---|
| El panel tumba el rendimiento del juego | Consultas pesadas en alta frecuencia | Reduce la frecuencia y agrega índices |
| Las métricas desaparecen cuando el juego se cae | Colector en la misma máquina | Corre el colector y el panel en un VPS separado |
| Alerta falsa en cada evento | Umbral demasiado fijo | Ajusta los umbrales por horario/carga |
| Nadie ve las alertas | Solo en el panel, sin push | Envíalas por Discord/Telegram/email |
| Credencial del panel con acceso total | Uso de la cuenta de la aplicación | Crea un usuario de solo lectura dedicado |
| Gráficos sin historial | Retención demasiado corta | Aumenta la retención de la base de series |
Buenas prácticas de operación
Documenta el significado de cada panel para que cualquier miembro del equipo entienda una alerta a las 3 de la mañana. Haz backup de las definiciones de los dashboards junto con el resto del servidor. Revisa los umbrales mensualmente, porque la base de jugadores y los eventos cambian lo que es normal. Y trata el panel de seguridad con la misma seriedad que el panel técnico: muchas invasiones y duplicaciones son detectables por anomalías en las métricas de economía antes de cualquier denuncia de jugador.
Lista de verificación de lanzamiento
- Categorías de métricas definidas (máquina, servicio, jugadores, economía)
- Usuario
metrics_rode solo lectura creado - Colector y panel corriendo en una máquina separada
- Exportador de máquina instalado y recolectando
- Consultas SQL de juego validadas e indexadas
- Dashboards de visión general, economía, seguridad e infraestructura montados
- Alertas de CPU, disco, online, zen y fallas de login configuradas
- Alertas enviadas por un canal de push (Discord/Telegram/email)
- Umbrales calibrados con el comportamiento normal observado
- Retención de historial adecuada y con backup
- Endpoints de métricas cerrados a internet
- Documentación de los paneles compartida con el equipo
Con el panel en línea, dejas de administrar a ciegas y pasas a anticipar problemas de rendimiento, economía y seguridad. Si todavía estás estructurando el servidor, la guía de cómo crear un servidor de MU Online ayuda a montar la base sobre la cual correrá el monitoreo. Un buen panel no es un lujo: es la diferencia entre reaccionar a incendios y prevenirlos.
Preguntas frecuentes
¿Necesito servidores separados para el panel de métricas?
Idealmente sí. Correr el colector y el panel en la misma máquina del juego compite por recursos y desaparece junto con ella si la máquina se cae. Un VPS pequeño separado es lo ideal.
¿Cuál es la diferencia entre métricas técnicas y métricas de juego?
Las métricas técnicas miden la salud de la máquina (CPU, RAM, disco). Las métricas de juego miden el comportamiento de los jugadores (online, zen circulante, resets por hora). Necesitas ambas.
¿Puedo montar esto sin saber programar?
Parcialmente. Herramientas como Grafana y Prometheus hacen mucho con configuración. Pero recolectar métricas desde dentro del juego generalmente exige consultas SQL, lo que pide algo de conocimiento técnico.
¿Con qué frecuencia debo recolectar métricas?
Las métricas de máquina cada 15-30 segundos; las métricas de juego y economía cada 1-5 minutos. Recolectar demasiado pronto genera ruido y costo de almacenamiento sin ganancia.
¿Las métricas ayudan en la seguridad?
Mucho. Un pico anormal de zen creado, cuentas online o fallas de login suele ser la primera señal de duplicación de ítems, bot o invasión.