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 |
|---|---|---|
icmp | ICMP Echo | Por defecto, funciona en la mayoría de sitios |
udp | UDP | Cuando ICMP está bloqueado |
tcp | TCP SYN | Hosts 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 |
|---|---|---|
TZ | Zona horaria | UTC |
PUID / PGID | ID usuario/grupo | 1000 |
TELEGRAM_BOT_TOKEN | Token del bot (@BotFather) | — |
TELEGRAM_CHAT_ID | ID de chat o canal | — |
SMOKEPING_LOGO_URL | URL del logo | images/smokeping.png |
SMOKEPING_BRAND_NAME | Nombre de empresa en pie | — |
SMOKEPING_BRAND_URL | Web de la empresa | — |
SMOKEPING_COLOR_SIDEBAR_BG | Color de la barra lateral (hex) | #233350 |
SMOKEPING_TITLE | Título de la página | SmokePing |
SMOKEPING_OWNER | Nombre del responsable | SmokePing Admin |
TRACEPING_INTERVAL | Intervalo de traceroute (segundos) | 300 |
TRACEPING_RETENTION_DAYS | Días de historial de traceroute | 365 |
MASTER_URL | URL del master (solo slave) | — |
SHARED_SECRET | Secreto 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_URLsigui 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_RAWiNET_ADMIN. Revisa els logs del dimoni traceroute. - El slave no se conecta al master — Comprova que
MASTER_URLsigui correcte i accessible des del slave, i que el secret coincideixi aconfig/smokeping_secretsiSHARED_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