Volver al Blog

SmokePing en Docker: monitorización de latencia y pérdida de paquetes con interfaz moderna

📡
SmokePing Docker
Monitorización de latencia y pérdida de paquetes con interfaz moderna

SmokePing tiene una interfaz que parece diseñada para castigarte. La usamos desde hace años: la herramienta es brillante — Tobi Oetiker creó algo que funciona tan bien que sigue siendo relevante décadas después. Pero cada vez que abríamos el panel viajábamos a 2005. En everyWAN fuimos parcheando: un script para alertas de Telegram, un daemon para historial de traceroutes, un frontend que no quemara los ojos. Años de parches. Hasta que un día miramos el Frankenstein que habíamos creado y funcionaba mejor que el original. Lo hemos empaquetado en Docker y lo liberamos hoy.

Qué incluye la imagen

Una imagen Docker lista para producción, misma base que linuxserver/smokeping pero con todo lo que nos faltaba: interfaz web renovada, historial de traceroute, alertas por Telegram y despliegue en un solo contenedor.

Interfaz web moderna

Frontend responsive, navegación clara, usable en móvil. Toda la funcionalidad de SmokePing con una UI que no parece de 2005.

Historial de traceroute

Cada objetivo tiene un panel de traceroute. No solo la ruta actual: historial completo. Filtro por fecha y hora, 365 días de retención por defecto.

Alertas Telegram

Notificaciones en tiempo real: pérdida de paquetes, picos de latencia y cambios de ruta reales. La detección de cambio de ruta distingue proveedores (no solo balanceo interno).

Master / slave

Despliega un master y varios slaves en distintas ubicaciones. Cada slave tiene su propio historial de traceroute. El master agrega la latencia en un solo dashboard.

Quick Start

Un solo comando y en marcha:

docker run -d \
  --name smokeping \
  -p 80:80 \
  --cap-add NET_RAW --cap-add NET_ADMIN \
  -v $(pwd)/config:/config \
  -v $(pwd)/data:/data \
  -e TZ=Europe/Madrid \
  sistemasminorisa/smokeping:latest

Abre http://localhost y ya estás monitorizando. La imagen incluye objetivos de ejemplo (CDN, DNS, etc.) para verlo en marcha; luego sustitúyelos por los tuyos.

Docker Compose y escenarios

Incluimos varios archivos compose según tu escenario:

  • docker-compose.yml — Despliegue standalone, puerto 80
  • docker-compose.swarm.yml — Docker Swarm
  • docker-compose.traefik.yml — Detrás de un Traefik existente
  • docker-compose.full-stack.yml — Incluye Traefik v3
  • docker-compose.slave.yml — Instancia slave para multi-ubicación

Personalización por variables de entorno

Logo, colores, nombre de empresa, intervalos, días de retención del traceroute… todo configurable por variables. No hace falta reconstruir la imagen ni editar archivos dentro del contenedor.

  • TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — Alertas
  • SMOKEPING_LOGO_URL, SMOKEPING_BRAND_NAME, SMOKEPING_TITLE
  • TRACEPING_INTERVAL, TRACEPING_RETENTION_DAYS

Configuración de objetivos (Targets)

Los objetivos se definen en config/Targets con el formato estándar de SmokePing. La jerarquía (+, ++, +++) crea el menú de navegación.

*** Targets ***
probe = FPing
menu = Top
title = Network Monitor

+Production
menu = Production
title = Production Infrastructure

++WebServers
menu = Web Servers
title = Web Server Cluster

+++Primary
menu = Primary
title = Primary Web Server
host = web1.example.com
alerts = bigloss,someloss,rttdetect

+++Secondary
menu = Secondary
host = web2.example.com
alerts = bigloss,someloss

Configuración de alertas

Las alertas se definen en config/Alerts. Pérdida de paquetes, picos de latencia, servicio inaccesible… Asigna alertas a los objetivos con alerts = bigloss,someloss,rttdetect. Para Telegram, configura TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID.

