Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
8a43e66
Add initial scaffolding
lucia-sb Mar 11, 2026
fdce56f
Remove manifest
lucia-sb Mar 11, 2026
aebf9bb
Add implementation
lucia-sb May 5, 2026
b05759c
Remove unnecessary files
lucia-sb May 5, 2026
8b272a3
Fix claude's suggestions
lucia-sb May 6, 2026
c380e83
Address Claude's comments
lucia-sb May 8, 2026
fd9d8ef
Optimiza calls
lucia-sb May 8, 2026
2e7fbd4
Merge branch 'master' into lucia-sb/implementation
lucia-sb May 8, 2026
2c543f5
Fix mock
lucia-sb May 8, 2026
dd22acd
Fix validations and skip lab on E2E
lucia-sb May 8, 2026
dd98d9b
Fix typo
lucia-sb May 8, 2026
85a663c
Map traffic type to overlay
lucia-sb May 8, 2026
22a69a4
Address Claude's comments
lucia-sb May 11, 2026
41bdb6e
Address Claude's comments
lucia-sb May 12, 2026
33c0d11
Fix tags
lucia-sb May 12, 2026
2c16c24
Uncompress fixtures
lucia-sb May 13, 2026
f6f61fb
Removed unused appliance values
lucia-sb May 13, 2026
800f701
Sync conf example
lucia-sb May 13, 2026
97d8da2
Address Claude's comments
lucia-sb May 13, 2026
821fe82
Sync conf example
lucia-sb May 13, 2026
8f5f1f7
Address Claude's comments
lucia-sb May 14, 2026
4f934cd
Fix README format
lucia-sb May 14, 2026
dd9223a
Sync conf example
lucia-sb May 14, 2026
fa89fec
Fix Claude's suggestion
lucia-sb May 14, 2026
51185c2
Fix typing
lucia-sb May 18, 2026
ccf8ff0
Change metric format
lucia-sb May 18, 2026
49f32a4
Add concurrency to minute stats requests
lucia-sb May 18, 2026
44f5e47
Sync models
lucia-sb May 18, 2026
f463497
Remove None type option from namespace
lucia-sb May 18, 2026
3b7be4e
Add parsing of tunnel color for edge cases
lucia-sb May 19, 2026
7ff1ab2
Add send_ndm_metadata
lucia-sb May 20, 2026
20f8f4d
Remove unnecessary dd_save_state
lucia-sb May 22, 2026
2dace9f
Add _parse_config, config tags, and dedicated orch credentials
lucia-sb May 27, 2026
4b20411
Sync config descriptions
lucia-sb May 27, 2026
548caa9
Address comments
lucia-sb Jun 2, 2026
a724e77
Merge branch 'master' into lucia-sb/implementation
lucia-sb Jun 2, 2026
fd4c09b
Validate ci
lucia-sb Jun 2, 2026
c57c6fb
Refactor tests
lucia-sb Jun 2, 2026
9170418
docs(hpe_aruba_edgeconnect): add fleet_configurable flags and clarify…
lucia-sb Jun 2, 2026
0182e6f
Add alarm events
lucia-sb Jun 2, 2026
fd18d5d
Address comments
lucia-sb Jun 3, 2026
4398924
Address comments
lucia-sb Jun 3, 2026
70846bb
Document persist connections and remove header
lucia-sb Jun 4, 2026
1bb1402
Update hpe_aruba_edgeconnect/README.md
lucia-sb Jun 8, 2026
1c61ff2
Update hpe_aruba_edgeconnect/assets/configuration/spec.yaml
lucia-sb Jun 8, 2026
0066034
Update hpe_aruba_edgeconnect/assets/configuration/spec.yaml
lucia-sb Jun 8, 2026
9c706aa
Sync config
lucia-sb Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .ddev/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ krakend = "KrakenD"
lustre = "Lustre"
prefect = "Prefect"
n8n = "n8n"
hpe_aruba_edgeconnect = "HPE Aruba EdgeConnect"
control_m = "Control-M"
nifi = "Apache NiFi"

Expand All @@ -53,6 +54,7 @@ prefect = "prefect.server."
n8n = "n8n."
control_m = "control_m."
nifi = "nifi."
hpe_aruba_edgeconnect = "hpe_aruba_edgeconnect."

[overrides.ci.ddev]
platforms = ["linux", "windows"]
Expand Down Expand Up @@ -271,3 +273,5 @@ prefect = ["linux", "windows", "mac_os"]
n8n = ["linux", "windows", "mac_os"]
control_m = ["linux", "windows", "mac_os"]
nifi = ["linux", "windows", "mac_os"]
hpe_aruba_edgeconnect = ["linux", "windows", "mac_os"]

