Define relevant gNMI metrics for Arista EOS #44
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Packet count (weathermap-ng)
Covered by the existing interface counters path — no separate path needed:
interfaces/interface[name=<if>]/state/countersin-unicast-pkts,out-unicast-pktsin-multicast-pkts,out-multicast-pktsin-broadcast-pkts,out-broadcast-pktsin-discards,out-discardsin-errors,out-errorsLink throughput for weathermap-ng visual (thickness/color) is computed in Prometheus via
rate(in-octets[5m])/rate(out-octets[5m]), not from the raw packet counters. The pkt/discard/error counters are for a separate health panel.BGP status — VALIDATED ✅
/network-instances/network-instance[name=default]/protocols/protocol[identifier=BGP][name=BGP]/bgp/neighbors/neighbor[neighbor-address=<ip>]/state/session-statePlus prefix counts:
.../afi-safis/afi-safi[afi-safi-name=<AFI_SAFI>]/state/prefixes/{received,sent,installed}Covers underlay eBGP (IPV4_UNICAST) and overlay EVPN (L2VPN_EVPN).
Confirmed live against the gnmic Prometheus exporter (
curl http://172.16.0.70:9273/metrics):network_instances_network_instance_protocols_protocol_bgp_neighbors_neighbor_state_session_statesource(device),neighbor_neighbor_address(note: double-prefixed due to OpenConfig path flattening, notneighbor_address),network_instance_name,protocol_identifier,protocol_name,subscription_name(eos-bgp)network_instance_nameincludes bothdefaultandgold(VRF/overlay tenant) — multi-tenant EVPN correctly represented10.0.14.1source=core1) — core site BGP collection works end-to-endESTABLISHED,IDLE,ACTIVE,CONNECT,OPENSENT,OPENCONFIRM...), not usable directly by the Prometheus exporter. Transformed to1(UP/ESTABLISHED) /0(anything else) via a gnmicstate-to-intevent-processor (see #48 for the exact processor config) — same transform also applied tooper-status, so link status can use the same 0/1 pattern as BGP node status.System metrics — VALIDATED ✅
Confirmed live:
system_memory_state_used{source="<device>",subscription_name="eos-system"}streaming correctly across all sites (dc-leaf, dc-spine, core, campus).gnmic Prometheus exporter — endpoint confirmed
172.16.0.70:9273(not9804— default assumption was wrong, corrected after live test)curl http://172.16.0.70:9273/metricsVXLAN (MAC count per VNI) — VALIDATED metrics, join is broken, moved out of weathermap
Two independent gnmic subscriptions (VTEP nodes only,
eos-vxlan), joined at query time in Prometheus:1. VLAN→VNI mapping — path
/interfaces/interface[name=Vxlan1]/arista-exp-eos-vxlan:arista-vxlan/vlan-to-vnis/vlan-to-vni. VNI is the sample value, not a label:2. FDB/MAC table entries — path
/network-instances/network-instance/fdb/mac-table/entries/entry. No VNI at all, only VLAN + MAC:3. Join query (currently broken on live data):
Confirmed broken (validated during #48 provisioning, 2026-07-09): the
vlanlabel doesn't correlate between the two metric families on any VTEP. E.g.campus-leaf1's VLAN-to-VNI mapping is keyedvlan="50", but its FDB entries showvlan="60"/"1006"/"1007"/"4090"/"4091"— zero overlap. Likely an Arista internal-VLAN-vs-front-panel-VLAN translation that the OpenConfig paths don't reconcile. Root cause not yet understood — needs investigation (possibly a third path exposing the internal↔front-panel VLAN mapping) before the join can work.Architecture decision: VXLAN MAC/VNI is dropped from the weathermap-ng tooltip entirely (was going to be a decorative
tooltipMetricsentry in #48, removed there). Instead it'll get its own dedicated Grafana table panel, separate from the weathermap — cleaner separation of concerns (weathermap = topology/link-status/traffic only), and a raw table doesn't require the join to be fixed to be useful. No separate issue opened for this yet; tracked here as a note until it's picked up.OSPF (core1/core2)
Deferred — out of scope for this pass. Will revisit in a future iteration.
Validated all paths live against
dc-leaf1(gnmic ... capabilities+gnmic ... get --path <path>) and wired them intoconfigs/gnmic/gnmic-config.yml. Findings:Interfaces — already covered by #43:
/interfaces/interface/state/{oper-status,counters}.BGP — as specified:
.../bgp/neighbors/neighbor/state/session-state.../bgp/neighbors/neighbor/afi-safis/afi-safi/state/prefixes— confirmed bothIPV4_UNICASTandL2VPN_EVPNafi-safi entries exist, each withreceived/sent/installed/received-pre-policy(+ Arista-augmentedbest-paths/best-ecmp-paths).VXLAN — no single OpenConfig path gives "MAC count per VNI" or a dedicated "VTEP tunnel state" leaf. Used instead:
/interfaces/interface[name=Vxlan1]/arista-exp-eos-vxlan:arista-vxlan/vlan-to-vnis/vlan-to-vni(native Arista augment) for the VLAN↔VNI mapping./network-instances/network-instance/fdb/mac-table/entries/entryfor MAC entries, tagged by VLAN.System —
/system/cpus/cpu/state(per-core),/system/memory/state. Both plain OpenConfig, no surprises.Gotcha worth flagging:
oper-statusandsession-stateare string enums (UP/DOWN,ESTABLISHED/IDLE/...). gnmic's Prometheus output silently drops non-numeric leaf values — they were missing from/metricsentirely until I added astate-to-intevent-processor mapping them to1/0. This also fixes a latent gap in the #43 config (oper-status was never actually exported).Full metric list validated end-to-end via
containerlab deploy --node-filter dc-leaf1,gnmic+ scraping:9273/metrics, then torn down cleanly. OSPF still deferred per the issue description.