datadog-agent icon indicating copy to clipboard operation
datadog-agent copied to clipboard

Add support for aurora auto-discovery service for DBM integrations

Open jmeunier28 opened this issue 1 year ago • 3 comments
trafficstars

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:

  1. I forced a scale UP event in the cluster to determine that new services were being detected correctly
  2. I forced a scale DOWN event in the cluster to determine that services were being deleted correctly, once instances were terminated
  3. 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 Triage milestone is set.
  • [ ] Use the major_change label 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-changelog label has been applied.
  • [ ] Changed code has automated tests for its functionality.
  • [ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, 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/operator and need-change/helm labels 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.

jmeunier28 avatar Feb 27 '24 18:02 jmeunier28

Go Package Import Differences

Baseline: eba2b7b84161c523136e6af9e4e92a9f94714077 Comparison: 2f5daba0a967786d93a2ca2aa8bcd5f4770b4aaa

binaryosarchchange
agentlinuxamd64
+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
agentlinuxarm64
+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
agentwindowsamd64
+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
agentwindows386
+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
agentdarwinamd64
+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
agentdarwinarm64
+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-agentlinuxamd64
+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-agentlinuxarm64
+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-agentlinuxamd64
+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-agentlinuxarm64
+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

cit-pr-commenter[bot] avatar Feb 27 '24 19:02 cit-pr-commenter[bot]

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:

  1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

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

  3. Its configuration does not mark it "erratic".

pr-commenter[bot] avatar Feb 27 '24 21:02 pr-commenter[bot]

@vboulineau I think I addressed all of your comments, thank you!

jmeunier28 avatar Feb 28 '24 17:02 jmeunier28

/merge

jmeunier28 avatar Mar 01 '24 14:03 jmeunier28

: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!

dd-devflow[bot] avatar Mar 01 '24 14:03 dd-devflow[bot]

: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!

dd-devflow[bot] avatar Mar 01 '24 15:03 dd-devflow[bot]

/merge

jmeunier28 avatar Mar 01 '24 16:03 jmeunier28

: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!

dd-devflow[bot] avatar Mar 01 '24 16:03 dd-devflow[bot]