Del Caos al Control: Desarrollando un Panel de Tareas y Monitoreo Avanzado para Nuestro ISP

En Sitonline, nuestra misión siempre ha sido ofrecer un servicio de internet estable y confiable. Sin embargo, a medida que nuestra red crece, también lo hace la complejidad de la gestión diaria. Tareas como la facturación, la suspensión de clientes morosos o la notificación de averías, aunque cruciales, pueden consumir un tiempo valioso si no se manejan de forma centralizada.

Por ello, nos embarcamos en un proyecto de desarrollo interno para evolucionar nuestro panel de gestión, con el objetivo de crear un centro de control unificado que nos permitiera no solo ejecutar tareas manuales de forma eficiente, sino también obtener una visión más clara y en tiempo real del estado de nuestra red.

 

El Primer Paso: El Centro de Tareas Manuales (/tareas)

Nuestra primera meta fue crear una sección dedicada a las operaciones manuales. La idea era simple: tener un solo lugar desde donde pudiéramos:

  1. Generar facturas para un grupo de clientes.
  2. Suspender el servicio a clientes con pagos pendientes.
  3. Enviar notificaciones de deuda vía WhatsApp.
  4. Notificar sobre averías en nodos específicos.

El requisito clave era poder filtrar por router. Sin embargo, rápidamente nos dimos cuenta de que aplicar una acción a todos los clientes de un router no era práctico. Una avería puede afectar solo a un nodo, no a todos los clientes conectados al mismo equipo.

La solución fue evolucionar el diseño para incluir un sistema de selección manual mediante checkboxes. Ahora, nuestro personal puede elegir exactamente a qué clientes aplicar cada acción, dándonos una flexibilidad y precisión que antes no teníamos.

 

El Desafío Técnico: El Enigma del Tráfico en 0/0

Una de las funciones más solicitadas era poder ver el consumo en tiempo real de un cliente. Aunque la implementación parecía directa, nos enfrentamos a un problema persistente: la gráfica siempre mostraba 0/0 Mbps.

Aquí comenzó un profundo proceso de depuración:

  1. Búsqueda por Nombre y por IP: Los intentos iniciales de buscar la cola del cliente en el MikroTik por su nombre completo o por su IP en el campo target resultaron ser ineficientes o poco fiables.
  2. La Clave: El ID de Cliente: Analizando nuestros scripts de creación, confirmamos que el name de cada Simple Queue es, por diseño, el id_cliente. Esto nos permitió hacer una búsqueda directa y altamente eficiente.
  3. El Verdadero Problema: La Versión de RouterOS: A pesar de encontrar la cola correctamente, el tráfico seguía en cero. Descubrimos que nuestro router (RouterOS v6.49.7) no soportaba el comando /queue/simple/monitor.

La solución final fue utilizar el comando /queue/simple/print pidiendo específicamente la propiedad rate, que sí devuelve el tráfico en tiempo real en esta versión del sistema operativo. El fragmento de código clave en nuestro api_trafico_cliente.php quedó así:


// LÓGICA FINAL Y CORRECTA PARA SIMPLE QUEUE EN ROS v6.49
$queue_name = $data['id_cliente'];

// Usamos /queue/simple/print, pidiendo las propiedades de tráfico
$traffic = $API->comm('/queue/simple/print', [
    "?name" => $queue_name,
    ".proplist" => "rate,packet-rate"
]);

if (!empty($traffic) && isset($traffic[0]['rate'])) {
    // La propiedad "rate" contiene "upload-rate/download-rate" en bps
    $rates = explode('/', $traffic[0]['rate']);
    if (count($rates) === 2) {
        $response['tx'] = (int)$rates[0]; // Subida
        $response['rx'] = (int)$rates[1]; // Bajada
    }
}

Una vez implementado este cambio, la gráfica cobró vida al instante.

 

Ampliando Capacidades: De Tareas a Diagnóstico y Monitoreo

Con el panel de tareas funcionando, decidimos aplicar la misma tecnología para obtener más información de nuestra red:

  • Listas ARP y Neighbors: Añadimos nuevas vistas para consultar las tablas ARP y de vecinos directamente desde el panel, facilitando el diagnóstico sin necesidad de entrar por WinBox.
  • Monitor de Estado de la Red: Creamos una sección completamente nueva (/estado_red/) que hace ping a todos nuestros equipos desde el propio MikroTik, mostrando su estado "Online" u "Offline". Esto nos permite detectar caídas de forma proactiva. Un ejemplo de la función de ping vía API es:

// Función para hacer ping USANDO LA API DE MIKROTIK
function check_ping_api(RouterosAPI $API, $ip) {
    if (empty($ip) || !filter_var($ip, FILTER_VALIDATE_IP)) {
        return 'IP Inválida';
    }
    
    $ping_result = $API->comm('/ping', [
        'address' => $ip,
        'count' => '1',
        'interval' => '300ms'
    ]);

    if (is_array($ping_result) && isset($ping_result[0]) && !isset($ping_result[0]['timeout'])) {
        return 'Online';
    } else {
        return 'Offline';
    }
}

 

La Pieza Final: Un Dashboard Inteligente

Finalmente, integramos estas nuevas capacidades en nuestro dashboard principal. Lo que antes era una simple página de bienvenida, ahora es un verdadero centro de inteligencia de negocio con tarjetas que muestran:

  • Estado de la Red: Un resumen de routers online/offline.
  • Distribución de Carga: Un conteo de clientes activos por cada router.
  • Rendimiento de Planes: Un top 3 de los planes más populares.
  • Visión Financiera: Un gráfico de barras con los ingresos de los últimos 6 meses.

(Aquí puedes insertar una captura de pantalla de tu dashboard final con las nuevas tarjetas)

Estos datos se obtienen con consultas directas a nuestra base de datos, como esta para obtener la distribución de clientes:


-- OBTENER CLIENTES POR ROUTER --
SELECT
    r.nombre_descriptivo,
    COUNT(c.id_cliente) as total_clientes
FROM clientes c
JOIN routers r ON c.id_router_asignado = r.id_router
WHERE c.estado_cliente = 'Activo'
GROUP BY r.id_router, r.nombre_descriptivo
ORDER BY total_clientes DESC;

 

Conclusión

Este proyecto, desarrollado en colaboración con las capacidades de Gemini Pro, ha transformado nuestro panel de gestión de una simple herramienta de registro a un potente centro de operaciones y monitoreo. Cada función fue diseñada y refinada para resolver problemas reales de nuestro día a día, demostrando el inmenso valor de contar con herramientas personalizadas que se adaptan perfectamente a nuestra red y a nuestra forma de trabajar.

 


¿Necesitas una Solución a tu Medida?

En Sitonline no solo conectamos a nuestros clientes a internet, también construimos las herramientas para hacerlo de la manera más eficiente posible. Si eres un ISP o WISP y enfrentas desafíos similares en la gestión de tu red, sabes lo valioso que es tener un software que trabaje para ti y no en tu contra.

Ofrecemos servicios de desarrollo de software a medida, especializados en sistemas de gestión para proveedores de internet, utilizando tecnologías como PHP, MySQL y la API de MikroTik RouterOS.

¿Buscas optimizar tu facturación, automatizar tareas o tener un mejor monitoreo de tu red?

Contáctanos aquí y hablemos sobre cómo podemos construir la solución perfecta para tu operación.

Tags: php mikrotik isp wisp routeros api panel de gestión automatización monitoreo de red dashboard desarrollo web sitonline
551 vistas

Artículos Relacionados