datadog-agent
datadog-agent copied to clipboard
Add support for aurora auto-discovery service for DBM integrations
What does this PR do?
Adds a new listener service, DBMAuroraListener, which can be configured by customers who wish to automate endpoint discovery in their aurora clusters & configure these with the Database Monitoring product. The listener configuration in the datadog.yaml file is purposely made very generic. E.g.:
database_monitoring:
autodiscovery:
aurora:
enabled: true
With the listener enabled, it will poll their account for a set of aurora cluster ids with the datadoghq.com/scrape:true tag set, and create either postgres or mysql instances from each by resolving supported template variables. An example auto_conf.yaml looks like this:
ad_identifiers:
- _dbm_postgres_aurora
init_config:
instances:
- host: "%%host%%"
port: "%%port%%"
aws:
instance_endpoint: "%%host%%"
region: "%%extra_region%%"
managed_authentication:
enabled: "%%extra_managed_authentication_enabled%%"
tags:
- "dbclusteridentifier:%%extra_dbclusteridentifier%%"
- "region:%%extra_region%%"
The feature requires the customer to create a special IAM role, with AmazonRDSReadOnlyAccess and associate it with the ec2 instance where the agent is being run. The agent will then poll for endpoints across all specified clusters, and detect updates as the clusters scale up / down.
As new endpoints are discovered, they each creates a new instance of the DBMAuroraService. Each unique service is used to resolve the template variables for an individual check & these are all eventually reconciled in the ConfigProvider. This means that the customer has to define a single "instance" in their postgres.d/conf.yaml, and they can use the provided template variables to resolve anything that is discovered via auto-discovery. For example,
ad_identifiers:
- _dbm_postgres_aurora
init_config:
instances:
- host: "%%host%%"
port: "%%port%%"
username: datadog
password: ENC["/path/to/db-password"]
dbm: true
If the Listener finds the following hosts, host-A host-B, then that would resolve to these instances:
instances:
- host: "host-A"
port: 5432
username: datadog
password: ENC["/path/to/db-password"]
dbm: true
- host: "host-B"
port: 5432
username: datadog
password: ENC["/path/to/db-password"]
dbm: true
Motivation
This PR is work based on the solution described in this RFC.
Before this change, the only way to configure their postgres integrations was by defining a configuration per database host in the postgres.d/conf.yaml file in the agent. For example, for hosts host-foo and host-bar, the customer might define a configuration like this:
init_config:
instances:
- host: "host-foo"
port: 5432
username: "datadog"
dbm: true
- host: "host-bar"
port: 5432
username: "datadog"
dbm: true
For every single database instance for which the customer wants to monitor, they have to list the endpoint in the instances block. This doesn't work well for more dynamic workloads. For example, during cloud-managed autoscaling events, which can occur during incidents, the agent would need to be updated and redeployed with the new replica instance endpoints. Since this is typically not a priority during incidents, customers are forced to fly blind or interrupt their investigation to redeploy the agent.
Therefore, adding support for auto-discovering instance endpoints as they scale / up down allows customers to better automate their use of the database-monitoring product. This should help to drive customer engagement and make for easier onboarding.
Describe how to test/QA your changes
This change was tested by building the agent locally via invoke agent.build --python-runtimes 3 && running it on an ec2 instance. The ec2 instance was configured with the proper permissions to assume a role, that can run describe API calls on the desired AWS account. I configured the agent to listen for updates to an existing Aurora cluster.
I added a test postgres.d/conf.yaml file with the _dbm_aws_aurora AD Identifier, and configured the listener in datadog.yaml. E.g.:
ad_identifiers:
- _dbm_postgres_aurora
init_config:
instances:
- host: "%%host%%"
port: "%%port%%"
username: "datadog"
dbm: true
aws:
instance_endpoint: "%%host%%"
region: "%%extra_region%%"
managed_authentication:
enabled: "%%extra_managed_authentication_enabled%%"
tags:
- "dbclusteridentifier:%%extra_dbclusteridentifier%%"
- "region:%%extra_region%%"
This resulted in the expected number of aurora instances being discovered && scheduled. From the output of agent configcheck, you can see the integration configs are created correclty:
=== postgres check ===
Configuration provider: file
Configuration source: file:/etc/datadog-agent/conf.d/postgres.d/conf.yaml
Config for instance ID: postgres:15fe179629065625
aws:
instance_endpoint: zhengda-lu-dbm-ec2-aurora-aurorapostgresdbwriter46-rycu6pmfvjfq.c7ug0vvtkhqv.us-east-1.rds.amazonaws.com
managed_authentication:
enabled: true
region: us-east-1
tags:
- dbclusteridentifier:zhengda-lu-dbm-ec2-aurora-aurorapostgresdbbc385f18-nj1vpzlipqro
- region:us-east-1
- env:jmeunier-test
dbm: true
host: zhengda-lu-dbm-ec2-aurora-aurorapostgresdbwriter46-rycu6pmfvjfq.c7ug0vvtkhqv.us-east-1.rds.amazonaws.com
port: 5432
username: datadog
~
Auto-discovery IDs:
* database_monitoring_aurora
... and the output of agent status is OK for the postgres instances
postgres (16.1.0)
-----------------
Instance ID: postgres:15fe179629065625 [OK]
Configuration Source: file:/etc/datadog-agent/conf.d/postgres.d/conf.yaml
...
Last Successful Execution Date : 2024-02-16 16:16:11 UTC (1708100171000)
Instance ID: postgres:ab3e9da7db7e8b9e [OK]
Configuration Source: file:/etc/datadog-agent/conf.d/postgres.d/conf.yaml
...
Last Successful Execution Date : 2024-02-16 16:16:21 UTC (1708100181000)
Instance ID: postgres:eee395ed78e56613 [OK]
Configuration Source: file:/etc/datadog-agent/conf.d/postgres.d/conf.yaml
...
Last Successful Execution Date : 2024-02-16 16:16:18 UTC (1708100178000)
Lastly, I confirmed the instances were being correctly reported to the Database Monitoring UI. From there, I performed the following tests:
- I forced a scale UP event in the cluster to determine that new services were being detected correctly
- I forced a scale DOWN event in the cluster to determine that services were being deleted correctly, once instances were terminated
- Added a second cluster ID to monitor & confirmed that new instances were being created properly
Still TODO would be to test this internally with the cluster agent and with K8s service annotations to confirm everything is working as expected.
Reviewer's Checklist
- [ ] If known, an appropriate milestone has been selected; otherwise the
Triagemilestone is set. - [ ] Use the
major_changelabel if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote. - [ ] A release note has been added or the
changelog/no-changeloglabel has been applied. - [ ] Changed code has automated tests for its functionality.
- [ ] Adequate QA/testing plan information is provided. Except if the
qa/skip-qalabel, with required eitherqa/doneorqa/no-code-changelabels, are applied. - [ ] At least one
team/..label has been applied, indicating the team(s) that should QA this change. - [ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
- [ ] If applicable, the
need-change/operatorandneed-change/helmlabels have been applied. - [ ] If applicable, the
k8s/<min-version>label, indicating the lowest Kubernetes version compatible with this feature. - [ ] If applicable, the config template has been updated.
Go Package Import Differences
Baseline: eba2b7b84161c523136e6af9e4e92a9f94714077 Comparison: 2f5daba0a967786d93a2ca2aa8bcd5f4770b4aaa
| binary | os | arch | change |
|---|---|---|---|
| agent | linux | amd64 | +5, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
|
| agent | linux | arm64 | +5, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
|
| agent | windows | amd64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| agent | windows | 386 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| agent | darwin | amd64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| agent | darwin | arm64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| cluster-agent | linux | amd64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| cluster-agent | linux | arm64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| security-agent | linux | amd64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
| security-agent | linux | arm64 | +30, -0
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws
+github.com/DataDog/datadog-agent/pkg/databasemonitoring/config
+github.com/aws/aws-sdk-go-v2/aws/protocol/restjson
+github.com/aws/aws-sdk-go-v2/aws/protocol/xml
+github.com/aws/aws-sdk-go-v2/config
+github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds
+github.com/aws/aws-sdk-go-v2/credentials/endpointcreds/internal/client
+github.com/aws/aws-sdk-go-v2/credentials/processcreds
+github.com/aws/aws-sdk-go-v2/credentials/ssocreds
+github.com/aws/aws-sdk-go-v2/credentials/stscreds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config
+github.com/aws/aws-sdk-go-v2/internal/ini
+github.com/aws/aws-sdk-go-v2/internal/sdkio
+github.com/aws/aws-sdk-go-v2/internal/shareddefaults
+github.com/aws/aws-sdk-go-v2/service/rds
+github.com/aws/aws-sdk-go-v2/service/rds/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/rds/types
+github.com/aws/aws-sdk-go-v2/service/sso
+github.com/aws/aws-sdk-go-v2/service/sso/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sso/types
+github.com/aws/aws-sdk-go-v2/service/ssooidc
+github.com/aws/aws-sdk-go-v2/service/ssooidc/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/ssooidc/types
+github.com/aws/aws-sdk-go-v2/service/sts
+github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
+github.com/aws/aws-sdk-go-v2/service/sts/types
+github.com/aws/smithy-go/encoding/json
+github.com/aws/smithy-go/private/requestcompression
|
Bloop Bleep... Dogbot Here
Regression Detector Results
Run ID: b22cf624-3c48-49c2-b673-90b018cfd5e1 Baseline: eba2b7b84161c523136e6af9e4e92a9f94714077 Comparison: 2f5daba0a967786d93a2ca2aa8bcd5f4770b4aaa
Performance changes are noted in the perf column of each table:
- ✅ = significantly better comparison variant performance
- ❌ = significantly worse comparison variant performance
- ➖ = no significant change in performance
Experiments with missing or malformed data
- basic_py_check
Usually, this warning means that there is no usable optimization goal data for that experiment, which could be a result of misconfiguration.
No significant changes in experiment optimization goals
Confidence level: 90.00% Effect size tolerance: |Δ mean %| ≥ 5.00%
There were no significant changes in experiment optimization goals at this confidence level and effect size tolerance.
Experiments ignored for regressions
Regressions in experiments with settings containing erratic: true are ignored.
| perf | experiment | goal | Δ mean % | Δ mean % CI |
|---|---|---|---|---|
| ➖ | file_to_blackhole | % cpu utilization | +0.22 | [-6.31, +6.75] |
Fine details of change detection per experiment
| perf | experiment | goal | Δ mean % | Δ mean % CI |
|---|---|---|---|---|
| ➖ | file_tree | memory utilization | +3.11 | [+2.99, +3.23] |
| ➖ | uds_dogstatsd_to_api_cpu | % cpu utilization | +1.31 | [-0.13, +2.76] |
| ➖ | otel_to_otel_logs | ingress throughput | +0.68 | [+0.06, +1.30] |
| ➖ | idle | memory utilization | +0.42 | [+0.39, +0.46] |
| ➖ | process_agent_real_time_mode | memory utilization | +0.33 | [+0.29, +0.36] |
| ➖ | file_to_blackhole | % cpu utilization | +0.22 | [-6.31, +6.75] |
| ➖ | process_agent_standard_check | memory utilization | +0.19 | [+0.15, +0.23] |
| ➖ | process_agent_standard_check_with_stats | memory utilization | +0.06 | [+0.03, +0.09] |
| ➖ | tcp_syslog_to_blackhole | ingress throughput | +0.02 | [-0.03, +0.07] |
| ➖ | trace_agent_json | ingress throughput | +0.00 | [-0.02, +0.03] |
| ➖ | tcp_dd_logs_filter_exclude | ingress throughput | +0.00 | [-0.00, +0.00] |
| ➖ | uds_dogstatsd_to_api | ingress throughput | -0.00 | [-0.00, +0.00] |
| ➖ | trace_agent_msgpack | ingress throughput | -0.02 | [-0.04, -0.01] |
Explanation
A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".
For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:
-
Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.
-
Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.
-
Its configuration does not mark it "erratic".
@vboulineau I think I addressed all of your comments, thank you!
/merge
:steam_locomotive: MergeQueue
Pull request added to the queue.
There are 4 builds ahead! (estimated merge in less than 2h)
Use /merge -c to cancel this operation!
:rotating_light: MergeQueue
Gitlab pipeline didn't start on its own and we were unable to create it... Please retry.
If you need support, contact us on Slack #ci-interfaces with those details!
/merge
:steam_locomotive: MergeQueue
Pull request added to the queue.
This build is next! (estimated merge in less than 50m)
Use /merge -c to cancel this operation!