4 changes: 4 additions & 0 deletions .github/workflows/config/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,10 @@ integration/hivemq:
- changed-files:
- any-glob-to-any-file:
- hivemq/**/*
integration/hpe_aruba_edgeconnect:
- changed-files:
- any-glob-to-any-file:
- hpe_aruba_edgeconnect/**/*
integration/http_check:
- changed-files:
- any-glob-to-any-file:
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/test-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1618,6 +1618,26 @@ jobs:
minimum-base-package: ${{ inputs.minimum-base-package }}
pytest-args: ${{ inputs.pytest-args }}
secrets: inherit
j0be27fe:
uses: ./.github/workflows/test-target.yml
with:
job-name: HPE Aruba EdgeConnect
target: hpe_aruba_edgeconnect
platform: linux
runner: '["ubuntu-22.04"]'
repo: "${{ inputs.repo }}"
context: ${{ inputs.context }}
python-version: "${{ inputs.python-version }}"
latest: ${{ inputs.latest }}
agent-image: "${{ inputs.agent-image }}"
agent-image-py2: "${{ inputs.agent-image-py2 }}"
agent-image-windows: "${{ inputs.agent-image-windows }}"
agent-image-windows-py2: "${{ inputs.agent-image-windows-py2 }}"
test-py2: ${{ inputs.test-py2 }}
test-py3: ${{ inputs.test-py3 }}
minimum-base-package: ${{ inputs.minimum-base-package }}
pytest-args: ${{ inputs.pytest-args }}
secrets: inherit
j56d6f32:
uses: ./.github/workflows/test-target.yml
with:
Expand Down
3 changes: 3 additions & 0 deletions code-coverage.datadog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,9 @@ services:
- id: hdfs_namenode
paths:
- hdfs_namenode/datadog_checks/hdfs_namenode/
- id: hpe_aruba_edgeconnect
paths:
- hpe_aruba_edgeconnect/datadog_checks/hpe_aruba_edgeconnect/
- id: http_check
paths:
- http_check/datadog_checks/http_check/
Expand Down
4 changes: 4 additions & 0 deletions hpe_aruba_edgeconnect/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# CHANGELOG - HPE Aruba EdgeConnect

<!-- towncrier release notes start -->

90 changes: 90 additions & 0 deletions hpe_aruba_edgeconnect/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Agent Check: HPE Aruba EdgeConnect

## Overview

This check monitors [HPE Aruba EdgeConnect][1] through the Datadog Agent.

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).

### What this integration monitors

The integration collects metrics across multiple layers of the EdgeConnect SD-WAN fabric, including:

- **Orchestrator and appliance inventory**: Discovers all EdgeConnect appliances managed by the Orchestrator. Surfaces reachability status, uptime, hostname, site, model, and software version.
- **Appliance health**: Reports CPU, memory, and disk usage percentages, as well as hardware alarm state, to detect overloaded or failing devices.
- **Network interfaces**: Provides administrative and operational status, configured speed, RX/TX bandwidth and rate, peak and average utilization, and forward-drop counters per interface.
- **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.
- **Internet breakout tunnels**: Monitors RX/TX bandwidth, peak rates, and configured maximum throughput on local-internet breakout tunnels to observe direct-to-cloud traffic.
- **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.
- **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.
- **Application performance**: Provides per-application latency, enabling drill-down from tunnel or interface issues to the specific affected applications.
- **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.

## Setup

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.

### Installation

The HPE Aruba EdgeConnect check is included in the [Datadog Agent][2] package.
No additional installation is needed on your server.

### Configuration

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
1. In the `conf.d/` folder at the root of your Agent's configuration directory , edit the `hpe_aruba_edgeconnect.d/conf.yaml` file to start collecting your HPE Aruba EdgeConnect performance data. See the [sample hpe_aruba_edgeconnect.d/conf.yaml][4] for all available configuration options.

I find it helpful to list these things in the order the user will interact with them in; I think it makes it easier to follow 🙂

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section of the README is the same across all integrations. Would it be better to follow the existing pattern, or do you think it's worth changing it?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, no worries, it's really minor! I like to refer to things in the order that users will see them in because I think it's easier to follow, but it's not a hill to die on 🙂


**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.

2. [Restart the Agent][5].

### Validation

[Run the Agent's status subcommand][6] and look for `hpe_aruba_edgeconnect` under the Checks section.

## Data Collected

### Metrics

See [metadata.csv][7] for a list of metrics provided by this integration.

### Logs

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].

1. Enable log collection in your `datadog.yaml` file:

```yaml
logs_enabled: true
```
2. Uncomment and edit the logs configuration block in your `hpe_aruba_edgeconnect.d/conf.yaml` file. For example:

```yaml
logs:
- type: tcp
port: 10514
source: hpe_aruba_edgeconnect
service: <SERVICE>
```

### Events

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.


### Service Checks

The HPE Aruba EdgeConnect integration does not include any service checks.

## Troubleshooting

Need help? Contact [Datadog support][9].

