Download PDF
Download page Cisco DNA Center Integration.
Cisco DNA Center Integration
Cisco Digital Network Architecture (DNA) offers centralized, intuitive management that makes it fast and easy to design, provision, and apply policies across your network environment. It provides end-to-end network visibility and uses network insights to optimize network performance and deliver improved user and application experience. Integrate Cisco DNA Center with Cisco AIOps to collect the metrics and events associated with your network health and performance, and then correlate them with data collected from other monitoring tools. This correlation helps to better understand the impact of the outages, improve visibility, and expedite remediation of issues.
To collect events and metrics from the Cisco DNA Center cluster to Cisco AIOps, you need to configure a Cisco DNA Center agent and an OTel exporter on Docker containers. The Cisco DNA Center agent collects data from the Cisco DNA Center cluster, transforms and enrich the data, and forwards it to the Kafka topic. The OTel exporter collects the data from the Kafka, transform the data to OpenTelemetry data format, and forwards it to the Cisco Observability Platform. The Cisco Observability Platform leverages the OpenTelemetry protocol as its native MELT telemetry data format.
This page describes the resource requirements, compatibility with Docker®-based software, and the specifications required to configure Cisco DNA Center agent and OTel exporter for collecting DNA and assurance metrics and events, which includes devices, sites, applications, clients, and clusters.
Before You Begin
Before installing Cisco DNA Center agent for Cisco Observability Platform data ingestion, ensure that you meet the following requirements:
- You are connected to the Cisco DNA Center cluster for which you want to collect metrics and events.
- You are connected to the Cisco Observability Platform API by using the OAuth credentials. See Configure Access.
- You are connected to your Kafka brokers and can send messages to the Kafka topics
dnac_network
andraw-events
. - You have sudo privileges on the server to run the Docker commands.
- You must have access to Cisco DNA Center cluster URL and API.
Cisco DNA Center agent extension requires client_id
, client_secret
, and token_url
. Contact your Cisco Observability Platform administrator for OAuth credentials.
Software Requirements
Cisco DNA Center agent and OTel exporter are designed to run in Linux and Windows hybrid or Linux-only clusters. It can run on both Linux and Windows nodes.
Ensure the following:
- Node >= v8.11.2
- Docker >= 18.09.2
- Docker Compose >=2.6.1
Sufficient licenses. See License Management.
Access to containers.cisco.com to pull the Cisco DNA Center agent images for sending metrics to the Cisco Observability Platform:
Name URL Docker https://docs.docker.com/engine/install/ Docker compose https://docs.docker.com/compose/install/
There should not be any Cisco DNA Center agent running on your cluster. If an agent is running, uninstall it. Ensure that the port 9000 is available on your cluster.
Cisco DNA Center Agent and OTel Exporter Files
The following section describes the content of the following files that you need to configure to collect events and metrics from the Cisco DNA Center cluster:
dnac-agent.yaml
otel-exporter-config-local.yaml
docker-compose.yaml
The content of the is dnac-agent.yaml
is as follows:
environment:
ENV: production
packages:
- name: kafka
environment:
BROKERS:
- kafka-1:9092
- kafka-2:9092
- kafka-3:9092
TOPIC: dnac_network
SSL: false
CLIENT_ID: kafka-nodejs-starter
- name: dnac
environment:
HOST: <Your hostname of DNA Center Cluster>
CLUSTER: <Your Cluster ID>
USER: ********
PASSWORD: ***********
GLOBAL_SITE: <Your Global Site ID>
ROUTE: dnac_cluster
DEFAULT_SITENAME: Global
functions:
- name: device
INTERVAL: 900000
environment:
ROUTE: dnac_network
TYPE: device
LOCATION_TYPE: building
KEYS: ['groupNameHierarchy','instanceUuid','instanceTenantId','apEthernetMacAddress','family','hostname','macAddress','reachabilityStatus','role','serialNumber','series','snmpLocation','softwareVersion','upTime','uptimeSeconds']
SITE: SJC23
- name: site
INTERVAL: 900000
siteAnalytics:
ROUTE: site
TYPE: site
LOCATION_TYPE:
KEYS: ["coverageSlaPercentage","coverageMetSlaCount","coverageTotalCount","onboardingAttemptsSlaPercentage","onboardingAttemptsMetSlaCount","onboardingAttemptsTotalCount","roamingAttemptsSlaPercentage","roamingAttemptsMetSlaCount","roamingAttemptsTotalCount","onboardingDurationSlaPercentage","onboardingDurationMetSlaCount","onboardingDurationTotalCount","roamingDurationSlaPercentage","roamingDurationMetSlaCount","roamingDurationTotalCount","connectionSpeedSlaPercentage","connectionSpeedMetSlaCount","connectionSpeedTotalCount"]
- name: issue
INTERVAL: 300000
environment:
ROUTE: dnac_issue
TYPE: issues
TOPIC: raw-events
- name: event
INTERVAL: 300000
environment:
ROUTE: dnac_event
TYPE: events
TOPIC: raw-events
The content of the is otel-exporter-config-local.yaml
is as follows:
events:
source:
kafka:
brokers:
- kafka-1:9092
- kafka-2:9092
- kafka-3:9092
protocol_version: 2.1.1
topic: raw-events
encoding: otlp_json
target:
http:
scheme: https
port:
hostName: XXXXXXXXXXXXXXXXXXXXXXX
path: data/v1/logs
isSecure: true
auth:
type: oauth
attributes:
tokenUrl: https://XXXXXXXXXXXXXXXXXXXXXXX/auth/XXXXXXXXXXXXXXXXXXXXXXX/default/oauth2/token
clientId: XXXXXXXXXXXXXXXXXXXXXXX
clientSecret: XXXXXXXXXXXXXXXXXXXXXXX
grantType: client_credentials
route:
- name: raw_message
attributes: # add them as it is
aiopscore.display_name:
sourceName: testName
aiopscore.ge.severity:
sourceName: severity
aiopscore.ge.type:
sourceName: type
aiopscore.ge.message:
sourceName: message
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: aiopscore:generic_event
aiopscore.ge.source: webhook
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: teyes
attributes: # add them as it is
aiopscore.display_name:
sourceName: testName
aiopscore.http_server.test_id:
sourceName: testId
aiopscore.http_server.test_name:
sourceName: testName
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: aiopscore:http_server_event
aiopscore.http_server.type: http-server
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: ba
attributes:
snow.display_name:
sourceName: service_name
snow.business_application.parent_name:
sourceName: parent_name
snow.business_application.service_name:
sourceName: service_name
snow.business_application.service_owner:
sourceName: service_owner
snow.business_application.service_id:
sourceName: service_id
snow.business_application.service_description:
sourceName: service_description
snow.business_application.service_operational_status:
sourceName: service_operational_status
snow.business_application.service_criticality:
sourceName: service_criticality
snow.business_application.service_updated_on:
sourceName: service_updated_on
snow.business_application.service_profile:
sourceName: service_profile
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
snow.business_application.service_type: business_application
namespace: snow
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: snow:business_application_event
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: major_incident
attributes:
snow.display_name:
sourceName: number
snow.major_incident.number:
sourceName: number
snow.major_incident.source_number:
sourceName: source_number
snow.major_incident.problem_number:
sourceName: problem_number
snow.major_incident.priority:
sourceName: priority
snow.major_incident.state:
sourceName: state
snow.major_incident.business_impact_start:
sourceName: business_impact_start
snow.major_incident.business_impact_end:
sourceName: business_impact_end
snow.major_incident.business_impact_duration:
sourceName: business_impact_duration
snow.major_incident.short_description:
sourceName: short_description
snow.major_incident.cause_code:
sourceName: cause_code
snow.major_incident.opened_at:
sourceName: opened_at
snow.major_incident.closed_at:
sourceName: closed_at
snow.major_incident.resolved_at:
sourceName: resolved_at
snow.major_incident.identified_at:
sourceName: identified_at
snow.major_incident.impacting_profile:
sourceName: impacting_profile
snow.major_incident.causing_profile:
sourceName: causing_profile
snow.major_incident.causing_service_name:
sourceName: causing_so_name
snow.major_incident.impacting_service_name:
sourceName: impacting_so_name
snow.source_name:
sourceName: source_name
snow.source_link:
sourceName: source_link
snow.fiscal_quarter_name:
sourceName: fiscal_quarter_name
snow.major_incident.ttd:
sourceName: ttd
snow.major_incident.ttr:
sourceName: ttr
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
snow.major_incident.type: major_incident
namespace: snow
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: snow:major_incident_event
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: problem
attributes:
snow.display_name:
sourceName: number
snow.problem.number:
sourceName: number
snow.problem.age_group:
sourceName: age_group
snow.problem.root_cause:
sourceName: root_cause
snow.problem.status:
sourceName: status
snow.problem.is_cr_related:
sourceName: is_cr_related
snow.problem.rca_sla_status:
sourceName: rca_sla_status
snow.problem.priority:
sourceName: priority
snow.problem.stage:
sourceName: stage
snow.problem.opened_at:
sourceName: opened_at
snow.problem.closed_at:
sourceName: closed_at
snow.problem.timestamp:
sourceName: timestamp
snow.problem.service_name:
sourceName: so_name
snow.opened_fiscal_quarter_name:
sourceName: opened_fiscal_quarter_name
snow.closed_fiscal_quarter_name:
sourceName: closed_fiscal_quarter_name
snow.source_name:
sourceName: source_name
snow.source_link:
sourceName: source_link
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
snow.problem.type: problem
namespace: snow
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: snow:problem_event
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: change
attributes:
snow.display_name:
sourceName: number
snow.change.number:
sourceName: number
snow.change.ci_item:
sourceName: ci_item
snow.change.state:
sourceName: state
snow.change.short_description:
sourceName: short_description
snow.change.planned_start_date:
sourceName: planned_start_date
snow.change.planned_end_date:
sourceName: planned_end_date
snow.change.outage_start_time:
sourceName: outage_start_time
snow.change.outage_end_time:
sourceName: outage_end_time
snow.change.outage:
sourceName: outage
snow.change.ci_sys_id:
sourceName: ci_sys_id
snow.change.score:
sourceName: score
snow.change.assigned_to:
sourceName: assigned_to
snow.change.environment:
sourceName: environment
snow.change.timestamp:
sourceName: timestamp
snow.fiscal_quarter_name:
sourceName: fiscal_quarter_name
snow.source_name:
sourceName: source_name
snow.source_link:
sourceName: source_link
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
snow.change.type: change
namespace: snow
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: snow:change_event
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: so
attributes: # add them as it is
snow.so.service_id:
sourceName: service_id
snow.so.service_type:
sourceName: service_type
snow.so.service_name:
sourceName: service_name
snow.so.service_description:
sourceName: service_description
snow.so.parent_id:
sourceName: parent_id
appd.fmm.entity.relations.snow.service.service_id:
sourceName: parent_id
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
namespace: snow
telemetry.sdk.name: aiops-fsoc-exporter
appd.fmm.entity.relations.snow.service.service_type: service #relationship
appd.isevent: true
appd.event.type: snow:so_event
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: dnac_event
attributes:
dnac.display_name:
sourceName: eventName
dnac.device.device_family:
sourceName: deviceFamily
dnac.device.id:
sourceName: eventDeviceId
dnac.device.event_name:
sourceName: eventName
dnac.device.status:
sourceName: status
dnac.device.severity:
sourceName: severity
dnac.device.timestamp:
sourceName: timestamp
dnac.device.hostname:
sourceName: deviceName
dnac.device.event_type:
sourceName: eventType
dnac.device.message_type:
sourceName: messageType
dnac.device.device_ip:
sourceName: managementIpAddress
dnac.device.severity_text:
sourceName: severityText
dnac.device.message:
sourceName: message
dnac.device.location:
sourceName: location
dnac.device.category_type:
sourceName: categoryType
dnac.device.cluster_name:
sourceName: cluster_name
appd.fmm.entity.relations.dnac.device.id:
sourceName: eventDeviceId
tagging:
namespace: dnac
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: dnac:dnac_event
dnac.source.type: device
appd.fmm.entity.relations.dnac.source.type: device
- name: dnac_issue
attributes:
dnac.display_name:
sourceName: issueName
dnac.site.issue_id:
sourceName: issueId
dnac.site.id:
sourceName: issueEntityValue
dnac.site.name:
sourceName: issueSource
dnac.site.cluster_name:
sourceName: cluster_name
dnac.site.issue_source:
sourceName: issueSource
dnac.site.issue_category:
sourceName: issueCategory
dnac.site.issue_occurence_count:
sourceName: issue_occurence_count
appd.fmm.entity.relations.dnac.site.id:
sourceName: issueEntityValue
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
namespace: dnac
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: dnac:dnac_issue
dnac.source.type: site
appd.fmm.entity.relations.dnac.source.type: site #relationship
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: appd
attributes:
aiopscore.display_name:
sourceName: attributes_latestEvent_displayName
aiopscore.appd.event_id:
sourceName: attributes_latestEvent_id
aiopscore.appd.policy_name:
sourceName: attributes_policy_name
aiopscore.appd.category:
sourceName: category
aiopscore.appd.event_time:
sourceName: attributes_latestEvent_eventTime
aiopscore.appd.policy_id:
sourceName: attributes_policy_id
aiopscore.appd.application_name:
sourceName: attributes_latestEvent_application_name
aiopscore.appd.tier_id:
sourceName: attributes_latestEvent_tier_id
aiopscore.appd.summary_message:
sourceName: attributes_latestEvent_summaryMessage
aiopscore.appd.deep_link:
sourceName: attributes_latestEvent_deepLink
aiopscore.appd.node_id:
sourceName: attributes_latestEvent_node_id
aiopscore.appd.node_name:
sourceName: attributes_latestEvent_node_name
aiopscore.appd.account_name:
sourceName: attributes_account_name
aiopscore.appd.event_message:
sourceName: event_message
aiopscore.appd.action_id:
sourceName: attributes_action_id
aiopscore.appd.application_id:
sourceName: attributes_latestEvent_application_id
aiopscore.appd.tier_name:
sourceName: attributes_latestEvent_tier_name
severity:
sourceName: attributes_latestEvent_severity
reason:
sourceName: reason
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: aiopscore:appd_event
aiopscore.source.type: appd
severity: INFO
reason: raw text
description: raw message
subtype: text
- name: vm
attributes:
aiopscore.display_name:
sourceName: alarm_name
aiopscore.vmware_event.alarm_name:
sourceName: alarm_name
aiopscore.vmware_event.object:
sourceName: object
aiopscore.vmware_event.object_type:
sourceName: object_type
aiopscore.vmware_event.severity:
sourceName: severity
aiopscore.vmware_event.triggered_time:
sourceName: triggered_time
aiopscore.vmware_event.acknowledged_time:
sourceName: acknowledged_time
aiopscore.vmware_event.acknowledged_by:
sourceName: acknowledged_by
aiopscore.vm.hostname:
sourceName: object
reason:
sourceName: reason
severity:
sourceName: severity
description:
sourceName: description
subtype:
sourceName: subtype
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
appd.isevent: true
appd.event.type: aiopscore:vmware_event
aiopscore.vm.type: vm
severity: INFO
reason: raw text
description: raw message
subtype: text
metrics:
source:
kafka:
brokers:
- kafka-1:9092
- kafka-2:9092
- kafka-3:9092
protocol_version: 2.1.1
topic: dnac_network
encoding: otlp_json
target:
http:
scheme: https
port:
hostName: XXXXXXXXXXXXXXXXXXXXXXX
path: data/v1/metrics
isSecure: true
auth:
type: oauth
attributes:
tokenUrl: https://XXXXXXXXXXXXXXXXXXXXXXX/auth/XXXXXXXXXXXXXXXXXXXXXXX/default/oauth2/token
clientId: XXXXXXXXXXXXXXXXXXXXXXX
clientSecret: XXXXXXXXXXXXXXXXXXXXXXX
grantType: client_credentials
# http:
# scheme: http
# port: 6666
# hostName: localhost
# path: v1/metrics
# isSecure: false
route:
- name: test
attributes: # add them as it is
aiopscore.test.id:
sourceName: id
aiopscore.test.name:
sourceName: name
aiopscore.test.type:
sourceName: type
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
tagging:
telemetry.sdk.name: aiops-fsoc-exporter
- name: teyes
attributes: # add them as it is
aiopscore.http_server.test_id:
sourceName: testId
aiopscore.http_server.test_name:
sourceName: testName
aiopscore.http_server.type:
sourceName: type
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
aiopscore:connect_time:
sourceName: connectTime
otelType: gauge
unit: seconds
isDouble: true
aiopscore:dns_time:
sourceName: dnsTime
otelType: gauge
unit: seconds
isDouble: true
aiopscore:response_time:
sourceName: responseTime
otelType: gauge
unit: seconds
isDouble: true
aiopscore:total_time:
sourceName: totalTime
otelType: gauge
unit: seconds
isDouble: true
aiopscore:wait_time:
sourceName: waitTime
otelType: gauge
unit: seconds
isDouble: true
aiopscore:avg_latency:
sourceName: avgLatency
otelType: gauge
unit: seconds
isDouble: true
aiopscore:number_of_hops:
sourceName: numberOfHops
otelType: gauge
unit: double
isDouble: true
aiopscore:loss:
sourceName: loss
otelType: gauge
unit: double
isDouble: true
aiopscore:jitter:
sourceName: jitter
otelType: gauge
unit: double
isDouble: true
aiopscore:max_latency:
sourceName: maxLatency
otelType: gauge
unit: seconds
isDouble: true
aiopscore:min_latency:
sourceName: minLatency
otelType: gauge
unit: seconds
isDouble: true
aiopscore:updates:
sourceName: updates
otelType: gauge
unit: double
isDouble: true
aiopscore:path_changes:
sourceName: pathChanges
otelType: gauge
unit: double
isDouble: true
aiopscore:reachability:
sourceName: reachability
otelType: gauge
unit: double
isDouble: true
tagging:
telemetry.sdk.name: aiops-fsoc-exporter
- name: vm
attributes: # add them as it is
aiopscore.vm.hostname:
sourceName: hostname
aiopscore.vm.type:
sourceName: type
aiopscore.vm.esxname:
sourceName: esxname
appd.fmm.entity.relations.aiopscore.host.esxname:
sourceName: esxname
appd.fmm.entity.relations.aiopscore.datastore.hostname:
sourceName: hostname
metrics:
aiopscore:system.cpu.used.utilization:
sourceName: agg_cpu_util
otelType: gauge
unit: double
isDouble: true
aiopscore:system.cpu.user.utilization:
sourceName: cpu_usr
otelType: gauge
unit: double
isDouble: true
aiopscore:system.cpu.system.utilization:
sourceName: cpu_sys
otelType: gauge
unit: double
isDouble: true
aiopscore:system.cpu.iowait.utilization:
sourceName: cpu_wait
otelType: gauge
unit: double
isDouble: true
aiopscore:system.memory.used.utilization:
sourceName: mempct
otelType: gauge
unit: double
isDouble: true
aiopscore:system.network.transmit.io_sec:
sourceName: net_send_MBps
otelType: gauge
unit: double
isDouble: true
aiopscore:system.network.receive.io_sec:
sourceName: net_recv_MBps
otelType: gauge
unit: double
isDouble: true
tagging:
appd.fmm.entity.relations.aiopscore.host.type: host
appd.fmm.entity.relations.aiopscore.datastore.type: datastore
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: host
attributes: # add them as it is
aiopscore.host.esxname:
sourceName: esxname
aiopscore.host.type:
sourceName: type
aiopscore.host.ucs:
sourceName: ucs
aiopscore.host.ucs_model:
sourceName: ucs_model
appd.fmm.entity.relations.aiopscore.switch.ucs:
sourceName: ucs
metrics:
aiopscore:system.cpu.used.utilization:
sourceName: esx_cpu_workload_pct
otelType: gauge
unit: double
isDouble: true
aiopscore:system.memory.used.utilization:
sourceName: esx_mem_workload_pct
otelType: gauge
unit: double
isDouble: true
aiopscore:system.memory.available.usage:
sourceName: esx_mem_active_avg_kb
otelType: gauge
unit: double
isDouble: true
aiopscore:system.memory.used.consumed:
sourceName: esx_mem_consumed_avg_kb
otelType: gauge
unit: double
isDouble: true
aiopscore:system.memory.used.usage:
sourceName: esx_mem_host_usage_pct
otelType: gauge
unit: double
isDouble: true
tagging:
appd.fmm.entity.relations.aiopscore.switch.type: switch
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: switch
attributes: # add them as it is
aiopscore.display_name:
sourceName: device_name
aiopscore.switch.device_name:
sourceName: device_name
aiopscore.switch.ucs:
sourceName: device_name
aiopscore.switch.nw_metric_collection_name:
sourceName: nw_metric_collection_name
metrics:
aiopscore:network.device.cpu.5min_avg:
sourceName: cpu_percent
otelType: gauge
unit: double
isDouble: true
tagging:
aiopscore.switch.type: switch
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: network
attributes: # add them as it is
aiopscore.switch.device_name:
sourceName: device_name
aiopscore.switch.type:
sourceName: type
aiopscore.switch.nw_metric_collection_name:
sourceName: nw_metric_collection_name
aiopscore.switch.ucs:
sourceName: ucs
metrics:
aiopscore:network.device.cpu.5min_avg:
sourceName: nw_data_cpu_5_minute_average_percent_n
otelType: gauge
unit: double
isDouble: true
aiopscore:network.device.memory.io.used:
sourceName: nw_data_io_memory_used_perc_n
otelType: gauge
unit: double
isDouble: true
aiopscore:network.device.memory.used:
sourceName: nw_data_processor_memory_used_perc_n
otelType: gauge
unit: double
isDouble: true
aiopscore:network.device.memory.total.used:
sourceName: nw_data_total_memory_used_perc_n
otelType: gauge
unit: double
isDouble: true
aiopscore:network.device.errors:
sourceName: nw_if_data_errors_in_perc_n
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: datastore
attributes: # add them as it is
aiopscore.datastore.hostname:
sourceName: hostname
aiopscore.datastore.datastore:
sourceName: datastore
aiopscore.datastore.type:
sourceName: type
aiopscore.datastore.cluster:
sourceName: cluster
aiopscore.datastore.volume:
sourceName: volume
aiopscore.datastore.svm:
sourceName: svm
metrics:
aiopscore:storage.device.read.data:
sourceName: read_data
otelType: gauge
unit: double
isDouble: true
aiopscore:storage.device.read.latency:
sourceName: read_latency
otelType: gauge
unit: double
isDouble: true
aiopscore:storage.device.read.io_sec:
sourceName: read_ops
otelType: gauge
unit: double
isDouble: true
aiopscore:storage.device.write.data:
sourceName: write_data
otelType: gauge
unit: double
isDouble: true
aiopscore:storage.device.write.latency:
sourceName: write_latency
otelType: gauge
unit: double
isDouble: true
aiopscore:storage.device.write.io_sec:
sourceName: write_ops
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: mongodb
attributes: # add them as it is
aiopscore.mongodb.service.instance.id:
sourceName: mongodb.service.name
aiopscore.source.type:
sourceName: source.type
metrics:
aiopscore:mongodb.storage.size:
sourceName: mongodb.storage.size
otelType: gauge
unit: double
isDouble: true
aiopscore:mongodb.session.count:
sourceName: mongodb.session.count
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: redis
attributes: # add them as it is
aiopscore.redis.service.instance.id:
sourceName: redis.service.name
aiopscore.source.type:
sourceName: source.type
aiopscore.redis.version:
sourceName: redis.version
metrics:
aiopscore:redis.uptime:
sourceName: redis.uptime
otelType: gauge
unit: double
isDouble: true
aiopscore:redis.slaves.connected:
sourceName: redis.slaves.connected
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: elasticsearch_cluster
attributes: # add them as it is
aiopscore.elasticsearch_cluster.cluster.name:
sourceName: elasticsearch_cluster.name
aiopscore.source.type:
sourceName: source.type
metrics:
aiopscore:elasticsearch.os.memory:
sourceName: elasticsearch.os.memory
otelType: gauge
unit: double
isDouble: true
aiopscore:elasticsearch.os.cpu.usage:
sourceName: elasticsearch.os.cpu.usage
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: kafka_cluster
attributes: # add them as it is
aiopscore.kafka_cluster.cluster.name:
sourceName: kafka_cluster.name
aiopscore.source.type:
sourceName: source.type
metrics:
aiopscore:kafka.partition.replicas_in_sync:
sourceName: kafka.partition.replicas_in_sync
otelType: gauge
unit: double
isDouble: true
aiopscore:kafka.partition.replicas:
sourceName: kafka.partition.replicas
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: asg
attributes: # add them as it is
aiopscore.asg.service_id:
sourceName: service_id
aiopscore.asg.service_type:
sourceName: service_type
aiopscore.asg.service_name:
sourceName: service_name
aiopscore.asg.service_description:
sourceName: service_description
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: service
attributes: # add them as it is
aiopscore.service.service_id:
sourceName: service_id
aiopscore.service.service_type:
sourceName: service_type
aiopscore.service.service_name:
sourceName: service_name
aiopscore.service.service_description:
sourceName: service_description
aiopscore.service.parent_id:
sourceName: parent_id
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: so
attributes: # add them as it is
aiopscore.so.service_id:
sourceName: service_id
aiopscore.so.service_type:
sourceName: service_type
aiopscore.so.service_name:
sourceName: service_name
aiopscore.so.service_description:
sourceName: service_description
aiopscore.so.parent_id:
sourceName: parent_id
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: ba
attributes: # add them as it is
aiopscore.ba.service_id:
sourceName: service_id
aiopscore.ba.service_type:
sourceName: service_type
aiopscore.ba.service_name:
sourceName: service_name
aiopscore.ba.service_description:
sourceName: service_description
aiopscore.ba.parent_id:
sourceName: parent_id
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
- name: dnac-device
attributes: # add them as it is
aiopscore.display_name:
sourceName: hostname
aiopscore.device.ap_manager_interface_ip:
sourceName: apManagerInterfaceIp
aiopscore.device.associated_wlc_ip:
sourceName: associatedWlcIp
aiopscore.device.boot_date_time:
sourceName: bootDateTime
aiopscore.device.collection_interval:
sourceName: collectionInterval
aiopscore.device.collection_status:
sourceName: collectionStatus
aiopscore.device.error_code:
sourceName: errorCode
aiopscore.device.error_description:
sourceName: errorDescription
aiopscore.device.family:
sourceName: family
aiopscore.device.hostname:
sourceName: hostname
aiopscore.device.id:
sourceName: id
aiopscore.device.instance_tenant_id:
sourceName: instanceTenantId
aiopscore.device.instance_uuid:
sourceName: instanceUuid
aiopscore.device.interface_count:
sourceName: interfaceCount
aiopscore.device.inventory_status_detail:
sourceName: inventoryStatusDetail
aiopscore.device.last_update_time:
sourceName: lastUpdateTime
aiopscore.device.last_updated:
sourceName: lastUpdated
aiopscore.device.line_card_count:
sourceName: lineCardCount
aiopscore.device.line_card_id:
sourceName: lineCardId
aiopscore.device.location:
sourceName: location
aiopscore.device.location_name:
sourceName: locationName
aiopscore.device.mac_address:
sourceName: macAddress
aiopscore.device.management_ip_address:
sourceName: managementIpAddress
aiopscore.device.memory_size:
sourceName: memorySize
aiopscore.device.platform_id:
sourceName: platformId
aiopscore.device.reachability_failure_reason:
sourceName: reachabilityFailureReason
aiopscore.device.reachability_status:
sourceName: reachabilityStatus
aiopscore.device.role:
sourceName: role
aiopscore.device.role_source:
sourceName: roleSource
aiopscore.device.serial_number:
sourceName: serialNumber
aiopscore.device.series:
sourceName: series
aiopscore.device.snmp_contact:
sourceName: snmpContact
aiopscore.device.snmp_location:
sourceName: snmpLocation
aiopscore.device.software_type:
sourceName: softwareType
aiopscore.device.software_version:
sourceName: softwareVersion
aiopscore.device.tag_count:
sourceName: tagCount
aiopscore.device.tunnel_udp_port:
sourceName: tunnelUdpPort
aiopscore.device.device_type:
sourceName: type
aiopscore.device.up_time:
sourceName: upTime
aiopscore.device.waas_device_mode:
sourceName: waasDeviceMode
metrics:
aiopscore:overall_health:
sourceName: overallHealth
otelType: gauge
unit: double
isDouble: true
aiopscore:memory_score:
sourceName: memoryScore
otelType: gauge
unit: double
isDouble: true
aiopscore:cpu_score:
sourceName: cpuScore
otelType: gauge
unit: double
isDouble: true
aiopscore:noise_score:
sourceName: noiseScore
otelType: gauge
unit: double
isDouble: true
aiopscore:utilization_score:
sourceName: utilizationScore
otelType: gauge
unit: double
isDouble: true
aiopscore:air_quality_score:
sourceName: airQualityScore
otelType: gauge
unit: double
isDouble: true
aiopscore:interference_score:
sourceName: interferenceScore
otelType: gauge
unit: double
isDouble: true
aiopscore:wqe_score:
sourceName: wqeScore
otelType: gauge
unit: double
isDouble: true
aiopscore:free_mbuf_score:
sourceName: freeMbufScore
otelType: gauge
unit: double
isDouble: true
aiopscore:packet_pool_score:
sourceName: packetPoolScore
otelType: gauge
unit: double
isDouble: true
aiopscore:free_timer_score:
sourceName: freeTimerScore
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
aiopscore.device.type: device
- name: appd
attributes: # add them as it is
aiopscore.appd.event_id:
sourceName: attributes_latestEvent_id
aiopscore.display_name:
sourceName: application
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
aiopscore.source.type: appd
telemetry.sdk.name: aiops-fsoc-exporter
- name: appd-metrics
attributes: # add them as it is
service.instance.id:
sourceName: tier
service.name:
sourceName: application
metrics:
apm:response_time:
sourceName: AverageResponseTime(ms)
otelType: distribution
unit: double
isDouble: true
apm:calls_min:
sourceName: CallsperMinute
otelType: distribution
unit: double
isDouble: true
apm:errors_min:
sourceName: ErrorsperMinute
otelType: distribution
unit: double
isDouble: true
apm:process.runtime.jvm.system.cpu.utilization:
sourceName: system_cpu_utilization
otelType: gauge
unit: double
isDouble: true
apm:process.runtime.jvm.cpu.utilization:
sourceName: cpu_utilization
otelType: gauge
unit: double
isDouble: true
tagging:
service.namespace: apm
process.pid: 1232
telemetry.sdk.name: infra-agent
- name: dnac_network
attributes: # add them as it is
aiopscore.display_name:
sourceName: hostname
aiopscore.device.cluster_name:
sourceName: cluster_name
aiopscore.device.site_name:
sourceName: siteName
aiopscore.device.dnac_cluster:
sourceName: cluster_name
aiopscore.device.ap_manager_interface_ip:
sourceName: apManagerInterfaceIp
aiopscore.device.associated_wlc_ip:
sourceName: associatedWlcIp
aiopscore.device.boot_date_time:
sourceName: bootDateTime
aiopscore.device.collection_interval:
sourceName: collectionInterval
aiopscore.device.collection_status:
sourceName: collectionStatus
aiopscore.device.error_code:
sourceName: errorCode
aiopscore.device.error_description:
sourceName: errorDescription
aiopscore.device.family:
sourceName: family
aiopscore.device.hostname:
sourceName: hostname
aiopscore.device.id:
sourceName: id
aiopscore.device.instance_tenant_id:
sourceName: instanceTenantId
aiopscore.device.instance_uuid:
sourceName: instanceUuid
aiopscore.device.interface_count:
sourceName: interfaceCount
aiopscore.device.inventory_status_detail:
sourceName: inventoryStatusDetail
aiopscore.device.last_update_time:
sourceName: lastUpdateTime
aiopscore.device.last_updated:
sourceName: lastUpdated
aiopscore.device.line_card_count:
sourceName: lineCardCount
aiopscore.device.line_card_id:
sourceName: lineCardId
aiopscore.device.location:
sourceName: location
aiopscore.device.location_name:
sourceName: locationName
aiopscore.device.mac_address:
sourceName: macAddress
aiopscore.device.management_ip_address:
sourceName: managementIpAddress
aiopscore.device.memory_size:
sourceName: memorySize
aiopscore.device.platform_id:
sourceName: platformId
aiopscore.device.reachability_failure_reason:
sourceName: reachabilityFailureReason
aiopscore.device.reachability_status:
sourceName: reachabilityStatus
aiopscore.device.role:
sourceName: role
aiopscore.device.role_source:
sourceName: roleSource
aiopscore.device.serial_number:
sourceName: serialNumber
aiopscore.device.series:
sourceName: series
aiopscore.device.snmp_contact:
sourceName: snmpContact
aiopscore.device.snmp_location:
sourceName: snmpLocation
aiopscore.device.software_type:
sourceName: softwareType
aiopscore.device.software_version:
sourceName: softwareVersion
aiopscore.device.tag_count:
sourceName: tagCount
aiopscore.device.tunnel_udp_port:
sourceName: tunnelUdpPort
aiopscore.device.device_type:
sourceName: type
aiopscore.device.up_time:
sourceName: upTime
aiopscore.device.waas_device_mode:
sourceName: waasDeviceMode
metrics:
aiopscore:overall_health:
sourceName: overallHealth
otelType: gauge
unit: double
isDouble: true
aiopscore:memory_score:
sourceName: memoryScore
otelType: gauge
unit: double
isDouble: true
aiopscore:cpu_score:
sourceName: cpuScore
otelType: gauge
unit: double
isDouble: true
aiopscore:noise_score:
sourceName: noiseScore
otelType: gauge
unit: double
isDouble: true
aiopscore:utilization_score:
sourceName: utilizationScore
otelType: gauge
unit: double
isDouble: true
aiopscore:air_quality_score:
sourceName: airQualityScore
otelType: gauge
unit: double
isDouble: true
aiopscore:interference_score:
sourceName: interferenceScore
otelType: gauge
aiopscore:wqe_score:
sourceName: wqeScore
otelType: gauge
unit: double
isDouble: true
aiopscore:free_mbuf_score:
sourceName: freeMbufScore
otelType: gauge
unit: double
isDouble: true
aiopscore:packet_pool_score:
sourceName: packetPoolScore
otelType: gauge
unit: double
isDouble: true
aiopscore:free_timer_score:
sourceName: freeTimerScore
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
aiopscore.source.type: device
- name: dnac_device
attributes: # add them as it is
aiopscore.display_name:
sourceName: hostname
aiopscore.dnac_device.cluster_name:
sourceName: cluster_name
aiopscore.dnac_device.dnac_cluster:
sourceName: cluster_name
aiopscore.dnac_device.ap_manager_interface_ip:
sourceName: apManagerInterfaceIp
aiopscore.dnac_device.associated_wlc_ip:
sourceName: associatedWlcIp
aiopscore.dnac_device.boot_date_time:
sourceName: bootDateTime
aiopscore.dnac_device.collection_interval:
sourceName: collectionInterval
aiopscore.dnac_device.collection_status:
sourceName: collectionStatus
aiopscore.dnac_device.error_code:
sourceName: errorCode
aiopscore.dnac_device.error_description:
sourceName: errorDescription
aiopscore.dnac_device.family:
sourceName: family
aiopscore.dnac_device.hostname:
sourceName: hostname
aiopscore.dnac_device.id:
sourceName: id
aiopscore.dnac_device.instance_tenant_id:
sourceName: instanceTenantId
aiopscore.dnac_device.instance_uuid:
sourceName: instanceUuid
aiopscore.dnac_device.interface_count:
sourceName: interfaceCount
aiopscore.dnac_device.inventory_status_detail:
sourceName: inventoryStatusDetail
aiopscore.dnac_device.last_update_time:
sourceName: lastUpdateTime
aiopscore.dnac_device.last_updated:
sourceName: lastUpdated
aiopscore.dnac_device.line_card_count:
sourceName: lineCardCount
aiopscore.dnac_device.line_card_id:
sourceName: lineCardId
aiopscore.dnac_device.location:
sourceName: location
aiopscore.dnac_device.location_name:
sourceName: locationName
aiopscore.dnac_device.mac_address:
sourceName: macAddress
aiopscore.dnac_device.management_ip_address:
sourceName: managementIpAddress
aiopscore.dnac_device.memory_size:
sourceName: memorySize
aiopscore.dnac_device.platform_id:
sourceName: platformId
aiopscore.dnac_device.reachability_failure_reason:
sourceName: reachabilityFailureReason
aiopscore.dnac_device.reachability_status:
sourceName: reachabilityStatus
aiopscore.dnac_device.role:
sourceName: role
aiopscore.dnac_device.role_source:
sourceName: roleSource
aiopscore.dnac_device.serial_number:
sourceName: serialNumber
aiopscore.dnac_device.series:
sourceName: series
aiopscore.dnac_device.snmp_contact:
sourceName: snmpContact
aiopscore.dnac_device.snmp_location:
sourceName: snmpLocation
aiopscore.dnac_device.software_type:
sourceName: softwareType
aiopscore.dnac_device.software_version:
sourceName: softwareVersion
aiopscore.dnac_device.tag_count:
sourceName: tagCount
aiopscore.dnac_device.tunnel_udp_port:
sourceName: tunnelUdpPort
aiopscore.dnac_device.device_type:
sourceName: type
aiopscore.dnac_device.up_time:
sourceName: upTime
aiopscore.dnac_device.waas_device_mode:
sourceName: waasDeviceMode
metrics:
aiopscore:overall_health:
sourceName: overallHealth
otelType: gauge
unit: double
isDouble: true
aiopscore:memory_score:
sourceName: memoryScore
otelType: gauge
unit: double
isDouble: true
aiopscore:cpu_score:
sourceName: cpuScore
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
aiopscore.source.type: dnac_device
- name: app
attributes: # add them as it is
aiopscore.display_name:
sourceName: cluster_name
aiopscore.app.name:
sourceName: applicationName
aiopscore.app.cluster_name:
sourceName: cluster_name
aiopscore.app.business_relevance:
sourceName: businessRelevance
aiopscore.app.traffic_class:
sourceName: trafficClass
aiopscore.app.exporter_ip_address:
sourceName: exporterIpAddress
aiopscore.app.exporter_ame:
sourceName: exporterName
aiopscore.app.exporter_uuid:
sourceName: exporterUUID
aiopscore.app.exporter_family:
sourceName: exporterFamily
aiopscore.app.client_name:
sourceName: clientName
aiopscore.app.client_ip:
sourceName: clientIp
aiopscore.app.location:
sourceName: location
aiopscore.app.operating_system:
sourceName: operatingSystem
aiopscore.app.device_type:
sourceName: deviceType
aiopscore.app.client_mac_address:
sourceName: clientMacAddress
aiopscore.app.issue_id:
sourceName: issueId
aiopscore.app.issue_name:
sourceName: issueName
aiopscore.app.application:
sourceName: application
aiopscore.app.severity:
sourceName: severity
aiopscore.app.summary:
sourceName: summary
aiopscore.app.root_cause:
sourceName: rootCause
aiopscore.app.timestamp:
sourceName: timestamp
aiopscore.app.priority:
sourceName: priority
metrics:
aiopscore:health:
sourceName: healthScore
otelType: gauge
unit: double
isDouble: true
aiopscore:usage_bytes:
sourceName: usage
otelType: gauge
unit: double
isDouble: true
aiopscore:average_throughput:
sourceName: averageThroughput
otelType: gauge
unit: double
isDouble: true
aiopscore:occurrences:
sourceName: occurrences
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_applications_count:
sourceName: totalBusinessRelevantCount
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_app_usage:
sourceName: businessRelevantAppUsageSize
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_average_latency:
sourceName: businessRelevantAverageLatency
otelType: gauge
unit: double
isDouble: true
aiopscore:active_exporters_count:
sourceName: activeExporters
otelType: gauge
unit: double
isDouble: true
aiopscore:netflow_byte_count:
sourceName: netflowByteCount
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
aiopscore.source.type: app
- name: dnac_cluster
attributes: # add them as it is
aiopscore.display_name:
sourceName: cluster_name
aiopscore.dnac_cluster.cluster_name:
sourceName: cluster_name
aiopscore.dnac_cluster.name:
sourceName: cluster_name
aiopscore.dnac_cluster.url:
sourceName: url
metrics:
aiopscore:availability:
sourceName: availability
otelType: gauge
unit: double
isDouble: true
aiopscore:coverage:
sourceName: coverage
otelType: gauge
unit: double
isDouble: true
aiopscore:onboarding_attempts:
sourceName: onboarding_attempts
otelType: gauge
unit: double
isDouble: true
aiopscore:onboarding_duration:
sourceName: onboarding_duration
otelType: gauge
unit: double
isDouble: true
aiopscore:roaming_attempts:
sourceName: roaming_attempts
otelType: gauge
unit: double
isDouble: true
aiopscore:roaming_duration:
sourceName: roaming_duration
otelType: gauge
unit: double
isDouble: true
aiopscore:connection_speed:
sourceName: connection_speed
otelType: gauge
unit: double
isDouble: true
aiopscore:devicetotalcount:
sourceName: devicetotalcount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicegoodcount:
sourceName: devicegoodcount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicefaircount:
sourceName: devicefaircount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicepoorcount:
sourceName: devicepoorcount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicenohealthcount:
sourceName: devicenohealthcount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcupcount:
sourceName: ap_dvcupcount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcdowncount:
sourceName: ap_dvcdowncount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcnodatacount:
sourceName: ap_dvcnodatacount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcdownandnodatacount:
sourceName: ap_dvcdownandnodatacount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaaservercount:
sourceName: aaaservercount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaasuccessfulcount:
sourceName: aaasuccessfulcount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaasuccessfulpercent:
sourceName: aaasuccessfulpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:aaafailedcount:
sourceName: aaafailedcount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaafailedpercent:
sourceName: aaafailedpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dnsservercount:
sourceName: dnsservercount
otelType: gauge
unit: double
isDouble: true
aiopscore:dnssuccessfulcount:
sourceName: dnssuccessfulcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dnssuccessfulpercent:
sourceName: dnssuccessfulpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dnsfailedcount:
sourceName: dnsfailedcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dnsfailedpercent:
sourceName: dnsfailedpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpservercount:
sourceName: dhcpservercount
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpsuccessfulcount:
sourceName: dhcpsuccessfulcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpsuccessfulpercent:
sourceName: dhcpsuccessfulpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpfailedcount:
sourceName: dhcpfailedcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpfailedpercent:
sourceName: dhcpfailedpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:cl_healthwired:
sourceName: cl_healthwired
otelType: gauge
unit: double
isDouble: true
aiopscore:cl_healthwireless:
sourceName: cl_healthwireless
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_applications_count:
sourceName: business_relevant_applications_count
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_app_usage:
sourceName: business_relevant_app_usage
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_average_latency:
sourceName: business_relevant_average_latency
otelType: gauge
unit: double
isDouble: true
aiopscore:active_exporters_count:
sourceName: active_exporters_count
otelType: gauge
unit: double
isDouble: true
aiopscore:netflow_byte_count:
sourceName: netflow_byte_count
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
aiopscore.source.type: dnac_cluster
- name: site
attributes: # add them as it is
aiopscore.display_name:
sourceName: siteName
aiopscore.site.cluster_name:
sourceName: cluster_name
aiopscore.site.id:
sourceName: siteId
aiopscore.site.name:
sourceName: siteName
aiopscore.site.parent_id:
sourceName: parentSiteId
aiopscore.site.parent_site_name:
sourceName: parentSiteName
aiopscore.site.site_type:
sourceName: siteType
metrics:
aiopscore:coverage:
sourceName: coverage
otelType: gauge
unit: double
isDouble: true
aiopscore:onboarding_attempts:
sourceName: onboarding_attempts
otelType: gauge
unit: double
isDouble: true
aiopscore:onboarding_duration:
sourceName: onboarding_duration
otelType: gauge
unit: double
isDouble: true
aiopscore:roaming_attempts:
sourceName: roaming_attempts
otelType: gauge
unit: double
isDouble: true
aiopscore:roaming_duration:
sourceName: roaming_duration
otelType: gauge
unit: double
isDouble: true
aiopscore:connection_speed:
sourceName: connection_speed
otelType: gauge
unit: double
isDouble: true
aiopscore:devicetotalcount:
sourceName: devicetotalcount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicegoodcount:
sourceName: devicegoodcount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicefaircount:
sourceName: devicefaircount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicepoorcount:
sourceName: devicepoorcount
otelType: gauge
unit: double
isDouble: true
aiopscore:devicenohealthcount:
sourceName: devicenohealthcount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcupcount:
sourceName: ap_dvcupcount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcdowncount:
sourceName: ap_dvcdowncount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcnodatacount:
sourceName: ap_dvcnodatacount
otelType: gauge
unit: double
isDouble: true
aiopscore:ap_dvcdownandnodatacount:
sourceName: ap_dvcdownandnodatacount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaaservercount:
sourceName: aaaservercount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaasuccessfulcount:
sourceName: aaasuccessfulcount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaasuccessfulpercent:
sourceName: aaasuccessfulpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:aaafailedcount:
sourceName: aaafailedcount
otelType: gauge
unit: double
isDouble: true
aiopscore:aaafailedpercent:
sourceName: aaafailedpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dnsservercount:
sourceName: dnsservercount
otelType: gauge
unit: double
isDouble: true
aiopscore:dnssuccessfulcount:
sourceName: dnssuccessfulcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dnssuccessfulpercent:
sourceName: dnssuccessfulpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dnsfailedcount:
sourceName: dnsfailedcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dnsfailedpercent:
sourceName: dnsfailedpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpservercount:
sourceName: dhcpservercount
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpsuccessfulcount:
sourceName: dhcpsuccessfulcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpsuccessfulpercent:
sourceName: dhcpsuccessfulpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpfailedcount:
sourceName: dhcpfailedcount
otelType: gauge
unit: double
isDouble: true
aiopscore:dhcpfailedpercent:
sourceName: dhcpfailedpercent
otelType: gauge
unit: double
isDouble: true
aiopscore:cl_healthwired:
sourceName: cl_healthwired
otelType: gauge
unit: double
isDouble: true
aiopscore:cl_healthwireless:
sourceName: cl_healthwireless
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_applications_count:
sourceName: business_relevant_applications_count
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_app_usage:
sourceName: business_relevant_app_usage
otelType: gauge
unit: double
isDouble: true
aiopscore:business_relevant_average_latency:
sourceName: business_relevant_average_latency
otelType: gauge
unit: double
isDouble: true
aiopscore:active_exporters_count:
sourceName: active_exporters_count
otelType: gauge
unit: double
isDouble: true
aiopscore:netflow_byte_count:
sourceName: netflow_byte_count
otelType: gauge
unit: double
isDouble: true
tagging:
namespace: aiopscore
telemetry.sdk.name: aiops-fsoc-exporter
aiopscore.source.type: site
- name: spacedev300
attributes: # add them as it is
spacedev300.starship.name:
sourceName: spacedev300.starship.name
spacedev300.starship.registry:
sourceName: spacedev300.starship.registry
spacedev300.type:
sourceName: spacedev300.type
metrics:
spacedev300:speed:
sourceName: spacedev300:speed
otelType: gauge
unit: double
isDouble: true
spacedev300:earth_day:
sourceName: spacedev300:earth_day
otelType: gauge
unit: long
isDouble: false
tagging:
name_space: spacedev300
telemetry.sdk.name: aiops-fsoc-exporter
The content of the is docker-compose.yaml
is as follows:
version: '3'
services:
aiops-event-exporter:
image: appdynamics/aiops-webhook:latest
hostname: aiops-event-exporter
container_name: aiops-event-exporter
volumes:
- ./otel-exporter-config-local.yaml:/app/src/main/resources/otel-exporter-config-local.yaml
ports:
- "8083:8083"
environment:
- ZODIAC_FUNCTION_NAME=event-export
entrypoint: "java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -jar -Dspring.profiles.active=prod /app/app.jar"
aiops-metric-exporter:
image: appdynamics/aiops-webhook:latest
hostname: aiops-metric-exporter
container_name: aiops-metric-exporter
volumes:
- ./otel-exporter-config-local.yaml:/app/src/main/resources/otel-exporter-config-local.yaml
ports:
- "8085:8085"
environment:
- ZODIAC_FUNCTION_NAME=metric-export
entrypoint: "java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -jar -Dspring.profiles.active=prod /app/app.jar"
aiops-dnac-collector:
image: appdynamics/aiops-agt-dnacexporter:latest
hostname: aiops-dnac-collector
container_name: aiops-dnac-collector
volumes:
- ./dnac-agent.yml:/usr/src/app/config/agent.yml
depends_on:
- aiops-event-exporter
- aiops-metric-exporter
ports:
- "9001:9001"
environment:
- NODE_TLS_REJECT_UNAUTHORIZED=1 #change the value to 0 for self-signed certificates for DNA Controller
networks:
default:
name: aiops-collector
Configure Cisco DNA Center Agent and OTEL Exporter
Perform the following steps to configure DNA Center agent and OTel exporter on Docker containers:
- Login to the server where you want to install the agent.
- Install Docker Engine and Docker Compose on the server.
Validate the Docker Engine version by running the following command:
$sudo docker -v
CODEValidate the Docker Compose version by running the following command:
$sudo docker compose version
CODE- Create a directory with an appropriate name. For example,
aiops-dnac
. - Create an YAML file and name it as
docker-compose.yaml
. Copy the content of the file from the section Cisco DNA Center Agent and OTel Exporter Files. - In the
docker-compose.yaml
file, verify that the Docker images are pointing to the latest builds. - Create a sub-directory under the directory
aiops-dnac
and name it asconfig
. - In the sub-directory
config
, create two YAML files:dnac-agent.yaml
andotel-exporter-config-local.yaml
. - Copy the content of the files from the section Cisco DNA Center Agent and OTel Exporter Files.
- Go to the
dnac-agent.yaml
config
folder. In the file, update the following properties to connect to your Cisco DNA Center and Kafka clusters:Environment
(ENV) attribute. This is a mandatory attribute. The available values of this attribute aredevelopment
andproduction
. Specify the attribute value asproduction
to collect events and metrics for all sites and devices in your network. If you specifydevelopment
, the yaml file performs the basic Cisco DNA Center and Kafka connectivity and the agent collects events and metrics for one site with single device. Thedevelopment
attribute value can be used for testing.environment: ENV: production
CODEKafka connection attributes with brokers and topic details. The following attributes are required for ingestion site and device level events and metrics into Kafka.
BROKERS
: Enter the Kafka brokers and their ports.TOPIC
: The topic for publishing messages isdnac_network
.- name: kafka environment: BROKERS: - kafka-1:9092 - kafka-2:9092 - kafka-3:9092 TOPIC: dnac_network SSL: false CLIENT_ID: kafka-nodejs-starter
CODE
Cisco DNA Center connection attributes with cluster and API access credentials. The following attributes are mandatory for making API calls to Cisco DNA Center cluster and fetch site and device level metrics and events:
DNAC_HOST
: Enter hostname for your Cisco DNA Center cluster.CLUSTER_NAME
: Enter the name of the Cisco DNA Center Cluster.GLOBAL_SITE
: Enter the Global Site ID for generating cluster level analytics using the Cisco DNA Center assurance API.ROUTE
: The route value isdnac_cluster
.- name: dnac environment: HOST: <Your hostname of DNA Center Cluster> CLUSTER: <Your cluster name of DNA Center> USER: <Your username for DNA Center Cluster> PASSWORD: *********** GLOBAL_SITE: <You global site ID> ROUTE: dnac_cluster DEFAULT_SITENAME: Global
CODE
Function level properties. The following attributes are mandatory to ingest site and device level metrics and events into Kafka:
LOCATION_TYPE
: This attribute collects all the devices by building within a site and metrics.KEYS
: Comma separated attribute list. This list can be updated to add more fields for metrics.INTERVAL
: This value is the data collection schedule. The unit is milliseconds. You can update this value as per your requirement.- name: device INTERVAL: 900000 environment: ROUTE: dnac_network TYPE: device LOCATION_TYPE: building KEYS: ['groupNameHierarchy','instanceUuid','instanceTenantId','apEthernetMacAddress','family','hostname','macAddress','reachabilityStatus','role','serialNumber','series','snmpLocation','softwareVersion','upTime','uptimeSeconds'] SITE: SJC23 - name: site INTERVAL: 900000 siteAnalytics: ROUTE: site TYPE: site LOCATION_TYPE: KEYS: ["coverageSlaPercentage","coverageMetSlaCount","coverageTotalCount","onboardingAttemptsSlaPercentage","onboardingAttemptsMetSlaCount","onboardingAttemptsTotalCount","roamingAttemptsSlaPercentage","roamingAttemptsMetSlaCount","roamingAttemptsTotalCount","onboardingDurationSlaPercentage","onboardingDurationMetSlaCount","onboardingDurationTotalCount","roamingDurationSlaPercentage","roamingDurationMetSlaCount","roamingDurationTotalCount","connectionSpeedSlaPercentage","connectionSpeedMetSlaCount","connectionSpeedTotalCount"] - name: issue INTERVAL: 300000 environment: ROUTE: dnac_issue TYPE: issues TOPIC: raw-events - name: event INTERVAL: 300000 environment: ROUTE: dnac_event TYPE: events TOPIC: raw-events
CODE
- Go to the
otel-exporter-config-local.yaml
file in theconfig
folder. In the file, update the following properties in theevents
andmetrics
sections to connect to your Kafka clusters and the Cisco Observability Platform:source
: Enter your Kafka Brokers and their ports from where the OTEL exporter will collect the data.
For events:source: kafka: brokers: - "kafka-1:9092" - "kafka-1:9092" - "kafka-1:9092" protocol_version: 2.1.1 topic: raw-events encoding: otlp_json
CODEFor metrics:
source: kafka: brokers: - "kafka-1:9092" - "kafka-1:9092" - "kafka-1:9092" protocol_version: 2.1.1 topic: raw-metrics encoding: otlp_json
CODEtarget
: Enter the token URL, client ID, and client secret of your Cisco Observability Platform tenant. See Create Service Principals.
For events:target: http: scheme: https port: hostName: XXXXXXXXXXXXXXXXXXXXXXX path: data/v1/logs isSecure: true auth: type: oauth attributes: tokenUrl: https://XXXXXXXXXXXXXXXXXXXXXXX/auth/XXXXXXXXXXXXXXXXXXXXXXX/default/oauth2/token clientId: XXXXXXXXXXXXXXXXXXXXXXX clientSecret: XXXXXXXXXXXXXXXXXXXXXXX grantType: client_credentials
CODE
For metrics:target: http: scheme: https port: hostName: XXXXXXXXXXXXXXXXXXXXXXX path: data/v1/metrics isSecure: true auth: type: oauth attributes: tokenUrl: https://XXXXXXXXXXXXXXXXXXXXXXX/auth/XXXXXXXXXXXXXXXXXXXXXXX/default/oauth2/token clientId: XXXXXXXXXXXXXXXXXXXXXXX clientSecret: XXXXXXXXXXXXXXXXXXXXXXX grantType: client_credentials
CODE
Execute the following Docker Compose command to create and start the container services. It creates three container services:
aiops-event-exporter
,aiops-metric-exporter
, andaiops-dnac-collector
.$sudo docker compose up -d
CODERun the following Docker command to list the running Docker container services.
$sudo docker ps
CODE
Cisco DNA Center Data Validation
After installing the Cisco DNA Center agent, you need to validate the metrics and events that are ingested into the Cisco Observability Platform. You can validate the data by using either Query Builder or fsoc.
Data Validation using Query Builder
You can validate the data by using Query Builder. Open Query Builder and enter the following query:
fetch id, attributes(dnac), attributes(dnac.device.family), metrics(dnac:overall_health) from entities(dnac:device) since -1h
Data Validation using FSO CLI (FSOC)
This section describes the specifications required to install Cisco Observability Platform CLI for executing the fsoc
queries to validate the metrics and events.
Pre-requisites
Ensure that you meet the following requirements:
- You have installed
fsoc
on your device. See Install and Configure FSOC. - You have configured a profile in
fsoc
.
To learn about UQL queries, see the Unified Query Language User Guide.
Data Validation
Do the following:
Run the following command to setup the
fsoc
profile by using the service principals provided by your Company administrator:$sudo fsoc config set --profile <name-of-your-profile> --secret-file <name-of-secret-file>
CODEExample:
$sudo fsoc config set --profile demo --secret-file dnac-access.json
CODERun the following command to use the profile:
$sudo fsoc config use --profile <name-of-your-profile>
CODEExample:
$sudo fsoc config use --profile demo
CODERun the following command to check the subscription status of your
dnac
solution:$sudo fsoc solution status dnac
CODE
Sample response:Platform API call (GET /objstore/v1beta/objects/extensibility:solutionRelease?order=desc&filter=data.solutionName+eq+%22dnac%22&max=1) ✓ Platform API call (GET /objstore/v1beta/objects/extensibility:solutionInstall?order=desc&filter=data.solutionName+eq+%22dnac%22&max=1) Solution Name: dnac Solution Upload Version: 0.0.11 Upload Timestamp: 2023-08-24T21:04:42.591Z Solution Install Version: 0.0.1 Solution Install Successful?: true Solution Install Time: 2023-08-24T21:04:44.868Z Solution Install Message:
CODERun the UQL queries to validate the Cisco DNA Center data. For example:
$sudo fsoc uql "fetch id, attributes(dnac), attributes(dnac.device.family), metrics(dnac:overall_health) from entities(dnac:device) since -1h"
CODE
Sample response:id | dnac | dnac_device_family | metrics | | | source | metrics | | | | timestamp | value ============================================================================================================================================= dnac:device:EnkkZ3ofOuaimBlxYZoLgw | | Routers | dnac-fsoc-exporter | 2023-09-01 12:50:00 +0000 UTC | 12 | | | | 2023-09-01 12:57:00 +0000 UTC | 12 | | | | 2023-09-01 13:04:00 +0000 UTC | 12 | | | | 2023-09-01 13:10:00 +0000 UTC | 12 | | | | 2023-09-01 13:17:00 +0000 UTC | 12 | | | | 2023-09-01 13:24:00 +0000 UTC | 12 | | | | 2023-09-01 13:31:00 +0000 UTC | 12 -----------------------------------------+-----------+-------------------------+---------------------+-------------------------------+------- dnac:device:w6m3CsB6PA+KLhppoUTx+g | | Switches and Hubs | dnac-fsoc-exporter | 2023-09-01 12:50:00 +0000 UTC | 12 | | | | 2023-09-01 12:57:00 +0000 UTC | 12 | | | | 2023-09-01 13:04:00 +0000 UTC | 12 | | | | 2023-09-01 13:11:00 +0000 UTC | 12 | | | | 2023-09-01 13:17:00 +0000 UTC | 12 | | | | 2023-09-01 13:25:00 +0000 UTC | 12 | | | | 2023-09-01 13:31:00 +0000 UTC | 12 -----------------------------------------+-----------+-------------------------+---------------------+-------------------------------+-------
CODE
Next Steps
- Monitor the Cisco DNA Center entities.