Skip to content

Commit bdac825

Browse files
lucia-sbclaudejanine-c
authored
[AI-6411] Add HPE Aruba EdgeConnect integration (DataDog#23594)
* Add initial scaffolding * Remove manifest * Add implementation * Remove unnecessary files * Fix claude's suggestions * Address Claude's comments * Optimiza calls * Fix mock * Fix validations and skip lab on E2E * Fix typo * Map traffic type to overlay * Address Claude's comments * Address Claude's comments * Fix tags * Uncompress fixtures * Removed unused appliance values * Sync conf example * Address Claude's comments * Sync conf example * Address Claude's comments * Fix README format * Sync conf example * Fix Claude's suggestion * Fix typing * Change metric format * Add concurrency to minute stats requests * Sync models * Remove None type option from namespace * Add parsing of tunnel color for edge cases * Add send_ndm_metadata * Remove unnecessary dd_save_state * Add _parse_config, config tags, and dedicated orch credentials - Add _parse_config method to resolve config once during initialization - Include user-configured tags in all emitted metrics - Replace reused HTTP basic auth username/password with dedicated orch_username/orch_password fields - Remove unnecessary auth=None override since basic auth fields are no longer populated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Sync config descriptions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Address comments * Validate ci * Refactor tests * docs(hpe_aruba_edgeconnect): add fleet_configurable flags and clarify permissions - Mark integration and all instance options as fleet_configurable in spec.yaml - Clarify README that Monitor permissions are sufficient for most metrics Rationale: Enable Fleet Automation support and correct misleading permission requirements This commit made by [/dd:git:commit:quick](https://github.com/DataDog/claude-marketplace/tree/main/dd/commands/git/commit/quick.md) * Add alarm events * Address comments * Address comments * Document persist connections and remove header * Update hpe_aruba_edgeconnect/README.md Co-authored-by: Janine Chan <64388808+janine-c@users.noreply.github.com> * Update hpe_aruba_edgeconnect/assets/configuration/spec.yaml Co-authored-by: Janine Chan <64388808+janine-c@users.noreply.github.com> * Update hpe_aruba_edgeconnect/assets/configuration/spec.yaml Co-authored-by: Janine Chan <64388808+janine-c@users.noreply.github.com> * Sync config --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Janine Chan <64388808+janine-c@users.noreply.github.com>
1 parent d4c309d commit bdac825

65 files changed

Lines changed: 5710 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.ddev/config.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ krakend = "KrakenD"
4343
lustre = "Lustre"
4444
prefect = "Prefect"
4545
n8n = "n8n"
46+
hpe_aruba_edgeconnect = "HPE Aruba EdgeConnect"
4647
control_m = "Control-M"
4748
nifi = "Apache NiFi"
4849

@@ -53,6 +54,7 @@ prefect = "prefect.server."
5354
n8n = "n8n."
5455
control_m = "control_m."
5556
nifi = "nifi."
57+
hpe_aruba_edgeconnect = "hpe_aruba_edgeconnect."
5658

5759
[overrides.ci.ddev]
5860
platforms = ["linux", "windows"]
@@ -271,3 +273,5 @@ prefect = ["linux", "windows", "mac_os"]
271273
n8n = ["linux", "windows", "mac_os"]
272274
control_m = ["linux", "windows", "mac_os"]
273275
nifi = ["linux", "windows", "mac_os"]
276+
hpe_aruba_edgeconnect = ["linux", "windows", "mac_os"]
277+

.github/workflows/config/labeler.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,10 @@ integration/hivemq:
657657
- changed-files:
658658
- any-glob-to-any-file:
659659
- hivemq/**/*
660+
integration/hpe_aruba_edgeconnect:
661+
- changed-files:
662+
- any-glob-to-any-file:
663+
- hpe_aruba_edgeconnect/**/*
660664
integration/http_check:
661665
- changed-files:
662666
- any-glob-to-any-file:

.github/workflows/test-all.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,26 @@ jobs:
16181618
minimum-base-package: ${{ inputs.minimum-base-package }}
16191619
pytest-args: ${{ inputs.pytest-args }}
16201620
secrets: inherit
1621+
j0be27fe:
1622+
uses: ./.github/workflows/test-target.yml
1623+
with:
1624+
job-name: HPE Aruba EdgeConnect
1625+
target: hpe_aruba_edgeconnect
1626+
platform: linux
1627+
runner: '["ubuntu-22.04"]'
1628+
repo: "${{ inputs.repo }}"
1629+
context: ${{ inputs.context }}
1630+
python-version: "${{ inputs.python-version }}"
1631+
latest: ${{ inputs.latest }}
1632+
agent-image: "${{ inputs.agent-image }}"
1633+
agent-image-py2: "${{ inputs.agent-image-py2 }}"
1634+
agent-image-windows: "${{ inputs.agent-image-windows }}"
1635+
agent-image-windows-py2: "${{ inputs.agent-image-windows-py2 }}"
1636+
test-py2: ${{ inputs.test-py2 }}
1637+
test-py3: ${{ inputs.test-py3 }}
1638+
minimum-base-package: ${{ inputs.minimum-base-package }}
1639+
pytest-args: ${{ inputs.pytest-args }}
1640+
secrets: inherit
16211641
j56d6f32:
16221642
uses: ./.github/workflows/test-target.yml
16231643
with:

code-coverage.datadog.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@ services:
322322
- id: hdfs_namenode
323323
paths:
324324
- hdfs_namenode/datadog_checks/hdfs_namenode/
325+
- id: hpe_aruba_edgeconnect
326+
paths:
327+
- hpe_aruba_edgeconnect/datadog_checks/hpe_aruba_edgeconnect/
325328
- id: http_check
326329
paths:
327330
- http_check/datadog_checks/http_check/

hpe_aruba_edgeconnect/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# CHANGELOG - HPE Aruba EdgeConnect
2+
3+
<!-- towncrier release notes start -->
4+

hpe_aruba_edgeconnect/README.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Agent Check: HPE Aruba EdgeConnect
2+
3+
## Overview
4+
5+
This check monitors [HPE Aruba EdgeConnect][1] through the Datadog Agent.
6+
7+
HPE Aruba EdgeConnect is an SD-WAN platform used to connect branch offices, data centers, and cloud environments through an overlay of secure tunnels managed centrally by an Orchestrator. This integration authenticates against the Orchestrator and the individual EdgeConnect appliances, collects health and performance metrics from each appliance's REST API and minute-stats archives, and reports the topology of the SD-WAN fabric (devices, interfaces, and tunnels) to Network Device Monitoring (NDM).
8+
9+
### What this integration monitors
10+
11+
The integration collects metrics across multiple layers of the EdgeConnect SD-WAN fabric, including:
12+
13+
- **Orchestrator and appliance inventory**: Discovers all EdgeConnect appliances managed by the Orchestrator. Surfaces reachability status, uptime, hostname, site, model, and software version.
14+
- **Appliance health**: Reports CPU, memory, and disk usage percentages, as well as hardware alarm state, to detect overloaded or failing devices.
15+
- **Network interfaces**: Provides administrative and operational status, configured speed, RX/TX bandwidth and rate, peak and average utilization, and forward-drop counters per interface.
16+
- **SD-WAN tunnels**: Reports per-tunnel latency, jitter, packet loss (pre- and post-FEC), Mean Opinion Score (MOS) for voice-quality tracking, downtime during the interval, and bidirectional throughput in both bits and packets per second. Allows detection of path degradation and SLA violations across the overlay.
17+
- **Internet breakout tunnels**: Monitors RX/TX bandwidth, peak rates, and configured maximum throughput on local-internet breakout tunnels to observe direct-to-cloud traffic.
18+
- **QoS and traffic shaping**: Tracks per-DSCP-class bandwidth and rate counters, shaper drop counts, and drop percentages. Useful for validating QoS policies and spotting classes being starved or over-subscribed.
19+
- **Circuit SLA probes**: Reports average latency, jitter, and packet loss from SLA probes, plus next-hop administrative and operational status, to monitor underlay link quality independently of the overlay.
20+
- **Application performance**: Provides per-application latency, enabling drill-down from tunnel or interface issues to the specific affected applications.
21+
- **Network Device Monitoring topology**: Pushes device, interface, and tunnel metadata to NDM, enabling visualization of the SD-WAN fabric and correlation with the rest of the network.
22+
23+
## Setup
24+
25+
Follow the instructions below to install and configure this check for an Agent running on a host. For containerized environments, see the [Autodiscovery Integration Templates][3] for guidance on applying these instructions.
26+
27+
### Installation
28+
29+
The HPE Aruba EdgeConnect check is included in the [Datadog Agent][2] package.
30+
No additional installation is needed on your server.
31+
32+
### Configuration
33+
34+
1. Edit the `hpe_aruba_edgeconnect.d/conf.yaml` file, in the `conf.d/` folder at the root of your Agent's configuration directory to start collecting your HPE Aruba EdgeConnect performance data. See the [sample hpe_aruba_edgeconnect.d/conf.yaml][4] for all available configuration options.
35+
36+
**Note**: Monitor permissions are enough to collect most metrics. Admin permissions are required to collect the `hpe_aruba_edgeconnect.device.cpu.usage` metric on the appliances. If the configured credentials do not have admin access, the Agent skips this metric, but collects the rest of the metrics.
37+
38+
2. [Restart the Agent][5].
39+
40+
### Validation
41+
42+
[Run the Agent's status subcommand][6] and look for `hpe_aruba_edgeconnect` under the Checks section.
43+
44+
## Data Collected
45+
46+
### Metrics
47+
48+
See [metadata.csv][7] for a list of metrics provided by this integration.
49+
50+
### Logs
51+
52+
The recommended way to collect logs from HPE Aruba EdgeConnect is to configure the appliance to forward logs through syslog, as described in the [HPE Aruba Networking documentation][8].
53+
54+
1. Enable log collection in your `datadog.yaml` file:
55+
56+
```yaml
57+
logs_enabled: true
58+
```
59+
2. Uncomment and edit the logs configuration block in your `hpe_aruba_edgeconnect.d/conf.yaml` file. For example:
60+
61+
```yaml
62+
logs:
63+
- type: tcp
64+
port: 10514
65+
source: hpe_aruba_edgeconnect
66+
service: <SERVICE>
67+
```
68+
69+
### Events
70+
71+
The HPE Aruba EdgeConnect integration includes alarm event support. Events are disabled by default; to enable them, set `collect_events` to `true` in the configuration.
72+
73+
74+
### Service Checks
75+
76+
The HPE Aruba EdgeConnect integration does not include any service checks.
77+
78+
## Troubleshooting
79+
80+
Need help? Contact [Datadog support][9].
81+
82+
[1]: https://www.hpe.com/us/en/aruba-edgeconnect-sd-wan.html
83+
[2]: https://app.datadoghq.com/account/settings/agent/latest
84+
[3]: https://docs.datadoghq.com/containers/kubernetes/integrations/
85+
[4]: https://github.com/DataDog/integrations-core/blob/master/hpe_aruba_edgeconnect/datadog_checks/hpe_aruba_edgeconnect/data/conf.yaml.example
86+
[5]: https://docs.datadoghq.com/agent/configuration/agent-commands/#start-stop-and-restart-the-agent
87+
[6]: https://docs.datadoghq.com/agent/configuration/agent-commands/#agent-status-and-information
88+
[7]: https://github.com/DataDog/integrations-core/blob/master/hpe_aruba_edgeconnect/metadata.csv
89+
[8]: https://arubanetworking.hpe.com/techdocs/sdwan/docs/orch/support/tech-assistance/remote-log-msgs/
90+
[9]: https://docs.datadoghq.com/help/
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
name: HPE Aruba EdgeConnect
2+
fleet_configurable: true
3+
files:
4+
- name: hpe_aruba_edgeconnect.yaml
5+
options:
6+
- template: init_config
7+
options:
8+
- template: init_config/default
9+
- template: instances
10+
options:
11+
- name: orchestrator_ip
12+
fleet_configurable: true
13+
required: true
14+
description: Hostname or IP address of the HPE Aruba EdgeConnect Orchestrator.
15+
value:
16+
type: string
17+
example: 10.0.0.1
18+
19+
- name: orchestrator_username
20+
fleet_configurable: true
21+
required: true
22+
description: |
23+
Username for the Orchestrator. If no appliance-specific credentials are provided,
24+
this username is used as the default for appliances.
25+
value:
26+
type: string
27+
28+
- name: orchestrator_password
29+
fleet_configurable: true
30+
required: true
31+
secret: true
32+
description: |
33+
Password for the Orchestrator. If no appliance-specific credentials are provided,
34+
this password is used as the default for appliances.
35+
value:
36+
type: string
37+
38+
- name: namespace
39+
fleet_configurable: true
40+
description: Namespace to use for NDM device metadata. Defaults to "default".
41+
value:
42+
type: string
43+
example: default
44+
default: default
45+
- name: appliance_ips
46+
fleet_configurable: true
47+
description: |
48+
HPE Aruba EdgeConnect appliance IP filters. CIDR entries match any appliance IP within the block.
49+
If no filters are configured, all discovered appliances are included.
50+
Use `include` to specify which appliances to poll and `exclude` to skip individual appliances.
51+
`exclude` takes precedence over `include`.
52+
value:
53+
type: object
54+
properties:
55+
- name: include
56+
type: array
57+
items:
58+
type: string
59+
- name: exclude
60+
type: array
61+
items:
62+
type: string
63+
64+
example:
65+
include:
66+
- 10.0.0.0/24
67+
- 192.168.1.5
68+
exclude:
69+
- 10.0.0.99
70+
- name: max_concurrency
71+
fleet_configurable: true
72+
description: Maximum number of appliances to poll concurrently.
73+
value:
74+
type: integer
75+
minimum: 1
76+
default: 50
77+
example: 50
78+
- name: max_backfill_minutes
79+
fleet_configurable: true
80+
description: |
81+
How many minutes of historical data to recover for each appliance after the Agent has been
82+
offline. If the Agent stops collecting for a while (for example, during a restart or an
83+
outage), this controls how far back in time it looks when it starts up again.
84+
85+
For example, with the default of 5, the Agent collects at most the last 5 minutes
86+
of data per appliance after coming back online. Anything older than that is skipped, and
87+
collection resumes normally from the most recent point.
88+
value:
89+
type: integer
90+
minimum: 1
91+
default: 5
92+
example: 5
93+
- name: appliance_credentials_overrides
94+
fleet_configurable: true
95+
description: |
96+
Per-appliance credential overrides matched by CIDR. When an appliance IP falls within a listed
97+
CIDR block, the associated username and password are used instead of the main credentials.
98+
If multiple CIDR blocks match, the Agent uses the first match. Each entry must specify all three
99+
fields: `cidr`, `username`, and `password`.
100+
value:
101+
type: array
102+
items:
103+
type: object
104+
required:
105+
- cidr
106+
- username
107+
- password
108+
properties:
109+
- name: cidr
110+
type: string
111+
- name: username
112+
type: string
113+
- name: password
114+
type: string
115+
secret: true
116+
example:
117+
- cidr: 10.0.0.0/24
118+
username: admin
119+
password: secret
120+
- template: instances/http
121+
overrides:
122+
persist_connections.value.default: true
123+
persist_connections.value.example: true
124+
persist_connections.description: |
125+
Connections are always persisted to use cookies and connection pooling for improved performance.
126+
- template: instances/default
127+
overrides:
128+
min_collection_interval.value.example: 60
129+
min_collection_interval.value.display_default: 60
130+
min_collection_interval.description: |
131+
Changes the collection interval of the check. For more information, see
132+
https://docs.datadoghq.com/developers/write_agent_check/#collection-interval.
133+
The default is 60 seconds. Statistics are only available at one-minute intervals,
134+
so more frequent runs do not collect additional data.
135+
136+
- name: send_ndm_metadata
137+
fleet_configurable: true
138+
description: |
139+
Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent.
140+
value:
141+
type: boolean
142+
example: False
143+
default: False
144+
- name: collect_events
145+
fleet_configurable: true
146+
description: |
147+
Set to `true` to enable collection of HPE Aruba EdgeConnect alarm events.
148+
value:
149+
type: boolean
150+
example: False
151+
default: False
152+
- template: logs
153+
example:
154+
- type: tcp
155+
port: 10514
156+
service: hpe_aruba_edgeconnect
157+
source: hpe_aruba_edgeconnect
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Initial Release
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# (C) Datadog, Inc. 2026-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
__version__ = '0.0.1'
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# (C) Datadog, Inc. 2026-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .__about__ import __version__
5+
from .check import HpeArubaEdgeconnectCheck
6+
7+
__all__ = ['__version__', 'HpeArubaEdgeconnectCheck']

0 commit comments

Comments
 (0)