Integrate gnmic into Containerlab topology #43

Closed
opened 2026-06-11 10:34:41 +00:00 by Damien · 1 comment
Owner
  • Add gnmic as a Docker container node in the Containerlab topology file
  • Mount gnmic YAML config via a volume
  • Configure gNMI targets pointing to all Arista EOS nodes (port 6030)
  • Handle TLS (--skip-verify acceptable in lab context)
  • Validate gnmic successfully subscribes and collects data from all devices
  • Configure gnmic Prometheus exporter output
- Add gnmic as a Docker container node in the Containerlab topology file - Mount gnmic YAML config via a volume - Configure gNMI targets pointing to all Arista EOS nodes (port `6030`) - Handle TLS (`--skip-verify` acceptable in lab context) - Validate gnmic successfully subscribes and collects data from all devices - Configure gnmic Prometheus exporter output
Damien added the containerlabtelemetry labels 2026-06-11 10:34:41 +00:00
Author
Owner

Implemented and validated:

  • Added gnmic (ghcr.io/openconfig/gnmic:0.46.0) as a linux kind node in evpn-lab.clab.yml, mgmt IP 172.16.0.70, config mounted read-only from configs/gnmic/gnmic-config.yml.
  • Configured gNMI targets for all 28 arista_ceos nodes (DC, Core, Campus) on port 6030, subscribing to interface oper-status/counters and BGP neighbor state (10s sample interval).
  • Prometheus exporter output on :9273.
  • README updated (management IP table, new "Telemetry" section, repo structure tree).

Deviation from the TLS instruction: these cEOS nodes run management api gnmi with transport grpc default and no SSL profile configured, so gNMI is served in plaintext, not TLS. skip-verify: true caused a TLS handshake failure against the plaintext port. Used insecure: true instead, which matches the current EOS config. Confirmed with the repo owner — keeping insecure: true for now instead of adding self-signed SSL profiles across all 28 EOS configs.

Validation: deployed gnmic + dc-leaf1 only (containerlab deploy --node-filter gnmic,dc-leaf1), confirmed via docker logs that gnmic subscribed successfully with no errors, and confirmed live metrics on the Prometheus exporter (interfaces_interface_state_counters_*, network_instances_..._bgp_neighbors_neighbor_state_* tagged source="dc-leaf1"). Test deployment torn down cleanly afterward (containerlab destroy --cleanup).

Ready to commit.

Implemented and validated: - Added `gnmic` (`ghcr.io/openconfig/gnmic:0.46.0`) as a `linux` kind node in `evpn-lab.clab.yml`, mgmt IP `172.16.0.70`, config mounted read-only from `configs/gnmic/gnmic-config.yml`. - Configured gNMI targets for all 28 `arista_ceos` nodes (DC, Core, Campus) on port `6030`, subscribing to interface oper-status/counters and BGP neighbor state (10s sample interval). - Prometheus exporter output on `:9273`. - README updated (management IP table, new "Telemetry" section, repo structure tree). **Deviation from the TLS instruction**: these cEOS nodes run `management api gnmi` with `transport grpc default` and **no SSL profile configured**, so gNMI is served in plaintext, not TLS. `skip-verify: true` caused a TLS handshake failure against the plaintext port. Used `insecure: true` instead, which matches the current EOS config. Confirmed with the repo owner — keeping `insecure: true` for now instead of adding self-signed SSL profiles across all 28 EOS configs. **Validation**: deployed `gnmic` + `dc-leaf1` only (`containerlab deploy --node-filter gnmic,dc-leaf1`), confirmed via `docker logs` that gnmic subscribed successfully with no errors, and confirmed live metrics on the Prometheus exporter (`interfaces_interface_state_counters_*`, `network_instances_..._bgp_neighbors_neighbor_state_*` tagged `source="dc-leaf1"`). Test deployment torn down cleanly afterward (`containerlab destroy --cleanup`). Ready to commit.
Damien added reference feat/telemetry 2026-07-10 13:01:49 +00:00
Sign in to join this conversation.