Cisco Nexus Metrics

Cisco Nexus metrics in this repo are available as two sources:

  • Cisco OS receiver-derived system metrics
  • direct cisco-exporter interface byte metrics

The examples in this page are reference templates. Replace the environment-specific values before deployment.

Prerequisites

Ensure that:

  • the upstream Cisco OS receiver or cisco-exporter access is configured
  • the switch connectivity and credentials are validated upstream
  • the Prometheus-compatible endpoints are reachable from the AppDynamics scrape path

Configure the Upstream Cisco OS Receiver

The AppDynamics scrape layer does not connect to the switches directly. It scrapes a Prometheus endpoint exposed by an upstream OpenTelemetry Collector that runs the cisco_os receiver.

The upstream flow for Nexus system metrics is:

  • the OpenTelemetry Collector connects to the switches with the cisco_os receiver
  • the collector exports Prometheus metrics on its Prometheus endpoint
  • Infrastructure Visibility scrapes that Prometheus endpoint

There are two Nexus sources:

  • the cisco_os receiver provides switch-level system, packet, error, and interface-status metrics
  • the cisco-exporter endpoint provides direct interface byte counters

Deploy the collector from the reference config, then replace the environment-specific values before applying:

  • reference config: appd-otlp-collector-template.yaml

  • minimum collector image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.148.0

  • values to replace: switch host IPs, SSH port/username/password (prefer a Secret), collector namespace, and the exposed Prometheus service name

Shared collector with Intersight. This is the same appd-otlp-collector-template.yaml referenced by Cisco Intersight Metrics. The collector runs two pipelines in parallel: metrics (OTLP ingest from intersight-otel) and metrics/cisco-os-metrics (the receiver block below). Both pipelines export to a single Prometheus endpoint exposed as the intersight-appd-prometheus-service:9464 service. Deploy this manifest once; do not stand up a second collector for Nexus. If your environment runs Nexus only, you may rename the Prometheus Service in the manifest before applying.

Template collector receiver block:

CODE
receivers:
  cisco_os:
    collection_interval: 60s
    timeout: 30s
    scrapers:
      system:
        metrics:
          cisco.device.up:
            enabled: true
          system.cpu.utilization:
            enabled: true
          system.memory.utilization:
            enabled: true
      interfaces:
        metrics:
          system.network.io:
            enabled: true
          system.network.errors:
            enabled: true
          system.network.packet.dropped:
            enabled: true
          system.network.packet.count:
            enabled: true
          system.network.interface.status:
            enabled: true
    devices:
      - name: "core-switch-01"
        host: "<switch-ip-1>"
        port: 22
        auth:
          username: "<username>"
          password: "<password>"
      - name: "core-switch-02"
        host: "<switch-ip-2>"
        port: 22
        auth:
          username: "<username>"
          password: "<password>"
Template pipeline and Prometheus exporter block (the preceding receiver is wired into the Cisco OS pipeline. The OTLP pipeline that is used by Intersight runs in parallel inside the same collector):
CODE
exporters:
  prometheus:
    endpoint: 0.0.0.0:9464
    resource_to_telemetry_conversion:
      enabled: true

service:
  pipelines:
    metrics:                       # used by intersight-otel via OTLP 
     receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [prometheus]
    metrics/cisco-os-metrics:
      receivers: [cisco_os]
      processors: [memory_limiter, batch]
      exporters: [prometheus]

Both pipelines export to the intersight-appd-prometheus-service:9464 service. Before enabling AppDynamics scraping, validate http://intersight-appd-prometheus-service.<collector-namespace>.svc.cluster.local:9464/metrics returns the system_network_* families.

Enable Prometheus Scraping for Cisco Nexus

The following are system metrics source examples from this repo:

  • service: intersight-appd-prometheus-service (the shared collector Service from appd-otlp-collector-template.yaml; rename in the manifest if your environment runs Nexus only)
  • namespace: <collector-namespace>
  • port: 9464
  • path: /metrics

Replace these with the Prometheus service name and namespace used by your collector deployment. The service name intersight-appd-prometheus-service is shared with the Intersight path because the same collector serves both pipelines.

Interface byte source:

  • service: cisco-exporter-service
  • namespace: cisco-exporter
  • port: 9362
  • path: /metrics

Configure Machine Agent Ingestion

Infrastructure Visibility Prometheus monitoring loads both Nexus-related exporter files through prometheus-config-template.yaml.

To activate this path:

  • include both Nexus exporter YAML files in the prometheus-exporters ConfigMap
  • ensure that the main include list references both files
  • apply the ConfigMap update and re-run the Infrastructure Visibility Helm upgrade

Before enabling the Cisco OS receiver scrape, update the exporter YAML service discovery fields to the service name and namespace used by your collector deployment.

Exporter YAML Contract

Interface byte metrics are exported from counters:
  • reportDelta: true is required
  • the byte exporter applies a multiplier of 0.00000095367 to publish MB values

Expected AppDynamics Custom Metric Paths

  • Custom Metrics|Network|Nexus|{host_ip}|Transmit Errors
  • Custom Metrics|Network|Nexus|{host_ip}|Transmit Drops
  • Custom Metrics|Network|Nexus|{host_ip}|Receive Errors
  • Custom Metrics|Network|Nexus|{host_ip}|Receive Drops
  • Custom Metrics|Network|Nexus|{host_ip}|Receive Multicast Packets
  • Custom Metrics|Network|Nexus|{host_ip}|Receive Broadcast Packets
  • Custom Metrics|Network|Nexus|All Switches|Interfaces Configured (Total)|{host_ip}
  • Custom Metrics|Network|Nexus|{target}|{name}|{description}_|Transmit Bytes (MB)
  • Custom Metrics|Network|Nexus|{target}|{name}|{description}_|Receive Bytes (MB)
The dashboard-backed byte widgets use the selected interfaces exposed by the JSON assets, not every available interface.

Create Custom Dashboard

The custom dashboard script generates ready-to-import AppDynamics dashboard JSON files from a set of templates. You supply your environment's node names and, optionally, the custom metric path prefixes. The script substitutes them into the templates and writes the JSON files. See Create Custom Dashboards for AI Pods.

Troubleshooting

  • if only the byte widgets fail, check the direct cisco-exporter path first.
  • if only the system widgets fail, check the AppDynamics-side Prometheus endpoint.