-
Notifications
You must be signed in to change notification settings - Fork 1.5k
[AI-6411] Add HPE Aruba EdgeConnect integration #23594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
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 fdce56f
Remove manifest
lucia-sb aebf9bb
Add implementation
lucia-sb b05759c
Remove unnecessary files
lucia-sb 8b272a3
Fix claude's suggestions
lucia-sb c380e83
Address Claude's comments
lucia-sb fd9d8ef
Optimiza calls
lucia-sb 2e7fbd4
Merge branch 'master' into lucia-sb/implementation
lucia-sb 2c543f5
Fix mock
lucia-sb dd22acd
Fix validations and skip lab on E2E
lucia-sb dd98d9b
Fix typo
lucia-sb 85a663c
Map traffic type to overlay
lucia-sb 22a69a4
Address Claude's comments
lucia-sb 41bdb6e
Address Claude's comments
lucia-sb 33c0d11
Fix tags
lucia-sb 2c16c24
Uncompress fixtures
lucia-sb f6f61fb
Removed unused appliance values
lucia-sb 800f701
Sync conf example
lucia-sb 97d8da2
Address Claude's comments
lucia-sb 821fe82
Sync conf example
lucia-sb 8f5f1f7
Address Claude's comments
lucia-sb 4f934cd
Fix README format
lucia-sb dd9223a
Sync conf example
lucia-sb fa89fec
Fix Claude's suggestion
lucia-sb 51185c2
Fix typing
lucia-sb ccf8ff0
Change metric format
lucia-sb 49f32a4
Add concurrency to minute stats requests
lucia-sb 44f5e47
Sync models
lucia-sb f463497
Remove None type option from namespace
lucia-sb 3b7be4e
Add parsing of tunnel color for edge cases
lucia-sb 7ff1ab2
Add send_ndm_metadata
lucia-sb 20f8f4d
Remove unnecessary dd_save_state
lucia-sb 2dace9f
Add _parse_config, config tags, and dedicated orch credentials
lucia-sb 4b20411
Sync config descriptions
lucia-sb 548caa9
Address comments
lucia-sb a724e77
Merge branch 'master' into lucia-sb/implementation
lucia-sb fd4c09b
Validate ci
lucia-sb c57c6fb
Refactor tests
lucia-sb 9170418
docs(hpe_aruba_edgeconnect): add fleet_configurable flags and clarify…
lucia-sb 0182e6f
Add alarm events
lucia-sb fd18d5d
Address comments
lucia-sb 4398924
Address comments
lucia-sb 70846bb
Document persist connections and remove header
lucia-sb 1bb1402
Update hpe_aruba_edgeconnect/README.md
lucia-sb 1c61ff2
Update hpe_aruba_edgeconnect/assets/configuration/spec.yaml
lucia-sb 0066034
Update hpe_aruba_edgeconnect/assets/configuration/spec.yaml
lucia-sb 9c706aa
Sync config
lucia-sb File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| # CHANGELOG - HPE Aruba EdgeConnect | ||
|
|
||
| <!-- towncrier release notes start --> | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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. | ||
|
|
||
| **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/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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. | ||
|
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 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| Initial Release |
4 changes: 4 additions & 0 deletions
4
hpe_aruba_edgeconnect/datadog_checks/hpe_aruba_edgeconnect/__about__.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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' |
7 changes: 7 additions & 0 deletions
7
hpe_aruba_edgeconnect/datadog_checks/hpe_aruba_edgeconnect/__init__.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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'] |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 🙂
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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 🙂