*** Alerts ***
to = |/usr/share/webapps/smokeping/telegram_notify.pl
from = smokeping@localhost

+bigloss
type = loss
pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0%
comment = Packet loss detected (critical)

+someloss
type = loss
pattern = >0%,*12*,>0%,*12*,>0%
comment = Intermittent packet loss

+rttdetect
type = rtt
pattern = <100,<100,<100,<100,<100,<150,>150,>150,>150
comment = Latency spike detected

Modos de traceroute

Por defecto el traceroute usa ICMP. Para hosts detrás de firewalls estrictos puedes cambiar el modo por objetivo con traceroute_mode = tcp o udp.

Modo Protocolo Cuándo usar
icmpICMP EchoPor defecto, funciona en la mayoría de sitios
udpUDPCuando ICMP está bloqueado
tcpTCP SYNHosts detrás de firewalls estrictos

Multi-ubicación (master / slave)

Para monitorizar desde varias ubicaciones: despliega el master con docker-compose.yml, registra los slaves en config/Slaves y config/smokeping_secrets, despliega cada slave con docker-compose.slave.yml (MASTER_URL, SHARED_SECRET) y asigna slaves a los objetivos con slaves = nyc-slave london-slave.

*** Slaves ***
secrets=/config/smokeping_secrets

+nyc-slave
display_name = New York
location = New York, USA
color = 00ff00

+london-slave
display_name = London
location = London, UK
color = 0000ff

Variables de entorno (referencia)

Variable Descripción Por defecto
TZZona horariaUTC
PUID / PGIDID usuario/grupo1000
TELEGRAM_BOT_TOKENToken del bot (@BotFather)
TELEGRAM_CHAT_IDID de chat o canal
SMOKEPING_LOGO_URLURL del logoimages/smokeping.png
SMOKEPING_BRAND_NAMENombre de empresa en pie
SMOKEPING_BRAND_URLWeb de la empresa
SMOKEPING_COLOR_SIDEBAR_BGColor de la barra lateral (hex)#233350
SMOKEPING_TITLETítulo de la páginaSmokePing
SMOKEPING_OWNERNombre del responsableSmokePing Admin
TRACEPING_INTERVALIntervalo de traceroute (segundos)300
TRACEPING_RETENTION_DAYSDías de historial de traceroute365
MASTER_URLURL del master (solo slave)
SHARED_SECRETSecreto compartido (solo slave)

Resolución de problemas

  • Archivo RRD no encontrado al iniciar — Normal. SmokePing crea los ficheros RRD tras el primer ciclo de sondeo (~5 min).
  • El logo no se muestra — Comprueba que SMOKEPING_LOGO_URL sea accesible. Para ficheros locales, monta el volumen y usa una ruta como /config/logo.png.
  • Panel de traceroute vacío — Asegúrate de que el contenedor tenga capacidades NET_RAW y NET_ADMIN. Revisa los logs del daemon de traceroute.
  • El slave no se conecta al master — Comprueba que MASTER_URL sea correcto y accesible desde el slave, y que el secreto coincida en config/smokeping_secrets y SHARED_SECRET.

Créditos

Esta imagen no existiría sin el trabajo de Tobi Oetiker (SmokePing), LinuxServer.io (imagen base Docker) y la comunidad open source.

Enlaces y licencia

Código abierto, PRs bienvenidos. Basado en linuxserver/smokeping y en el SmokePing original de Tobi Oetiker. Licencia MIT.

¿Necesitas ayuda con monitorización de red?

En everyWAN diseñamos y operamos infraestructuras de red y monitorización para empresas.

Contactar con everyWAN

Etiquetas:

Compartir:

Suscríbete a nuestra newsletter

Para recibir historias del mundo IT, novedades de everyWAN y ofertas exclusivas para suscriptores, date de alta a nuestra lista de correo

Minorisa de Sistemas Informaticos y Gestión S.L. © 2026
everyWAN
everyWAN