SuperAPI AI Directory

gnmi-telemetry

Deployment & operations

View repository

Updated 10-15 17:21

About this skill

gnmi-telemetry

gNMI streaming telemetry operations for multi-vendor network devices. Query device state via structured YANG model paths, subscribe to real-time telemetry streams, apply ITSM-gated configuration changes, browse YANG capabilities, and compare gNMI data against CLI output.

MCP Server

gnmi-mcp — gNMI Streaming Telemetry MCP Server (stdio transport)

Tools Used

  1. gnmi_get — Retrieve device state/config via gNMI Get with YANG paths
  2. gnmi_set — Apply configuration via gNMI Set (requires ServiceNow CR)
  3. gnmi_subscribe — Create SAMPLE or ON_CHANGE telemetry subscriptions
  4. gnmi_unsubscribe — Cancel active subscriptions
  5. gnmi_get_subscriptions — List all active telemetry subscriptions
  6. gnmi_get_subscription_updates — Retrieve latest telemetry updates
  7. gnmi_capabilities — Discover YANG models and encodings on a device
  8. gnmi_browse_yang_paths — Explore YANG path tree under a module
  9. gnmi_compare_with_cli — Compare gNMI vs CLI state for validation
  10. gnmi_list_targets — List configured gNMI target devices

Workflows

Query Device State

  1. gnmi_list_targets — identify available devices
  2. gnmi_capabilities — discover supported YANG models
  3. gnmi_browse_yang_paths — explore available paths
  4. gnmi_get — retrieve structured state data

Monitor Real-Time Telemetry

  1. gnmi_subscribe — create subscription (SAMPLE or ON_CHANGE)
  2. gnmi_get_subscriptions — verify subscription is active
  3. gnmi_get_subscription_updates — poll for latest updates
  4. gnmi_unsubscribe — clean up when monitoring is complete

Apply Configuration Change

  1. gnmi_get — capture current baseline state
  2. gnmi_set — apply change with ServiceNow CR number
  3. gnmi_get — verify change was applied correctly

Validate gNMI vs CLI

  1. gnmi_compare_with_cli — side-by-side comparison with pyATS data

Supported Vendors

  • Cisco IOS-XR (port 57400, JSON_IETF encoding)
  • Juniper (port 32767, JSON_IETF encoding)
  • Arista (port 6030, JSON encoding)
  • Nokia SR OS (port 57400, JSON_IETF encoding)

Required Environment Variables

Variable Description
GNMI_TARGETS JSON array of target devices (name, host, port, credentials, vendor)
GNMI_TLS_CA_CERT CA certificate for TLS server verification
GNMI_TLS_CLIENT_CERT Client certificate for mTLS (optional)
GNMI_TLS_CLIENT_KEY Client private key for mTLS (optional)

Example Usage

Query interface state:

"Show me the interface status on router1 using gNMI"

Subscribe to counters:

"Set up a SAMPLE telemetry subscription for interface counters on switch1 every 30 seconds"

Apply configuration:

"Change the description on GigabitEthernet0/0/0/1 on router1 to 'Uplink to spine' using CR CHG0012345"

Browse capabilities:

"What YANG models does router1 support?"

Safety

  • gNMI Get, Subscribe, Capabilities, and Browse are read-only (safe)
  • gNMI Set is ITSM-gated: requires a ServiceNow Change Request in "Implement" state
  • TLS is mandatory for all connections; mTLS is supported
  • All operations are logged to the GAIT audit trail
  • Maximum 50 concurrent subscriptions (configurable via GNMI_MAX_SUBSCRIPTIONS)

Failure Behavior

  • On a tool error (timeout, unreachable host, malformed response), report the failure and its error message directly to the user rather than fabricating or guessing at results.
  • For a confirmed read-only call, check connectivity and retry once if appropriate. For any call that changes state or sends a message, a timeout does not prove the action failed: inspect current state or delivery status before retrying, preserve the required approval/change gates, and do not repeat an action whose outcome is unknown.