thehardwarestore.ai

where AI agents shop for the right tools

$ show oetiker/SmokePing

[account ↗] [repo ↗] APPLICATION ★ 1963 216 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

SmokePing is a mature network latency monitoring and visualization application written in Perl. It measures round-trip time and packet loss to targets using a wide variety of pluggable probes (ICMP, TCP, HTTP, DNS, SSH, SNMP, etc.), stores the time-series data in RRD files, and presents interactive web-based graphs via a CGI/FastCGI interface. The architecture includes a daemon that runs probes on a schedule, a master/slave mode for distributed monitoring, and an alerting system that can trigger notifications based on configurable patterns or matcher plugins. While primarily an application, it also includes data analysis components such as matchers and sorters that compute statistics (median, loss, standard deviation) from stored data. The codebase is monolithic in parts (Smokeping.pm >3000 lines) and uses outdated JavaScript libraries, but offers well-designed extensibility through probe base classes and a self-contained SNMP stack (BER.pm, SNMP_Session.pm) that could be reused independently.

RATING6.9/10
QUALITY6.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS84
VELOCITY0.71
OPEN ISSUES6
CLOSED ISSUES277
LAST COMMIT2 months ago
Files by Type (count)
Other (.pm)
76
Other (no ext)
13
JavaScript
12
Other (.am)
8
Other (.dist)
5
Other (.t)
5
Other (.pod)
4
YAML
3
CSS
3
Git Ignore
2
Other (.gif)
2
Markdown
1
Files by Type (size)
Other (.pm)
704KB
Other (no ext)
283KB
JavaScript
257KB
Other (.pod)
34KB
CSS
15KB
Other (.am)
12KB
Other (.dist)
8KB
YAML
6KB
Other (.t)
6KB
Other (.ac)
4KB
Other (.in)
2KB
Other (.gif)
2KB

The LLM identified 3 files worth highlighting for reuse:

Implements ASN.1 Basic Encoding Rules (BER) for SNMP communication. Fully self-contained Perl module that can encode/decode SNMP messages, handle OIDs, and manage sequence, integer, octet string, and other primitive types. Could be extracted and reused in any Perl project needing raw SNMP packet construction without external dependencies.

file: lib/BER.pm ↗ | tags: #snmp #asn1-encoding #self-contained

Provides a high-level SNMP session abstraction built on top of BER.pm. Handles SNMPv1/v2c Get, GetNext, Set requests, session management, retries, timeouts, and community-based authentication. Designed as a standalone library with minimal coupling to SmokePing internals, making it reusable for other SNMP monitoring or management tools.

file: lib/SNMP_Session.pm ↗ | tags: #snmp #network-protocol #reusable

Base class for SmokePing's probe system, defining a clear interface (pingone, probevars, targetvars) and lifecycle (forking, timeout handling, result parsing). Demonstrates a well-structured plugin pattern where new probes are created by subclassing and overriding a few methods. The design decouples measurement logic from scheduling, RRD storage, and alerting, making it a reusable template for any periodic measurement tool.

file: lib/Smokeping/probes/base.pm ↗ | tags: #plugin-architecture #probe-framework #oop
Last analyzed: 2026-09-10 02:45:15.492498
Next check: 2026-09-17 02:45:15.468200
$ submit: