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_osreceiver - the collector exports Prometheus metrics on its Prometheus endpoint
- Infrastructure Visibility scrapes that Prometheus endpoint
There are two Nexus sources:
- the
cisco_osreceiver provides switch-level system, packet, error, and interface-status metrics - the
cisco-exporterendpoint 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:
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>"
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 fromappd-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-exportersConfigMap - 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
exporter-yamls/ciscoos-receiver-nexus-system-metrics.yamlexporter-yamls/cisco-exporter-nexus-interface-bytes.yaml- key system metrics:
system_network_errors_totalsystem_network_packet_dropped_totalsystem_network_packet_count_totalsystem_network_interface_status_ratio
- key byte metrics:
cisco_interface_transmit_bytescisco_interface_receive_bytes
- custom metric family:
Custom Metrics|Network|Nexus|...
reportDelta: trueis required- the byte exporter applies a multiplier of
0.00000095367to publish MB values
Expected AppDynamics Custom Metric Paths
Custom Metrics|Network|Nexus|{host_ip}|Transmit ErrorsCustom Metrics|Network|Nexus|{host_ip}|Transmit DropsCustom Metrics|Network|Nexus|{host_ip}|Receive ErrorsCustom Metrics|Network|Nexus|{host_ip}|Receive DropsCustom Metrics|Network|Nexus|{host_ip}|Receive Multicast PacketsCustom Metrics|Network|Nexus|{host_ip}|Receive Broadcast PacketsCustom 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)
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.