Genie Telemetry

raw JSON →
26.3 verified Mon Apr 27 auth: no python

Genie Telemetry is part of the Cisco Genie framework, providing libraries for telemetry collection, monitoring, and triggering actions on network devices. It wraps pyATS/Genie testbed infrastructure to enable real-time telemetry data extraction and event-driven automation. Current version 26.3. Release cadence is periodic, tied to Genie/pyATS ecosystem updates.

pip install genie-telemetry
error ModuleNotFoundError: No module named 'genie.telemetry.agent'
cause Import path changed in v25+; Agent is now directly in genie.telemetry.
fix
Run 'from genie.telemetry import Agent'.
error genie.telemetry.exceptions.AgentError: Agent 'cpu' failed: 'Device' object has no attribute 'connected'
cause Device not connected before adding agent.
fix
Ensure device.connect() is called before creating TelemetryCollector or Agent.
breaking In genie-telemetry v25+, the 'Agent' class is no longer importable from 'genie.telemetry.agent'; import directly from 'genie.telemetry'.
fix Use 'from genie.telemetry import Agent' instead of 'from genie.telemetry.agent import Agent'.
gotcha The 'TelemetryCollector' must be started and stopped explicitly; forgetting to stop can leave orphaned processes.
fix Always call collector.stop() in a try/finally block or use context manager if available.
deprecated Support for older telemetry protocols (e.g., MDT over gRPC) is being phased out in favor of gNMI.
fix Migrate to gNMI collectors using 'from genie.telemetry.gnmi import GnmiCollector'.
pip install genie-telemetry[full]

Basic usage: load testbed, connect to device, create telemetry collector, add a CPU agent, collect data.

from pyats.topology import loader
from genie.telemetry import TelemetryCollector, Agent

# Load testbed
testbed = loader.load('testbed.yaml')
device = testbed.devices['router1']
device.connect()

# Create telemetry collector
collector = TelemetryCollector(device=device)
collector.add_agent(Agent(device=device, what='cpu'))
collector.start()
results = collector.stop()
print(results)