Smokeping: Keeping Track of Your Network Latency

In today's digital age, a stable and low-latency network is crucial for both personal and business use. Whether you're streaming high-definition content, conducting video conferences, or running a large-scale e-commerce website, network latency can significantly impact user experience. Smokeping is a powerful and open-source network monitoring tool that helps you keep track of your network latency over time. It provides detailed visualizations and historical data, allowing you to identify trends, troubleshoot issues, and optimize your network performance.

Table of Contents#

  1. What is Smokeping?
  2. How Smokeping Works
  3. Installation and Setup
    • Prerequisites
    • Installation Steps
  4. Configuration
    • Basic Configuration
    • Adding Targets
    • Probe Types
  5. Common Practices
    • Regular Data Backup
    • Monitoring Multiple Networks
  6. Best Practices
    • Using Appropriate Sampling Intervals
    • Security Considerations
  7. Example Usage
    • Analyzing Latency Trends
    • Troubleshooting Network Issues
  8. Conclusion
  9. References

What is Smokeping?#

Smokeping is a network latency monitoring tool developed by Tobi Oetiker and maintained as an open-source project on GitHub. While it is best known for using ICMP echo requests (ping) to measure round-trip time (RTT), Smokeping supports a wide variety of probe types—including DNS queries, HTTP/HTTPS requests, SSH connections, LDAP lookups, and more. This flexibility allows you to monitor latency across many different network services, not just basic connectivity.

Smokeping stores collected data using RRDtool (Round-Robin Database tool) and generates detailed graphs that show latency over time. These graphs are highly customizable and can be used to quickly identify periods of high latency, packet loss, or other network issues. As of 2025, the latest version is 2.9.0, which includes Ajax-based interactive graph zooming, multi-target graphs, and a master/slave deployment model for distributed monitoring.

How Smokeping Works#

Smokeping operates by running a daemon process that sends probes to target hosts at regular intervals. By default, it uses ICMP echo requests via the fping utility, but it can also use DNS queries, HTTP requests, SSH connections, and many other probe types. When a target responds, Smokeping measures the round-trip time (RTT) and records the data.

The tool uses a hierarchical configuration file to define the targets to be monitored and the intervals at which measurements are taken. Smokeping relies on RRDtool for time-series data storage, which efficiently compresses historical data while maintaining accuracy. A built-in CGI web interface displays the collected data as graphs, showing latency trends, packet loss, and jitter over configurable time ranges.

Installation and Setup#

Prerequisites#

  • Operating System: Smokeping can be installed on various Linux distributions such as Ubuntu, Debian, and Fedora. It also supports FreeBSD. For RHEL-based systems, use AlmaLinux or Rocky Linux as CentOS 7 reached end-of-life in June 2024.
  • Dependencies: You need to have Perl, RRDtool, and some Perl modules (e.g., RRDs, Net::Ping, etc.) installed on your system. The fping utility is the default probe and should be installed.
  • Web Server: A web server like Apache or Nginx is required to serve the Smokeping web interface. Alternatively, you can use Docker to avoid manual web server configuration.

Installation Steps#

Ubuntu/Debian#

sudo apt update
sudo apt install smokeping

AlmaLinux/Rocky Linux (RHEL-based)#

sudo dnf install epel-release
sudo dnf install smokeping

Docker provides the simplest way to get Smokeping running without managing dependencies. The LinuxServer.io Smokeping image is a popular choice:

docker create \
  --name=smokeping \
  -p 80:80 \
  -v /path/to/config:/config \
  -v /path/to/data:/data \
  --restart unless-stopped \
  lscr.io/linuxserver/smokeping:latest

After installation (for non-Docker setups), configure the web server to serve the Smokeping web interface. For example, if you are using Apache on Ubuntu:

sudo ln -s /etc/smokeping/apache.conf /etc/apache2/conf-available/smokeping.conf
sudo a2enconf smokeping
sudo systemctl restart apache2

Configuration#

Basic Configuration#

The main configuration file for Smokeping is /etc/smokeping/config. This file contains the global settings for Smokeping, such as the location of the RRD databases, the polling intervals, and the logging options.

Here is a simple example of the basic configuration:

