Streaming Telemetry
A read-only, real-time feed of subscriber and session state — delivered over SSH, driven from JSON-RPC, and managed entirely from configuration.
Overview
External collectors, dashboards, and NMS platforms often need live BNG state without polling SNMP or scraping the CLI. AthenaBNG exposes a read-only JSON-RPC feed modelled on the way NETCONF rides over SSH:
show.*queries — the same data the CLI shows (subscriber table, session detail, counters), as structured JSON.monitor.subscribeevent stream — a live push of session events: session up/down, rate changes, and other lifecycle transitions.
Transport: JSON-RPC over SSH
The feed is newline-delimited JSON-RPC 2.0. Internally, abngd serves it on a local Unix socket; an SSH forced-command bridge exposes only the read-only surface to remote collectors.
- No new listener or port — it rides the existing SSH daemon. SSH provides the authentication and encryption.
- Read-only by construction — the bridge forwards only
show.*andmonitor.subscribe; anything else is rejected. A collector cannot change configuration or state. - Per-collector keys — each collector authenticates with its own SSH key, pinned to a restricted forced-command feed. Revoking a collector is removing its key.
Configuration
Telemetry access is declared in the BNG config — add a collector's public key and enable the feed:
set monitoring telemetry enabled true
set monitoring telemetry authorized-keys "ssh-ed25519 AAAA... collector@nms"
commit
On commit (and at startup), abngd reconciles the authorized collector keys so remote access always matches configuration. No manual authorized_keys editing, and no service restart.
Why SSH?
Reusing SSH means the telemetry feed inherits the same authentication, key management, transport encryption, and firewalling you already operate for device access — nothing new to secure, and nothing new to expose. It is the NETCONF model applied to a streaming JSON-RPC feed.