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 Common errors
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.
Warnings
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'.
Install
pip install genie-telemetry[full] Imports
- TelemetryCollector
from genie.telemetry import TelemetryCollector - Agent wrong
from genie.telemetry.agent import Agentcorrectfrom genie.telemetry import Agent - PushTelemetry
from genie.telemetry import PushTelemetry
Quickstart
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)