*** General ***
owner = Your Name
contact = [email protected]
mailhost = smtp.example.com
sendmail = /usr/sbin/sendmail
imgcache = /var/cache/smokeping
datadir = /var/lib/smokeping/rrd
piddir = /var/run
cgiurl = http://yourserver/smokeping/smokeping.cgi
syslogfacility = local0

*** Database ***
step = 300
pings = 20

*** Probes ***
+ FPing
binary = /usr/bin/fping

Adding Targets#

To add targets to be monitored, you need to define them in the configuration file. Targets can be organized in a hierarchical structure.

*** Targets ***

+ Local Network
menu = Local Network
title = Local Network Monitoring

++ Router
menu = Router
title = Router Latency
host = 192.168.1.1

++ Server
menu = Server
title = Server Latency
host = 192.168.1.100

In this example, we have a group called "Local Network" that contains two targets: a router and a server.

Probe Types#

Smokeping supports many probe types beyond basic ICMP ping. Some commonly used probes include:

ProbeDescription
FPingDefault ICMP probe using the fping utility
DNSMeasures DNS query response times
Curl / AnotherCurlMeasures HTTP/HTTPS response times
TCPPingMeasures TCP connection latency
SSH / AnotherSSHMeasures SSH connection times
EchoPingHttp / EchoPingHttpsHTTP latency via the echoping utility
LDAPMeasures LDAP query response times
FPing6ICMP probe for IPv6 targets

Multiple probe types can be configured simultaneously in the *** Probes *** section, and different targets can use different probes. See the full probe list for all available options.

Common Practices#

Regular Data Backup#

Since Smokeping stores historical latency data in RRD databases, it is important to regularly back up these databases. You can use tools like rsync to create backups to an external storage device or a remote server.

rsync -avz /var/lib/smokeping/rrd/ /backup/smokeping_rrd/

Monitoring Multiple Networks#

If you have multiple networks to monitor, you can create separate target groups for each network in the Smokeping configuration file. This allows you to easily distinguish between different networks and analyze their performance independently.

*** Targets ***

+ Office Network
menu = Office Network
title = Office Network Monitoring

++ Office Router
menu = Office Router
title = Office Router Latency
host = 10.0.0.1

+ Home Network
menu = Home Network
title = Home Network Monitoring

++ Home Router
menu = Home Router
title = Home Router Latency
host = 192.168.0.1

Best Practices#

Using Appropriate Sampling Intervals#

The sampling interval determines how often Smokeping sends ping requests to the target hosts. A shorter interval provides more detailed data but can also increase the load on the network and the monitoring host. It is important to choose an appropriate sampling interval based on your network requirements. For example, for a critical production network, a shorter interval (e.g., 30 seconds) may be suitable, while for a less critical network, a longer interval (e.g., 5 minutes) may be sufficient.

Security Considerations#

  • Firewall Rules: Ensure that your firewall allows ICMP traffic between the monitoring host and the target hosts. Otherwise, Smokeping will not be able to measure latency using the default FPing probe.
  • Web Interface Security: Protect the Smokeping web interface with authentication and encryption. You can use tools like Apache's htpasswd to create password-protected access to the web interface. For production deployments, consider placing Smokeping behind a reverse proxy with TLS encryption.
sudo htpasswd -c /etc/apache2/.htpasswd smokeping_user

Then, add the following lines to the Apache configuration file for Smokeping:

<Location /smokeping>
    AuthType Basic
    AuthName "Smokeping Access"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Location>

Example Usage#

By looking at the Smokeping graphs, you can analyze the latency trends over time. For example, if you notice a sudden increase in latency for a particular target, it could indicate a network issue such as a congested link or a misconfigured router. You can also compare the latency of different targets to identify which parts of the network are performing poorly.

Troubleshooting Network Issues#

If you are experiencing network problems, Smokeping can help you troubleshoot. For example, if you are having slow internet access, you can check the latency of your router and your ISP's gateway. A high latency or packet loss at the gateway may indicate an issue with your ISP.

Conclusion#

Smokeping is a valuable tool for monitoring network latency. It provides detailed historical data that can help you optimize your network performance, troubleshoot issues, and ensure a stable and low-latency network. With support for dozens of probe types, Docker-based deployments, and a master/slave architecture for distributed monitoring, Smokeping remains a versatile choice for network administrators in 2025. By following the installation, configuration, and best practices outlined in this guide, you can effectively use Smokeping to keep track of your network latency.

References#