Cisco Intersight Metrics
Cisco Intersight metrics in this repo are exposed to AppDynamics through a Prometheus-compatible endpoint and mapped into AppDynamics custom metrics for the Intersight dashboard.
The examples in this page are reference templates. Replace the environment-specific values before deployment.
Prerequisites
Ensure that:
- Cisco Intersight API access is configured upstream
- the Intersight collector path is deployed from intersight-otel-appd-values-template.yaml
- network is reachable to the exported Prometheus service
- the Intersight collector pod is deployed first so that Infrastructure Visibility has a live scrape target
Configure the Upstream Intersight Collector
The AppDynamics scrape layer does not query Cisco Intersight directly. It scrapes a Prometheus endpoint exposed by the upstream intersight-otel poller.
The upstream flow for this integration is:
intersight-otelpolls Cisco Intersight APIs- it sends the OpenTelemetry protocol (OTLP) metrics to the downstream collector
- the downstream collector exports Prometheus metrics
- Infrastructure Visibility scrapes that Prometheus endpoint
For the chain to work, you must deploy the following manifests:
-
Downstream OTLP collector (
appd-otlp-collector-template.yaml)- Deploys an OpenTelemetry Collector with two Services:-
appd-otlp-collector-service:4317- OTLP gRPC ingest used byintersight-otel -
intersight-appd-prometheus-service:9464- Prometheus exposition that scraped by Infrastructure Visibility.
This collector is shared with the Cisco Nexus path. See Cisco Nexus Metrics. Deploy this manifest first so OTLP target exists before the upstream collector starts.
-
-
Upstream Intersight collector (
intersight-otel-appd-values-template.yaml)- This deploysintersight-oteland pointsotel_collector_endpointat theappd-otlp-collector-service:4317of downstream collector.
Apply both manifests with kubectl apply -f <file> (these are raw manifests, not Helm charts). Replace these environment-specific values before applying:
- Intersight API key ID and private key (created as Secret
intersight-api-credentialsin the upstream chart's namespace) - organization name
otel_collector_endpoint— must resolve to the downstream Service:http://appd-otlp-collector-service.<collector-namespace>.svc.cluster.local:4317- collector namespace and any non-default Service names
Collector config (intersight-otel.toml):
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: intersight-otel-appd-config
namespace: appdynamics
data:
intersight-otel.toml: |
otel_collector_endpoint = "http://<downstream-otlp-service>.<collector-namespace>.svc.cluster.local:4317"
[[pollers]]
name = "intersight.alarms.count"
otel_attributes = { severity = "critical", "intersight.organization" = "<organization>" }
api_query = "api/v1/cond/Alarms?$filter=Acknowledge eq 'None' and Severity eq 'Critical'&$count=true"
aggregator = "result_count"
interval = 60
[[tspollers]]
name = "ucs_host_temperature"
datasource = "PhysicalEntities"
dimensions = ["host.name"]
field_names = ["intersight.ucs.host.temperature"]
otel_dimension_to_attribute_map = { "host.name" = "intersight.host.name" }
otel_attributes = { "intersight.organization" = "<organization>" }
interval = 60
```
Before AppDynamics scraping, validate that the collector is exposing Prometheus on http://<intersight-prometheus-service>:9464/metrics.
Enable Prometheus Scraping for Cisco Intersight
The following are example values from this repo:
- service:
intersight-appd-prometheus-service - namespace:
appdynamics - port:
9464 - path:
/metrics
Replace these values with the service name and namespace used by your collector deployment.
Configure Machine Agent Ingestion
Infrastructure Visibility Prometheus monitoring reads the exporter include list from prometheus-config-template.yaml and loads the ready-to-use example from exporter-yamls/intersight-exporter.yaml.
To activate this path:
- include the Intersight exporter YAML in the
prometheus-exportersConfigMap - ensure that the main include list references that exporter file
- apply the ConfigMap update and re-run the Infrastructure Visibility Helm upgrade
Before enabling the scrape, update the exporter YAML service discovery fields to the service name and namespace used by your collector deployment.
Exporter YAML Contract
- ready-to-use exporter file:
exporter-yamls/intersight-exporter.yaml - source metrics include:
intersight_advisories_security_countintersight_advisories_security_affected_objectsintersight_advisories_nonsecurity_affected_objectsintersight_alarms_countintersight_ucs_host_temperatureintersight_ucs_host_powerintersight_ucs_network_transmit_rateintersight_ucs_network_receive_rateintersight_ucs_network_utilization_averageintersight_ucs_fan_speed
- custom metric family:
Custom Metrics|Intersight|...
Expected AppDynamics Custom Metric Paths
Custom Metrics|Intersight|Security Advisory CountCustom Metrics|Intersight|Security Advisories AffectedCustom Metrics|Intersight|Non-Security Advisories AffectedCustom Metrics|Intersight|Alarm CountCustom Metrics|Intersight|{intersight_organization}|{severity}|Alarm CountCustom Metrics|Intersight|{intersight_organization}|{intersight_host_name}|Host Temperature (C)Custom Metrics|Intersight|{intersight_organization}|{intersight_name}|Host PowerCustom Metrics|Intersight|{intersight_organization}|{intersight_host_name}|Network Transmit RateCustom Metrics|Intersight|{intersight_organization}|{intersight_host_name}|Network Receive RateCustom Metrics|Intersight|{intersight_organization}|{intersight_host_name}|Network Utilization (%)Custom Metrics|Intersight|{intersight_host_name}|Fan Speed
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
- verify that the upstream Intersight exporter service is reachable
- verify that the organization and host-name labels match the expected path tokens