docker.recipes

SmokePing Network Latency

intermediate

SmokePing latency monitoring tool for tracking network performance.

Overview

SmokePing is a mature network latency measurement and monitoring system originally developed by Tobias Oetiker that continuously tracks round-trip times and packet loss to multiple network targets. The tool creates detailed historical graphs showing network performance trends over time, making it invaluable for identifying patterns in connectivity issues, service degradation, and infrastructure problems that might otherwise go unnoticed until they become critical. This implementation uses the LinuxServer.io containerized version, which includes a web interface for viewing interactive graphs and managing monitoring configurations. SmokePing operates by sending ICMP ping packets or other probe types to configured targets at regular intervals, collecting response times and calculating statistics like minimum, maximum, average, and median latency values. The system excels at detecting network quality issues that simple uptime monitoring misses, such as intermittent packet loss, jitter, and gradual performance degradation that could indicate failing network equipment or ISP routing problems. This monitoring solution is particularly valuable for network administrators managing multi-site deployments, ISP service level agreement verification, and anyone requiring detailed historical analysis of network connectivity patterns rather than simple up/down status monitoring.

Key Features

  • Multi-target ping monitoring with configurable intervals and probe counts per measurement cycle
  • Interactive web-based RRDtool graphs displaying latency trends, packet loss patterns, and statistical distributions
  • Smoke-style latency distribution visualization showing response time spread and consistency over time
  • Support for multiple probe types including ICMP ping, TCP connect tests, DNS queries, and HTTP response monitoring
  • Configurable alert thresholds with email notifications for packet loss and latency threshold violations
  • Hierarchical target organization allowing logical grouping of monitored hosts by location, service type, or importance
  • Historical data retention with automatic data aggregation for long-term trend analysis and capacity planning
  • Master-slave architecture support for distributed monitoring across multiple network segments

Common Use Cases

  • 1ISP service level agreement monitoring to verify contracted uptime and latency guarantees with historical evidence
  • 2Multi-site corporate network monitoring to identify WAN link quality issues between office locations
  • 3Cloud service provider performance tracking to compare response times across different regions and providers
  • 4Home lab network troubleshooting to identify intermittent connectivity issues with specific internet services
  • 5Managed service provider client reporting to demonstrate network performance metrics and identify customer-side issues
  • 6Critical application dependency monitoring to track connectivity quality to essential third-party services and APIs
  • 7Network equipment lifecycle management using latency trend analysis to predict hardware failures before complete outages

Prerequisites

  • Docker host with at least 512MB available RAM for RRDtool graph generation and data processing
  • Network configuration allowing ICMP ping packets outbound to target hosts for basic monitoring functionality
  • Port 8080 available on the Docker host for accessing the SmokePing web interface and graph displays
  • Basic understanding of network addressing and ping concepts for configuring meaningful monitoring targets
  • Sufficient disk space for long-term RRD database storage, typically 10-50MB per monitored target annually
  • Time zone environment variable configured correctly for accurate graph timestamps and alert scheduling

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 smokeping:
3 image: linuxserver/smokeping:latest
4 container_name: smokeping
5 environment:
6 - PUID=1000
7 - PGID=1000
8 - TZ=${TZ}
9 volumes:
10 - smokeping_config:/config
11 - smokeping_data:/data
12 ports:
13 - "8080:80"
14 restart: unless-stopped
15 networks:
16 - smokeping-network
17
18volumes:
19 smokeping_config:
20 smokeping_data:
21
22networks:
23 smokeping-network:
24 driver: bridge

.env Template

.env
1# SmokePing
2TZ=UTC

Usage Notes

  1. 1UI at http://localhost:8080
  2. 2Edit Targets file in config
  3. 3Historical latency graphs
  4. 4Packet loss visualization
  5. 5Configure alerts

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 smokeping:
5 image: linuxserver/smokeping:latest
6 container_name: smokeping
7 environment:
8 - PUID=1000
9 - PGID=1000
10 - TZ=${TZ}
11 volumes:
12 - smokeping_config:/config
13 - smokeping_data:/data
14 ports:
15 - "8080:80"
16 restart: unless-stopped
17 networks:
18 - smokeping-network
19
20volumes:
21 smokeping_config:
22 smokeping_data:
23
24networks:
25 smokeping-network:
26 driver: bridge
27EOF
28
29# 2. Create the .env file
30cat > .env << 'EOF'
31# SmokePing
32TZ=UTC
33EOF
34
35# 3. Start the services
36docker compose up -d
37
38# 4. View logs
39docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/smokeping-latency/run | bash

Troubleshooting

  • Targets showing constant 100% packet loss: Verify ICMP ping is allowed through host firewall and Docker networking configuration supports outbound ping packets
  • Graphs not updating or showing old data: Check container logs for RRDtool permissions errors and ensure data volume has sufficient disk space for database updates
  • Web interface displaying 'Permission denied' errors: Verify PUID and PGID environment variables match the user ownership of mounted config and data volumes
  • Specific targets timing out while others work: Examine target host firewall rules and network ACLs that might block ICMP from the Docker container's IP address
  • Alert emails not sending: Configure SMTP settings in the SmokePing configuration file and verify network connectivity to the specified mail server
  • High CPU usage during graph generation: Reduce the number of simultaneous targets or increase measurement intervals in the Targets configuration file

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space