[1]: https://www.hpe.com/us/en/aruba-edgeconnect-sd-wan.html
[2]: https://app.datadoghq.com/account/settings/agent/latest
[3]: https://docs.datadoghq.com/containers/kubernetes/integrations/
[4]: https://github.com/DataDog/integrations-core/blob/master/hpe_aruba_edgeconnect/datadog_checks/hpe_aruba_edgeconnect/data/conf.yaml.example
[5]: https://docs.datadoghq.com/agent/configuration/agent-commands/#start-stop-and-restart-the-agent
[6]: https://docs.datadoghq.com/agent/configuration/agent-commands/#agent-status-and-information
[7]: https://github.com/DataDog/integrations-core/blob/master/hpe_aruba_edgeconnect/metadata.csv
[8]: https://arubanetworking.hpe.com/techdocs/sdwan/docs/orch/support/tech-assistance/remote-log-msgs/
[9]: https://docs.datadoghq.com/help/
157 changes: 157 additions & 0 deletions hpe_aruba_edgeconnect/assets/configuration/spec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: HPE Aruba EdgeConnect
fleet_configurable: true
files:
- name: hpe_aruba_edgeconnect.yaml
options:
- template: init_config
options:
- template: init_config/default
- template: instances
options:
- name: orchestrator_ip
fleet_configurable: true
required: true
description: Hostname or IP address of the HPE Aruba EdgeConnect Orchestrator.
value:
type: string
example: 10.0.0.1

- name: orchestrator_username
fleet_configurable: true
required: true
description: |
Username for the Orchestrator. If no appliance-specific credentials are provided,
this username is used as the default for appliances.
value:
type: string

- name: orchestrator_password
fleet_configurable: true
required: true
secret: true
description: |
Password for the Orchestrator. If no appliance-specific credentials are provided,
this password is used as the default for appliances.
value:
type: string

- name: namespace
fleet_configurable: true
description: Namespace to use for NDM device metadata. Defaults to "default".
value:
type: string
example: default
default: default
- name: appliance_ips
fleet_configurable: true
description: |
HPE Aruba EdgeConnect appliance IP filters. CIDR entries match any appliance IP within the block.
If no filters are configured, all discovered appliances are included.
Use `include` to specify which appliances to poll and `exclude` to skip individual appliances.
`exclude` takes precedence over `include`.
value:
type: object
properties:
- name: include
type: array
items:
type: string
- name: exclude
type: array
items:
type: string

example:
include:
- 10.0.0.0/24
- 192.168.1.5
exclude:
- 10.0.0.99
- name: max_concurrency
fleet_configurable: true
description: Maximum number of appliances to poll concurrently.
value:
type: integer
minimum: 1
default: 50
example: 50
- name: max_backfill_minutes
fleet_configurable: true
description: |
How many minutes of historical data to recover for each appliance after the Agent has been
offline. If the Agent stops collecting for a while (for example, during a restart or an
outage), this controls how far back in time it looks when it starts up again.

For example, with the default of 5, the Agent collects at most the last 5 minutes
of data per appliance after coming back online. Anything older than that is skipped, and
collection resumes normally from the most recent point.
value:
type: integer
minimum: 1
default: 5
example: 5
- name: appliance_credentials_overrides
fleet_configurable: true
description: |
Per-appliance credential overrides matched by CIDR. When an appliance IP falls within a listed
CIDR block, the associated username and password are used instead of the main credentials.
If multiple CIDR blocks match, the Agent uses the first match. Each entry must specify all three
fields: `cidr`, `username`, and `password`.
value:
type: array
items:
type: object
required:
- cidr
- username
- password
properties:
- name: cidr
type: string
- name: username
type: string
- name: password
type: string
secret: true
example:
- cidr: 10.0.0.0/24
username: admin
password: secret
- template: instances/http
overrides:
persist_connections.value.default: true
persist_connections.value.example: true
persist_connections.description: |
Connections are always persisted to use cookies and connection pooling for improved performance.
- template: instances/default
overrides:
min_collection_interval.value.example: 60
min_collection_interval.value.display_default: 60
min_collection_interval.description: |
Changes the collection interval of the check. For more information, see
https://docs.datadoghq.com/developers/write_agent_check/#collection-interval.
The default is 60 seconds. Statistics are only available at one-minute intervals,
so more frequent runs do not collect additional data.

- name: send_ndm_metadata
fleet_configurable: true
description: |
Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent.
Comment thread
sarah-witt marked this conversation as resolved.
value:
type: boolean
example: False
default: False
- name: collect_events
fleet_configurable: true
description: |
Set to `true` to enable collection of HPE Aruba EdgeConnect alarm events.
value:
type: boolean
example: False
default: False
- template: logs
example:
- type: tcp
port: 10514
service: hpe_aruba_edgeconnect
source: hpe_aruba_edgeconnect
1 change: 1 addition & 0 deletions hpe_aruba_edgeconnect/changelog.d/23594.added
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Initial Release
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# (C) Datadog, Inc. 2026-present
# All rights reserved
# Licensed under a 3-clause BSD style license (see LICENSE)
__version__ = '0.0.1'
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# (C) Datadog, Inc. 2026-present
# All rights reserved
# Licensed under a 3-clause BSD style license (see LICENSE)
from .__about__ import __version__
from .check import HpeArubaEdgeconnectCheck

__all__ = ['__version__', 'HpeArubaEdgeconnectCheck']
Loading
Loading