# gNMIc configuration for Arista EVPN-VXLAN fabric # Enhanced for Flow Plugin visualization with comprehensive telemetry # # Usage: # gnmic subscribe --config /path/to/gnmic.yaml # # Test connectivity first: # gnmic -a 172.16.0.1:6030 -u admin -p admin --insecure capabilities # # Debug subscriptions: # gnmic -a 172.16.0.1:6030 -u admin -p admin --insecure \ # subscribe --path /interfaces/interface/state --stream-mode sample --sample-interval 10s # ============================================================================ # Global settings # ============================================================================ username: admin password: admin insecure: true encoding: json_ietf log: true debug: true timeout: 30s retry: 10s # ============================================================================ # Target devices - All switches in the fabric # ============================================================================ targets: # -------------------------------------------------------------------------- # Spine switches (AS 65000) # -------------------------------------------------------------------------- spine1: address: 172.16.0.1:6030 subscriptions: - interfaces - system - bgp - routing labels: role: spine fabric_tier: spine device: spine1 asn: "65000" spine2: address: 172.16.0.2:6030 subscriptions: - interfaces - system - bgp - routing labels: role: spine fabric_tier: spine device: spine2 asn: "65000" # -------------------------------------------------------------------------- # Leaf switches - VTEP1 (AS 65001) # -------------------------------------------------------------------------- leaf1: address: 172.16.0.25:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep1 mlag_pair: "1" device: leaf1 asn: "65001" leaf2: address: 172.16.0.50:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep1 mlag_pair: "1" device: leaf2 asn: "65001" # -------------------------------------------------------------------------- # Leaf switches - VTEP2 (AS 65002) # -------------------------------------------------------------------------- leaf3: address: 172.16.0.27:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep2 mlag_pair: "2" device: leaf3 asn: "65002" leaf4: address: 172.16.0.28:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep2 mlag_pair: "2" device: leaf4 asn: "65002" # -------------------------------------------------------------------------- # Leaf switches - VTEP3 (AS 65003) # -------------------------------------------------------------------------- leaf5: address: 172.16.0.29:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep3 mlag_pair: "3" device: leaf5 asn: "65003" leaf6: address: 172.16.0.30:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep3 mlag_pair: "3" device: leaf6 asn: "65003" # -------------------------------------------------------------------------- # Leaf switches - VTEP4 (AS 65004) # -------------------------------------------------------------------------- leaf7: address: 172.16.0.31:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep4 mlag_pair: "4" device: leaf7 asn: "65004" leaf8: address: 172.16.0.32:6030 subscriptions: - interfaces - system - bgp - routing - vxlan - mlag labels: role: leaf fabric_tier: leaf vtep: vtep4 mlag_pair: "4" device: leaf8 asn: "65004" # ============================================================================ # Subscriptions - define what telemetry to collect # ============================================================================ subscriptions: # -------------------------------------------------------------------------- # Interface statistics - for Flow Plugin bandwidth visualization # High-frequency sampling for real-time traffic visualization # -------------------------------------------------------------------------- interfaces: paths: # Interface state and statistics - /interfaces/interface/state/counters - /interfaces/interface/state/oper-status - /interfaces/interface/state/admin-status # Interface configuration for metadata - /interfaces/interface/config/name - /interfaces/interface/config/description # Ethernet-specific counters - /interfaces/interface/ethernet/state/counters mode: stream stream-mode: sample sample-interval: 10s encoding: json_ietf # -------------------------------------------------------------------------- # System information - hostname, uptime, memory, CPU # -------------------------------------------------------------------------- system: paths: - /system/state - /system/memory/state - /system/cpus/cpu/state mode: stream stream-mode: sample sample-interval: 30s encoding: json_ietf # -------------------------------------------------------------------------- # BGP telemetry - for fabric health and EVPN overlay monitoring # -------------------------------------------------------------------------- bgp: paths: # BGP neighbor state - /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state # BGP AFI/SAFI state (including EVPN) - /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/afi-safis/afi-safi/state # BGP global state - /network-instances/network-instance/protocols/protocol/bgp/global/state mode: stream stream-mode: sample sample-interval: 30s encoding: json_ietf # -------------------------------------------------------------------------- # Routing information - for underlay health # -------------------------------------------------------------------------- routing: paths: - /network-instances/network-instance/protocols/protocol/static-routes - /network-instances/network-instance/afts/ipv4-unicast/ipv4-entry mode: stream stream-mode: sample sample-interval: 60s encoding: json_ietf # -------------------------------------------------------------------------- # VXLAN telemetry - for overlay visibility # -------------------------------------------------------------------------- vxlan: paths: - /network-instances/network-instance/vlans/vlan/members/member/state - /network-instances/network-instance/connection-points/connection-point/endpoints mode: stream stream-mode: on_change encoding: json_ietf # -------------------------------------------------------------------------- # MLAG telemetry - for redundancy monitoring # -------------------------------------------------------------------------- mlag: paths: - /lacp/interfaces/interface/state - /lacp/interfaces/interface/members/member/state mode: stream stream-mode: sample sample-interval: 15s encoding: json_ietf # ============================================================================ # Prometheus output configuration # ============================================================================ outputs: prometheus: type: prometheus listen: :9804 path: /metrics metric-prefix: gnmic append-subscription-name: true export-timestamps: true strings-as-labels: true debug: false # Expiration time for metrics (prevents stale data) expiration: 120s # Event processors to clean up metric names event-processors: - trim-prefixes - add-source-label - interface-name-processor # ============================================================================ # Event processors - clean up and transform metrics # ============================================================================ processors: # Remove long path prefixes from metric names trim-prefixes: event-strings: value-names: - ".*" transforms: - path-base: apply-on: "name" # Add source label from device name add-source-label: event-strings: value-names: - ".*" transforms: - replace: apply-on: "name" old: "" new: "" # Process interface names for better readability interface-name-processor: event-strings: value-names: - ".*interface.*" transforms: - replace: apply-on: "value" old: "Ethernet" new: "eth"