Tornar al Blog

SmokePing en Docker: monitorització de latència i pèrdua de paquets amb interfície moderna

📡
SmokePing Docker
Monitorització de latència i pèrdua de paquets amb interfície moderna

SmokePing té una interfície que sembla dissenyada per castigar-te. La utilitzem des de fa anys: l'eina és brillant — Tobi Oetiker va crear algo que funciona tan bé que segueix sent rellevant dècades després. Però cada vegada que obríem el panell viatjàvem al 2005. A everyWAN vam anar pegant patches: scripts per alertes Telegram, un dimoni per historial de traceroutes, un frontend que no cremés els ulls. Anys de parxes. Fins que un dia vam mirar el Frankenstein que havíem creat i funcionava millor que l'original. L'hem empaquetat en Docker i el publiquem avui.

Què inclou la imatge

Una imatge Docker preparada per a producció, amb la mateixa base que linuxserver/smokeping però amb tot el que ens faltava: interfície web actualitzada, historial de traceroute, alertes per Telegram i desplegament en un sol contenidor.

Interfície web moderna

Frontend responsive, navegació clara, usable en mòbil. Tota la funcionalitat de SmokePing amb una UI que no sembla del 2005.

Historial de traceroute

Cada objectiu té un panell de traceroute. No només la ruta actual: historial complet. Filtre per data i hora, 365 dies de retenció per defecte.

Alertes Telegram

Notificacions en temps real: pèrdua de paquets, pics de latència i canvis de ruta reals. La detecció de canvi de ruta distingeix proveïdors (no només balanceig intern).

Master / slave

Desplega un master i diversos slaves en diferents ubicacions. Cada slave té el seu propi historial de traceroute. El master agrega les dades de latència en un sol dashboard.

Quick Start

Un sol comandament i en marxa:

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

Obre http://localhost i ja estàs monitoritzant. La imatge inclou objectius d'exemple (CDN, DNS, etc.) per veure-ho en marxa; després substitueix-los pels teus.

Docker Compose i escenaris

Incloem diversos fitxers compose segons el teu escenari:

  • docker-compose.yml — Desplegament standalone, port 80
  • docker-compose.swarm.yml — Docker Swarm
  • docker-compose.traefik.yml — Darrere d'un Traefik existent
  • docker-compose.full-stack.yml — Inclou Traefik v3
  • docker-compose.slave.yml — Instància slave per multi-ubicació

Personalització per variables d'entorn

Logo, colors, nom de la companyia, intervals, dies de retenció del traceroute… tot configurable per variables. No cal reconstruir la imatge ni editar fitxers dins del contenidor.

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

Configuració d'objectius (Targets)

Els objectius es defineixen a config/Targets amb el format estàndard de SmokePing. La jerarquia (+, ++, +++) crea el menú de navegació.

*** 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ó d'alertes

Les alertes es defineixen a config/Alerts. Pèrdua de paquets, pics de latència, servei inaccesible… Assigna alertes als objectius amb alerts = bigloss,someloss,rttdetect. Per Telegram, configura TELEGRAM_BOT_TOKEN i 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

Per defecte es fa traceroute per ICMP. Per hosts darrere de firewalls estrictes pots canviar el mode per objectiu amb traceroute_mode = tcp o udp.

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

Multi-ubicació (master / slave)

Per monitoritzar des de diverses ubicacions: desplega el master amb docker-compose.yml, registra els slaves a config/Slaves i a config/smokeping_secrets, desplega cada slave amb docker-compose.slave.yml (MASTER_URL, SHARED_SECRET) i assigna slaves als objectius amb 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 d'entorn (resum)

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ó de problemes

  • Archivo RRD no encontrado al iniciar — Normal. SmokePing crea els fitxers RRD després del primer cicle de sondeig (~5 min).
  • El logo no se muestra — Comprova que SMOKEPING_LOGO_URL sigui accessible. Per fitxers locals, munta'ls i usa una ruta com /config/logo.png.
  • Panel de traceroute vacío — Assegura't que el contenidor tingui capacitats NET_RAW i NET_ADMIN. Revisa els logs del dimoni traceroute.
  • El slave no se conecta al master — Comprova que MASTER_URL sigui correcte i accessible des del slave, i que el secret coincideixi a config/smokeping_secrets i SHARED_SECRET.

Crèdits

Aquesta imatge no existiria sense el treball de Tobi Oetiker (SmokePing), LinuxServer.io (imatge base Docker) i la comunitat open source.

Enllaços i llicència

Codi obert, PRs benvinguts. Basat en linuxserver/smokeping i en l'SmokePing original de Tobi Oetiker. Llicència MIT.

Necessites ajuda amb monitorització de xarxa?

A everyWAN dissenyem i operem infraestructures de xarxa i monitorització per a empreses.

Contactar amb everyWAN

Etiquetes:

Compartir:

Subscriu-te al nostre butlletí

Per rebre històries del món IT, novetats d'everyWAN i ofertes exclusives per a subscriptors, dona't d'alta a la nostra llista de correu

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