Repository: DataDog/datadog-agent
Pull request #36644: [CONS-7243] Get rid of useless DNS requests
Author: login: L3n41c
Labels: name: qa/done
description: QA done before merge and regressions are covered by tests
name: long review
description: PR is complex, plan time to review it
name: ask-review
description: Ask required teams to review this PR
name: team/agent-configuration
Created: 2025-05-05T15:03:58Z | Merged: 2025-05-13T14:46:55Z

### What does this PR do?

Make the agent query FQDN when trying to resolve intake hostnames.

### Motivation

Avoid bunch of useless DNS queries.

### Describe how you validated your changes

Inspect the DNS traffic generated by a `main` agent spawned from an environment where the `/etc/resolv.conf` file has a long `search` directive like from inside a Kubernetes pod.

```console
# cat /etc/resolv.conf 
search datadog-agent-helm.svc.cluster.local svc.cluster.local cluster.local c.datadog-sandbox.internal google.internal
nameserver 34.118.224.10
options ndots:5
```

It shows a bunch of DNS queries suffixed by the `search` domains which result in NXDOMAIN:

```console
$ tshark -i ens4 -Y 'dns.qry.name contains "datadoghq.com"' 'udp port 53'
Capturing on 'ens4'
   45 4.315525125   10.0.96.98 → 10.4.4.21    DNS 133 Standard query 0x508c A agent-http-intake.logs.datadoghq.com.datadog-agent-helm.svc.cluster.local
   46 4.315713745   10.0.96.98 → 10.4.4.21    DNS 133 Standard query 0x0193 AAAA agent-http-intake.logs.datadoghq.com.datadog-agent-helm.svc.cluster.local
   47 4.316413815    10.4.4.21 → 10.0.96.98   DNS 226 Standard query response 0x508c No such name A agent-http-intake.logs.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
   48 4.316584915    10.4.4.21 → 10.0.96.98   DNS 226 Standard query response 0x0193 No such name AAAA agent-http-intake.logs.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
   49 4.316725475   10.0.96.98 → 10.4.4.33    DNS 114 Standard query 0x40df A api.datadoghq.com.datadog-agent-helm.svc.cluster.local
   50 4.316740755   10.0.96.98 → 10.4.4.33    DNS 114 Standard query 0x82d9 AAAA api.datadoghq.com.datadog-agent-helm.svc.cluster.local
   51 4.316971445   10.0.96.98 → 10.4.4.21    DNS 114 Standard query 0x6bac A agent-http-intake.logs.datadoghq.com.svc.cluster.local
   52 4.316982465   10.0.96.98 → 10.4.4.21    DNS 114 Standard query 0x1bae AAAA agent-http-intake.logs.datadoghq.com.svc.cluster.local
   53 4.317810985    10.4.4.21 → 10.0.96.98   DNS 207 Standard query response 0x1bae No such name AAAA agent-http-intake.logs.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
   54 4.317928855    10.4.4.33 → 10.0.96.98   DNS 207 Standard query response 0x40df No such name A api.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
   55 4.317928945    10.4.4.33 → 10.0.96.98   DNS 207 Standard query response 0x82d9 No such name AAAA api.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
   56 4.318026215    10.4.4.21 → 10.0.96.98   DNS 207 Standard query response 0x6bac No such name A agent-http-intake.logs.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
   57 4.318099305   10.0.96.98 → 10.4.4.21    DNS 95 Standard query 0xe033 A api.datadoghq.com.svc.cluster.local
   58 4.318134615   10.0.96.98 → 10.4.4.33    DNS 110 Standard query 0xe577 A agent-http-intake.logs.datadoghq.com.cluster.local
   59 4.318146065   10.0.96.98 → 10.4.4.33    DNS 110 Standard query 0x9175 AAAA agent-http-intake.logs.datadoghq.com.cluster.local
   60 4.318181545   10.0.96.98 → 10.4.4.21    DNS 95 Standard query 0x7732 AAAA api.datadoghq.com.svc.cluster.local
   61 4.318917055    10.4.4.21 → 10.0.96.98   DNS 188 Standard query response 0x7732 No such name AAAA api.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
   62 4.318975205    10.4.4.21 → 10.0.96.98   DNS 188 Standard query response 0xe033 No such name A api.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
   63 4.319077155   10.0.96.98 → 10.4.4.21    DNS 91 Standard query 0xf6c5 A api.datadoghq.com.cluster.local
   64 4.319102845   10.0.96.98 → 10.4.4.21    DNS 91 Standard query 0x9ec7 AAAA api.datadoghq.com.cluster.local
   65 4.319237665    10.4.4.33 → 10.0.96.98   DNS 203 Standard query response 0xe577 No such name A agent-http-intake.logs.datadoghq.com.cluster.local SOA ns.dns.cluster.local
   66 4.319264165    10.4.4.33 → 10.0.96.98   DNS 203 Standard query response 0x9175 No such name AAAA agent-http-intake.logs.datadoghq.com.cluster.local SOA ns.dns.cluster.local
   67 4.319338915   10.0.96.98 → 10.4.4.33    DNS 123 Standard query 0x773c A agent-http-intake.logs.datadoghq.com.c.datadog-sandbox.internal
   68 4.319363095   10.0.96.98 → 10.4.4.33    DNS 123 Standard query 0x1b3e AAAA agent-http-intake.logs.datadoghq.com.c.datadog-sandbox.internal
   69 4.319893445    10.4.4.21 → 10.0.96.98   DNS 184 Standard query response 0xf6c5 No such name A api.datadoghq.com.cluster.local SOA ns.dns.cluster.local
   70 4.320135945    10.4.4.21 → 10.0.96.98   DNS 184 Standard query response 0x9ec7 No such name AAAA api.datadoghq.com.cluster.local SOA ns.dns.cluster.local
   71 4.320314654   10.0.96.98 → 10.4.4.21    DNS 104 Standard query 0x3b3b A api.datadoghq.com.c.datadog-sandbox.internal
   72 4.320329125   10.0.96.98 → 10.4.4.21    DNS 104 Standard query 0x7438 AAAA api.datadoghq.com.c.datadog-sandbox.internal
   73 4.322546174    10.4.4.33 → 10.0.96.98   DNS 212 Standard query response 0x773c No such name A agent-http-intake.logs.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
   74 4.323111474    10.4.4.21 → 10.0.96.98   DNS 193 Standard query response 0x3b3b No such name A api.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
   75 4.323164504    10.4.4.33 → 10.0.96.98   DNS 212 Standard query response 0x1b3e No such name AAAA agent-http-intake.logs.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
   76 4.324410234   10.0.96.98 → 10.4.4.33    DNS 112 Standard query 0xdc76 A agent-http-intake.logs.datadoghq.com.google.internal
   77 4.324558184    10.4.4.21 → 10.0.96.98   DNS 193 Standard query response 0x7438 No such name AAAA api.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
   78 4.324616044   10.0.96.98 → 10.4.4.33    DNS 112 Standard query 0x304c AAAA agent-http-intake.logs.datadoghq.com.google.internal
   79 4.324707014   10.0.96.98 → 10.4.4.21    DNS 93 Standard query 0x6e5a A api.datadoghq.com.google.internal
   80 4.324718714   10.0.96.98 → 10.4.4.21    DNS 93 Standard query 0xb458 AAAA api.datadoghq.com.google.internal
   81 4.327050254    10.4.4.33 → 10.0.96.98   DNS 201 Standard query response 0x304c No such name AAAA agent-http-intake.logs.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
   82 4.327393924    10.4.4.21 → 10.0.96.98   DNS 182 Standard query response 0x6e5a No such name A api.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
   83 4.327525824    10.4.4.33 → 10.0.96.98   DNS 201 Standard query response 0xdc76 No such name A agent-http-intake.logs.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
   84 4.327613084    10.4.4.21 → 10.0.96.98   DNS 182 Standard query response 0xb458 No such name AAAA api.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
   85 4.327701324   10.0.96.98 → 10.4.4.33    DNS 96 Standard query 0x0574 A agent-http-intake.logs.datadoghq.com
   86 4.327715653   10.0.96.98 → 10.4.4.33    DNS 96 Standard query 0x0777 AAAA agent-http-intake.logs.datadoghq.com
   87 4.327807504   10.0.96.98 → 10.4.4.21    DNS 77 Standard query 0x3e89 A api.datadoghq.com
   88 4.327818364   10.0.96.98 → 10.4.4.21    DNS 77 Standard query 0x4097 AAAA api.datadoghq.com
   89 4.329811393    10.4.4.33 → 10.0.96.98   DNS 396 Standard query response 0x0777 AAAA agent-http-intake.logs.datadoghq.com CNAME alb-logs-http-agent-shard0-1513124509.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:db99:6c9e:c6dd:c396 AAAA 2600:1f18:24e6:b901:15b7:26d:6d4c:9194 AAAA 2600:1f18:24e6:b902:850f:41b8:6f1f:2902 AAAA 2600:1f18:24e6:b902:332f:d238:3f72:2120 AAAA 2600:1f18:24e6:b900:3183:ed04:5830:1bfd AAAA 2600:1f18:24e6:b900:72d3:28e:34b7:58e4 AAAA 2600:1f18:24e6:b900:91f7:72d8:573c:cde9 AAAA 2600:1f18:24e6:b901:6498:201b:3978:add3
   90 4.330145473    10.4.4.33 → 10.0.96.98   DNS 300 Standard query response 0x0574 A agent-http-intake.logs.datadoghq.com CNAME alb-logs-http-agent-shard0-1513124509.us-east-1.elb.amazonaws.com A 3.233.144.49 A 3.233.144.115 A 3.233.144.23 A 3.233.144.113 A 3.233.144.59 A 3.233.144.97 A 3.233.144.45 A 3.233.144.98
   91 4.330215413    10.4.4.21 → 10.0.96.98   DNS 275 Standard query response 0x3e89 A api.datadoghq.com CNAME alb-api-public-shard0-559796157.us-east-1.elb.amazonaws.com A 3.233.147.134 A 3.233.154.102 A 3.233.154.103 A 3.233.153.41 A 3.233.153.4 A 3.233.154.101 A 3.233.153.40 A 3.233.153.43
   92 4.330538103    10.4.4.21 → 10.0.96.98   DNS 371 Standard query response 0x4097 AAAA api.datadoghq.com CNAME alb-api-public-shard0-559796157.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b900:b458:8a77:8d43:8c7 AAAA 2600:1f18:24e6:b900:ee4f:a218:72eb:cf0f AAAA 2600:1f18:24e6:b900:545c:9e28:eec1:e631 AAAA 2600:1f18:24e6:b902:5ec3:9119:4c3e:b664 AAAA 2600:1f18:24e6:b902:54c:f900:21ea:1280 AAAA 2600:1f18:24e6:b902:dddc:b609:55b7:2507 AAAA 2600:1f18:24e6:b900:a6d0:65d1:2d50:819c AAAA 2600:1f18:24e6:b900:f666:1cc7:ba7c:d990
   93 4.815533250   10.0.96.98 → 10.4.4.21    DNS 117 Standard query 0x1978 A config.datadoghq.com.datadog-agent-helm.svc.cluster.local
   94 4.816139649   10.0.96.98 → 10.4.4.21    DNS 117 Standard query 0x2464 AAAA config.datadoghq.com.datadog-agent-helm.svc.cluster.local
   95 4.816240119    10.4.4.21 → 10.0.96.98   DNS 210 Standard query response 0x1978 No such name A config.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
   96 4.816794729    10.4.4.21 → 10.0.96.98   DNS 210 Standard query response 0x2464 No such name AAAA config.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
   97 4.816916769   10.0.96.98 → 10.4.4.33    DNS 98 Standard query 0x785b A config.datadoghq.com.svc.cluster.local
   98 4.817140539   10.0.96.98 → 10.4.4.33    DNS 98 Standard query 0x4055 AAAA config.datadoghq.com.svc.cluster.local
   99 4.817703149    10.4.4.33 → 10.0.96.98   DNS 191 Standard query response 0x785b No such name A config.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
  100 4.817703279    10.4.4.33 → 10.0.96.98   DNS 191 Standard query response 0x4055 No such name AAAA config.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
  101 4.817832859   10.0.96.98 → 10.4.4.21    DNS 94 Standard query 0x9342 A config.datadoghq.com.cluster.local
  102 4.818097459   10.0.96.98 → 10.4.4.21    DNS 94 Standard query 0x2b40 AAAA config.datadoghq.com.cluster.local
  103 4.818525519    10.4.4.21 → 10.0.96.98   DNS 187 Standard query response 0x9342 No such name A config.datadoghq.com.cluster.local SOA ns.dns.cluster.local
  104 4.819227209    10.4.4.21 → 10.0.96.98   DNS 187 Standard query response 0x2b40 No such name AAAA config.datadoghq.com.cluster.local SOA ns.dns.cluster.local
  105 4.819347639   10.0.96.98 → 10.4.4.21    DNS 107 Standard query 0x1646 A config.datadoghq.com.c.datadog-sandbox.internal
  106 4.819360859   10.0.96.98 → 10.4.4.21    DNS 107 Standard query 0x9f45 AAAA config.datadoghq.com.c.datadog-sandbox.internal
  107 4.822872269    10.4.4.21 → 10.0.96.98   DNS 196 Standard query response 0x1646 No such name A config.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
  108 4.822930738    10.4.4.21 → 10.0.96.98   DNS 196 Standard query response 0x9f45 No such name AAAA config.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
  109 4.823101129   10.0.96.98 → 10.4.4.33    DNS 96 Standard query 0x87d0 A config.datadoghq.com.google.internal
  110 4.823118678   10.0.96.98 → 10.4.4.33    DNS 96 Standard query 0x5cd4 AAAA config.datadoghq.com.google.internal
  111 4.825773448    10.4.4.33 → 10.0.96.98   DNS 185 Standard query response 0x5cd4 No such name AAAA config.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
  112 4.826145658    10.4.4.33 → 10.0.96.98   DNS 185 Standard query response 0x87d0 No such name A config.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
  113 4.826334608   10.0.96.98 → 10.4.4.21    DNS 80 Standard query 0xa936 A config.datadoghq.com
  114 4.826347418   10.0.96.98 → 10.4.4.21    DNS 80 Standard query 0xd130 AAAA config.datadoghq.com
  115 4.829220778    10.4.4.21 → 10.0.96.98   DNS 369 Standard query response 0xd130 AAAA config.datadoghq.com CNAME lb-fleet-shard0-1394942885.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b901:842:966e:9fc9:5729 AAAA 2600:1f18:24e6:b901:e215:56f2:f75:ea75 AAAA 2600:1f18:24e6:b900:970f:18c3:67ad:7e45 AAAA 2600:1f18:24e6:b901:fb26:3627:c73b:a1e7 AAAA 2600:1f18:24e6:b902:b42b:a204:9ddf:651f AAAA 2600:1f18:24e6:b902:4dc8:1e6:8515:c406 AAAA 2600:1f18:24e6:b900:ee06:40b4:815e:212d AAAA 2600:1f18:24e6:b900:1f7b:9e22:a665:75ac
  116 4.829293578    10.4.4.21 → 10.0.96.98   DNS 273 Standard query response 0xa936 A config.datadoghq.com CNAME lb-fleet-shard0-1394942885.us-east-1.elb.amazonaws.com A 3.233.157.149 A 3.233.157.103 A 3.233.157.15 A 3.233.157.107 A 3.233.157.106 A 3.233.157.138 A 3.233.157.104 A 3.233.157.16
  117 4.963037870   10.0.96.98 → 10.4.4.33    DNS 118 Standard query 0x62b3 A process.datadoghq.com.datadog-agent-helm.svc.cluster.local
  118 4.964006470   10.0.96.98 → 10.4.4.33    DNS 118 Standard query 0xc9b4 AAAA process.datadoghq.com.datadog-agent-helm.svc.cluster.local
  119 4.964164990    10.4.4.33 → 10.0.96.98   DNS 211 Standard query response 0x62b3 No such name A process.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
  120 4.964639670    10.4.4.33 → 10.0.96.98   DNS 211 Standard query response 0xc9b4 No such name AAAA process.datadoghq.com.datadog-agent-helm.svc.cluster.local SOA ns.dns.cluster.local
  121 4.964769790   10.0.96.98 → 10.4.4.33    DNS 99 Standard query 0xa9b1 A process.datadoghq.com.svc.cluster.local
  122 4.965008780   10.0.96.98 → 10.4.4.33    DNS 99 Standard query 0x5bb3 AAAA process.datadoghq.com.svc.cluster.local
  123 4.965620440    10.4.4.33 → 10.0.96.98   DNS 192 Standard query response 0xa9b1 No such name A process.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
  124 4.966837240    10.4.4.33 → 10.0.96.98   DNS 192 Standard query response 0x5bb3 No such name AAAA process.datadoghq.com.svc.cluster.local SOA ns.dns.cluster.local
  125 4.966953350   10.0.96.98 → 10.4.4.21    DNS 95 Standard query 0x25f7 A process.datadoghq.com.cluster.local
  126 4.966965440   10.0.96.98 → 10.4.4.21    DNS 95 Standard query 0xcff5 AAAA process.datadoghq.com.cluster.local
  127 4.967720379    10.4.4.21 → 10.0.96.98   DNS 188 Standard query response 0x25f7 No such name A process.datadoghq.com.cluster.local SOA ns.dns.cluster.local
  128 4.967893490    10.4.4.21 → 10.0.96.98   DNS 188 Standard query response 0xcff5 No such name AAAA process.datadoghq.com.cluster.local SOA ns.dns.cluster.local
  129 4.968170879   10.0.96.98 → 10.4.4.33    DNS 108 Standard query 0xad0e A process.datadoghq.com.c.datadog-sandbox.internal
  130 4.968184759   10.0.96.98 → 10.4.4.33    DNS 108 Standard query 0x1f00 AAAA process.datadoghq.com.c.datadog-sandbox.internal
  131 4.971531709    10.4.4.33 → 10.0.96.98   DNS 197 Standard query response 0x1f00 No such name AAAA process.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
  132 4.971686929    10.4.4.33 → 10.0.96.98   DNS 197 Standard query response 0xad0e No such name A process.datadoghq.com.c.datadog-sandbox.internal SOA ns.global.gcedns-prod.internal
  133 4.971883509   10.0.96.98 → 10.4.4.21    DNS 97 Standard query 0xfd4b A process.datadoghq.com.google.internal
  134 4.971965479   10.0.96.98 → 10.4.4.21    DNS 97 Standard query 0x8e4e AAAA process.datadoghq.com.google.internal
  135 4.974835459    10.4.4.21 → 10.0.96.98   DNS 186 Standard query response 0xfd4b No such name A process.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
  136 4.974835729    10.4.4.21 → 10.0.96.98   DNS 186 Standard query response 0x8e4e No such name AAAA process.datadoghq.com.google.internal SOA ns.global.gcedns-prod.internal
  137 4.975346109   10.0.96.98 → 10.4.4.33    DNS 81 Standard query 0xa8aa A process.datadoghq.com
  138 4.975423138   10.0.96.98 → 10.4.4.33    DNS 81 Standard query 0x11a8 AAAA process.datadoghq.com
  139 4.977590158    10.4.4.33 → 10.0.96.98   DNS 277 Standard query response 0xa8aa A process.datadoghq.com CNAME alb-process-shard0-1961303580.us-east-1.elb.amazonaws.com A 3.233.147.243 A 3.233.147.247 A 3.233.149.175 A 3.233.147.255 A 3.233.147.192 A 3.233.147.248 A 3.233.149.184 A 3.233.147.232
  140 4.978283478    10.4.4.33 → 10.0.96.98   DNS 373 Standard query response 0x11a8 AAAA process.datadoghq.com CNAME alb-process-shard0-1961303580.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:a4ea:f848:18f1:9a7f AAAA 2600:1f18:24e6:b901:a063:d96b:5282:9ab6 AAAA 2600:1f18:24e6:b900:3727:6857:bff:92af AAAA 2600:1f18:24e6:b902:dc43:793c:546f:f313 AAAA 2600:1f18:24e6:b900:8142:c521:b9ad:f5be AAAA 2600:1f18:24e6:b900:7c1d:f51:d49:4313 AAAA 2600:1f18:24e6:b901:ebfb:6a8f:8a1b:e6c6 AAAA 2600:1f18:24e6:b902:5862:87af:5421:4053
```

With this PR, the agent is now only querying the FQDN and it doesn’t generate queries that end up in NXDOMAIN:

```console
$ tshark -i ens4 -Y 'dns.qry.name contains "datadoghq.com"' 'udp port 53'
Capturing on 'ens4'
   45 5.058788658   10.0.96.98 → 10.4.4.33    DNS 96 Standard query 0xdc65 A agent-http-intake.logs.datadoghq.com
   46 5.058805768   10.0.96.98 → 10.4.4.33    DNS 96 Standard query 0x9479 AAAA agent-http-intake.logs.datadoghq.com
   47 5.061051497   10.0.96.98 → 10.4.4.21    DNS 77 Standard query 0xa699 A app.datadoghq.com
   48 5.061083208   10.0.96.98 → 10.4.4.21    DNS 77 Standard query 0x099b AAAA app.datadoghq.com
   49 5.062711147    10.4.4.33 → 10.0.96.98   DNS 300 Standard query response 0xdc65 A agent-http-intake.logs.datadoghq.com CNAME alb-logs-http-agent-shard0-1513124509.us-east-1.elb.amazonaws.com A 3.233.144.10 A 3.233.144.49 A 3.233.144.123 A 3.233.144.41 A 3.233.144.38 A 3.233.144.39 A 3.233.144.73 A 3.233.144.93
   50 5.063468467    10.4.4.33 → 10.0.96.98   DNS 396 Standard query response 0x9479 AAAA agent-http-intake.logs.datadoghq.com CNAME alb-logs-http-agent-shard0-1513124509.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:850f:41b8:6f1f:2902 AAAA 2600:1f18:24e6:b901:bbcd:ce07:dcef:ce81 AAAA 2600:1f18:24e6:b900:2871:bf15:1df2:ce1c AAAA 2600:1f18:24e6:b901:c3b9:b257:6a1e:f12d AAAA 2600:1f18:24e6:b901:f75f:1684:3440:818a AAAA 2600:1f18:24e6:b901:168e:d4b5:40be:a767 AAAA 2600:1f18:24e6:b901:8d6d:c256:62e2:395 AAAA 2600:1f18:24e6:b902:a6f5:ac5c:8f9b:d10
   51 5.065511287    10.4.4.21 → 10.0.96.98   DNS 197 Standard query response 0xa699 A app.datadoghq.com CNAME l4-web-public-s1-7109eb0b808a5bbd.elb.us-east-1.amazonaws.com A 3.233.158.14 A 3.233.158.13 A 3.233.158.12
   52 5.092105913    10.4.4.21 → 10.0.96.98   DNS 233 Standard query response 0x099b AAAA app.datadoghq.com CNAME l4-web-public-s1-7109eb0b808a5bbd.elb.us-east-1.amazonaws.com AAAA 2600:1f18:24e6:b902:5c91:5091:fe30:d3a9 AAAA 2600:1f18:24e6:b900:8df:4af1:e595:7f60 AAAA 2600:1f18:24e6:b901:b18f:3fd:7732:2ccd
   53 5.808984269   10.0.96.98 → 10.4.4.21    DNS 80 Standard query 0x9f42 A config.datadoghq.com
   54 5.809470949   10.0.96.98 → 10.4.4.21    DNS 80 Standard query 0x2841 AAAA config.datadoghq.com
   55 5.811602839    10.4.4.21 → 10.0.96.98   DNS 273 Standard query response 0x9f42 A config.datadoghq.com CNAME lb-fleet-shard0-1394942885.us-east-1.elb.amazonaws.com A 3.233.157.157 A 3.233.157.144 A 3.233.157.103 A 3.233.157.158 A 3.233.157.104 A 3.233.157.106 A 3.233.157.136 A 3.233.157.138
   56 5.811687569    10.4.4.21 → 10.0.96.98   DNS 369 Standard query response 0x2841 AAAA config.datadoghq.com CNAME lb-fleet-shard0-1394942885.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b901:e215:56f2:f75:ea75 AAAA 2600:1f18:24e6:b900:ee06:40b4:815e:212d AAAA 2600:1f18:24e6:b902:ba21:3329:ed5e:40e4 AAAA 2600:1f18:24e6:b900:970f:18c3:67ad:7e45 AAAA 2600:1f18:24e6:b901:fb26:3627:c73b:a1e7 AAAA 2600:1f18:24e6:b902:4dc8:1e6:8515:c406 AAAA 2600:1f18:24e6:b901:63f3:bfad:a450:d923 AAAA 2600:1f18:24e6:b902:b42b:a204:9ddf:651f
   57 5.942550462   10.0.96.98 → 10.4.4.21    DNS 80 Standard query 0x6d17 A config.datadoghq.com
   58 5.942777662   10.0.96.98 → 10.4.4.21    DNS 80 Standard query 0x8113 AAAA config.datadoghq.com
   59 5.942932272    10.4.4.21 → 10.0.96.98   DNS 276 Standard query response 0x6d17 A config.datadoghq.com CNAME lb-fleet-shard0-1394942885.us-east-1.elb.amazonaws.com A 3.233.157.157 A 3.233.157.144 A 3.233.157.103 A 3.233.157.158 A 3.233.157.104 A 3.233.157.106 A 3.233.157.136 A 3.233.157.138
   60 5.942982852    10.4.4.21 → 10.0.96.98   DNS 372 Standard query response 0x8113 AAAA config.datadoghq.com CNAME lb-fleet-shard0-1394942885.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b901:e215:56f2:f75:ea75 AAAA 2600:1f18:24e6:b900:ee06:40b4:815e:212d AAAA 2600:1f18:24e6:b902:ba21:3329:ed5e:40e4 AAAA 2600:1f18:24e6:b900:970f:18c3:67ad:7e45 AAAA 2600:1f18:24e6:b901:fb26:3627:c73b:a1e7 AAAA 2600:1f18:24e6:b902:4dc8:1e6:8515:c406 AAAA 2600:1f18:24e6:b901:63f3:bfad:a450:d923 AAAA 2600:1f18:24e6:b902:b42b:a204:9ddf:651f
   77 5.960721400   10.0.96.98 → 10.4.4.33    DNS 81 Standard query 0x4086 A process.datadoghq.com
   80 5.963943089   10.0.96.98 → 10.4.4.33    DNS 81 Standard query 0xb18b AAAA process.datadoghq.com
   83 5.966782369    10.4.4.33 → 10.0.96.98   DNS 373 Standard query response 0xb18b AAAA process.datadoghq.com CNAME alb-process-shard0-1961303580.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b900:e713:8f4b:99d6:dbeb AAAA 2600:1f18:24e6:b900:6907:d5f1:73a6:94da AAAA 2600:1f18:24e6:b900:1a0a:d573:2bd7:9b57 AAAA 2600:1f18:24e6:b902:6ae5:2103:1d9b:e005 AAAA 2600:1f18:24e6:b900:d4a8:c852:9adb:19be AAAA 2600:1f18:24e6:b901:ebfb:6a8f:8a1b:e6c6 AAAA 2600:1f18:24e6:b900:f162:3af:ce93:9651 AAAA 2600:1f18:24e6:b900:7ebd:60f1:b19e:ff57
   84 5.974812068    10.4.4.33 → 10.0.96.98   DNS 277 Standard query response 0x4086 A process.datadoghq.com CNAME alb-process-shard0-1961303580.us-east-1.elb.amazonaws.com A 3.233.147.238 A 3.233.147.194 A 3.233.147.232 A 3.233.147.247 A 3.233.149.183 A 3.233.147.207 A 3.233.149.169 A 3.233.147.245
   85 6.265426879   10.0.96.98 → 10.4.4.33    DNS 77 Standard query 0x8fdf A app.datadoghq.com
   86 6.265703979   10.0.96.98 → 10.4.4.33    DNS 77 Standard query 0xe6d3 AAAA app.datadoghq.com
   87 6.266701759    10.4.4.33 → 10.0.96.98   DNS 197 Standard query response 0x8fdf A app.datadoghq.com CNAME l4-web-public-s1-7109eb0b808a5bbd.elb.us-east-1.amazonaws.com A 3.233.158.14 A 3.233.158.13 A 3.233.158.12
   88 6.266745119    10.4.4.33 → 10.0.96.98   DNS 233 Standard query response 0xe6d3 AAAA app.datadoghq.com CNAME l4-web-public-s1-7109eb0b808a5bbd.elb.us-east-1.amazonaws.com AAAA 2600:1f18:24e6:b902:5c91:5091:fe30:d3a9 AAAA 2600:1f18:24e6:b900:8df:4af1:e595:7f60 AAAA 2600:1f18:24e6:b901:b18f:3fd:7732:2ccd
   89 10.647325236   10.0.96.98 → 10.4.4.21    DNS 96 Standard query 0xd5ef A agent-http-intake.logs.datadoghq.com
   90 10.647340196   10.0.96.98 → 10.4.4.21    DNS 96 Standard query 0x27e8 AAAA agent-http-intake.logs.datadoghq.com
   91 10.650088455    10.4.4.21 → 10.0.96.98   DNS 300 Standard query response 0xd5ef A agent-http-intake.logs.datadoghq.com CNAME alb-logs-http-agent-shard0-1513124509.us-east-1.elb.amazonaws.com A 3.233.144.98 A 3.233.144.10 A 3.233.144.87 A 3.233.144.45 A 3.233.144.23 A 3.233.144.97 A 3.233.144.60 A 3.233.144.113
   92 10.651597555    10.4.4.21 → 10.0.96.98   DNS 396 Standard query response 0x27e8 AAAA agent-http-intake.logs.datadoghq.com CNAME alb-logs-http-agent-shard0-1513124509.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:db99:6c9e:c6dd:c396 AAAA 2600:1f18:24e6:b901:168e:d4b5:40be:a767 AAAA 2600:1f18:24e6:b901:8d6d:c256:62e2:395 AAAA 2600:1f18:24e6:b902:332f:d238:3f72:2120 AAAA 2600:1f18:24e6:b901:bbcd:ce07:dcef:ce81 AAAA 2600:1f18:24e6:b901:15b7:26d:6d4c:9194 AAAA 2600:1f18:24e6:b900:2871:bf15:1df2:ce1c AAAA 2600:1f18:24e6:b900:72d3:28e:34b7:58e4
   93 16.695225494   10.0.96.98 → 10.4.4.33    DNS 85 Standard query 0x1629 A sbom-intake.datadoghq.com
   94 16.695970954   10.0.96.98 → 10.4.4.33    DNS 85 Standard query 0xc42d AAAA sbom-intake.datadoghq.com
   95 16.699387694    10.4.4.33 → 10.0.96.98   DNS 287 Standard query response 0x1629 A sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com A 3.233.150.114 A 3.233.157.165 A 3.233.157.4 A 3.233.157.5 A 3.233.145.119 A 3.233.157.35 A 3.233.147.23 A 3.233.147.28
   96 16.700216433    10.4.4.33 → 10.0.96.98   DNS 383 Standard query response 0xc42d AAAA sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:3165:4ac5:379c:c352 AAAA 2600:1f18:24e6:b901:507f:f7c3:1d18:3643 AAAA 2600:1f18:24e6:b900:ec83:de80:1f12:aa72 AAAA 2600:1f18:24e6:b901:8a54:507b:a510:8779 AAAA 2600:1f18:24e6:b901:24ba:31d:c838:b74e AAAA 2600:1f18:24e6:b900:2559:52bb:6e5b:6e6c AAAA 2600:1f18:24e6:b902:17c7:98ef:7d78:9559 AAAA 2600:1f18:24e6:b900:bbac:e181:ce13:ee8e
   97 16.705153023   10.0.96.98 → 10.4.4.21    DNS 85 Standard query 0x87d3 A sbom-intake.datadoghq.com
   98 16.705167323   10.0.96.98 → 10.4.4.21    DNS 85 Standard query 0xb5d5 AAAA sbom-intake.datadoghq.com
   99 16.709420382    10.4.4.21 → 10.0.96.98   DNS 287 Standard query response 0x87d3 A sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com A 3.233.150.111 A 3.233.145.115 A 3.233.156.92 A 3.233.157.2 A 3.233.147.30 A 3.233.145.101 A 3.233.157.36 A 3.233.157.164
  100 16.709457792    10.4.4.21 → 10.0.96.98   DNS 383 Standard query response 0xb5d5 AAAA sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:3165:4ac5:379c:c352 AAAA 2600:1f18:24e6:b901:507f:f7c3:1d18:3643 AAAA 2600:1f18:24e6:b900:ec83:de80:1f12:aa72 AAAA 2600:1f18:24e6:b901:8a54:507b:a510:8779 AAAA 2600:1f18:24e6:b901:24ba:31d:c838:b74e AAAA 2600:1f18:24e6:b900:2559:52bb:6e5b:6e6c AAAA 2600:1f18:24e6:b902:17c7:98ef:7d78:9559 AAAA 2600:1f18:24e6:b900:bbac:e181:ce13:ee8e
  101 16.720577441   10.0.96.98 → 10.4.4.21    DNS 85 Standard query 0xa76d A sbom-intake.datadoghq.com
  102 16.720893041    10.4.4.21 → 10.0.96.98   DNS 290 Standard query response 0xa76d A sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com A 3.233.150.111 A 3.233.145.115 A 3.233.156.92 A 3.233.157.2 A 3.233.147.30 A 3.233.145.101 A 3.233.157.36 A 3.233.157.164
  103 16.720906971   10.0.96.98 → 10.4.4.21    DNS 85 Standard query 0xc662 AAAA sbom-intake.datadoghq.com
  104 16.721094521    10.4.4.21 → 10.0.96.98   DNS 386 Standard query response 0xc662 AAAA sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:3165:4ac5:379c:c352 AAAA 2600:1f18:24e6:b901:507f:f7c3:1d18:3643 AAAA 2600:1f18:24e6:b900:ec83:de80:1f12:aa72 AAAA 2600:1f18:24e6:b901:8a54:507b:a510:8779 AAAA 2600:1f18:24e6:b901:24ba:31d:c838:b74e AAAA 2600:1f18:24e6:b900:2559:52bb:6e5b:6e6c AAAA 2600:1f18:24e6:b902:17c7:98ef:7d78:9559 AAAA 2600:1f18:24e6:b900:bbac:e181:ce13:ee8e
  105 16.727041670   10.0.96.98 → 10.4.4.21    DNS 85 Standard query 0xbc35 A sbom-intake.datadoghq.com
  106 16.727059870   10.0.96.98 → 10.4.4.21    DNS 85 Standard query 0xfe33 AAAA sbom-intake.datadoghq.com
  107 16.727360700    10.4.4.21 → 10.0.96.98   DNS 290 Standard query response 0xbc35 A sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com A 3.233.157.164 A 3.233.150.111 A 3.233.145.115 A 3.233.156.92 A 3.233.157.2 A 3.233.147.30 A 3.233.145.101 A 3.233.157.36
  108 16.727405850    10.4.4.21 → 10.0.96.98   DNS 386 Standard query response 0xfe33 AAAA sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b900:bbac:e181:ce13:ee8e AAAA 2600:1f18:24e6:b902:3165:4ac5:379c:c352 AAAA 2600:1f18:24e6:b901:507f:f7c3:1d18:3643 AAAA 2600:1f18:24e6:b900:ec83:de80:1f12:aa72 AAAA 2600:1f18:24e6:b901:8a54:507b:a510:8779 AAAA 2600:1f18:24e6:b901:24ba:31d:c838:b74e AAAA 2600:1f18:24e6:b900:2559:52bb:6e5b:6e6c AAAA 2600:1f18:24e6:b902:17c7:98ef:7d78:9559
  109 16.728797500   10.0.96.98 → 10.4.4.33    DNS 85 Standard query 0x7235 A sbom-intake.datadoghq.com
  110 16.728909560   10.0.96.98 → 10.4.4.33    DNS 85 Standard query 0xc829 AAAA sbom-intake.datadoghq.com
  111 16.730401830    10.4.4.33 → 10.0.96.98   DNS 290 Standard query response 0x7235 A sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com A 3.233.150.114 A 3.233.157.165 A 3.233.157.4 A 3.233.157.5 A 3.233.145.119 A 3.233.157.35 A 3.233.147.23 A 3.233.147.28
  112 16.730464639    10.4.4.33 → 10.0.96.98   DNS 386 Standard query response 0xc829 AAAA sbom-intake.datadoghq.com CNAME alb-logs-http-all-shard0-1888760894.us-east-1.elb.amazonaws.com AAAA 2600:1f18:24e6:b902:3165:4ac5:379c:c352 AAAA 2600:1f18:24e6:b901:507f:f7c3:1d18:3643 AAAA 2600:1f18:24e6:b900:ec83:de80:1f12:aa72 AAAA 2600:1f18:24e6:b901:8a54:507b:a510:8779 AAAA 2600:1f18:24e6:b901:24ba:31d:c838:b74e AAAA 2600:1f18:24e6:b900:2559:52bb:6e5b:6e6c AAAA 2600:1f18:24e6:b902:17c7:98ef:7d78:9559 AAAA 2600:1f18:24e6:b900:bbac:e181:ce13:ee8e
```

### Possible Drawbacks / Trade-offs

### Additional Notes

In this PR, the logic applies only when the intake hostname is inferred by the agent from `DD_SITE`.
If the user passes an explicit URL with a `dd_url` parameter, then, it remains up to them to think about adding the trailing dot.


Diff:
diff --git a/comp/autoscaling/datadogclient/impl/status_test.go b/comp/autoscaling/datadogclient/impl/status_test.go
index ee575b6de2aa..69d4c645fb34 100644
--- a/comp/autoscaling/datadogclient/impl/status_test.go
+++ b/comp/autoscaling/datadogclient/impl/status_test.go
@@ -33,7 +33,7 @@ func TestStatusProvider(t *testing.T) {
 			metricsRedundantEndpointConfig: []endpoint{
 				{
 					"api.datadoghq.eu",
-					"https://api.datadoghq.eu",
+					"https://api.datadoghq.eu.",
 					"12345",
 					"67890",
 				},
@@ -68,10 +68,10 @@ func TestStatusProvider(t *testing.T) {
 
 			assert.NoError(t, err)
 			expectedTextOutput := `
-  - URL: https://api.datadoghq.com  [Unknown]
+  - URL: https://api.datadoghq.com.  [Unknown]
     Last failure: Never
     Last Success: Never
-  - URL: https://api.datadoghq.eu  [Unknown]
+  - URL: https://api.datadoghq.eu.  [Unknown]
     Last failure: Never
     Last Success: Never
 `
diff --git a/comp/core/agenttelemetry/impl/agenttelemetry_test.go b/comp/core/agenttelemetry/impl/agenttelemetry_test.go
index 6cefe0bf8c15..b3a0aa84a6eb 100644
--- a/comp/core/agenttelemetry/impl/agenttelemetry_test.go
+++ b/comp/core/agenttelemetry/impl/agenttelemetry_test.go
@@ -933,7 +933,7 @@ func TestSenderConfigNoConfig(t *testing.T) {
 	sndr := makeSenderImpl(t, nil, c)
 
 	url := buildURL(sndr.(*senderImpl).endpoints.Main)
-	assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com/api/v2/apmtelemetry", url)
+	assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com./api/v2/apmtelemetry", url)
 }
 
 // TestSenderConfigSite tests that the site configuration is correctly used to build the endpoint URL
@@ -948,12 +948,12 @@ func TestSenderConfigOnlySites(t *testing.T) {
 		site    string
 		testURL string
 	}{
-		{"datadoghq.com", "https://instrumentation-telemetry-intake.datadoghq.com/api/v2/apmtelemetry"},
-		{"datad0g.com", "https://instrumentation-telemetry-intake.datad0g.com/api/v2/apmtelemetry"},
-		{"datadoghq.eu", "https://instrumentation-telemetry-intake.datadoghq.eu/api/v2/apmtelemetry"},
-		{"us3.datadoghq.com", "https://instrumentation-telemetry-intake.us3.datadoghq.com/api/v2/apmtelemetry"},
-		{"us5.datadoghq.com", "https://instrumentation-telemetry-intake.us5.datadoghq.com/api/v2/apmtelemetry"},
-		{"ap1.datadoghq.com", "https://instrumentation-telemetry-intake.ap1.datadoghq.com/api/v2/apmtelemetry"},
+		{"datadoghq.com", "https://instrumentation-telemetry-intake.datadoghq.com./api/v2/apmtelemetry"},
+		{"datad0g.com", "https://instrumentation-telemetry-intake.datad0g.com./api/v2/apmtelemetry"},
+		{"datadoghq.eu", "https://instrumentation-telemetry-intake.datadoghq.eu./api/v2/apmtelemetry"},
+		{"us3.datadoghq.com", "https://instrumentation-telemetry-intake.us3.datadoghq.com./api/v2/apmtelemetry"},
+		{"us5.datadoghq.com", "https://instrumentation-telemetry-intake.us5.datadoghq.com./api/v2/apmtelemetry"},
+		{"ap1.datadoghq.com", "https://instrumentation-telemetry-intake.ap1.datadoghq.com./api/v2/apmtelemetry"},
 	}
 
 	for _, tt := range tests {
@@ -973,16 +973,16 @@ func TestSenderConfigAdditionalEndpoint(t *testing.T) {
       enabled: true
       additional_endpoints:
         - api_key: bar
-          host: instrumentation-telemetry-intake.us5.datadoghq.com
+          host: instrumentation-telemetry-intake.us5.datadoghq.com.
     `
 	sndr := makeSenderImpl(t, nil, c)
 	assert.NotNil(t, sndr)
 
 	assert.Len(t, sndr.(*senderImpl).endpoints.Endpoints, 2)
 	url := buildURL(sndr.(*senderImpl).endpoints.Endpoints[0])
-	assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com/api/v2/apmtelemetry", url)
+	assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com./api/v2/apmtelemetry", url)
 	url = buildURL(sndr.(*senderImpl).endpoints.Endpoints[1])
-	assert.Equal(t, "https://instrumentation-telemetry-intake.us5.datadoghq.com/api/v2/apmtelemetry", url)
+	assert.Equal(t, "https://instrumentation-telemetry-intake.us5.datadoghq.com./api/v2/apmtelemetry", url)
 }
 
 // TestSenderConfigPartialDDUrl dd_url overrides alone
diff --git a/comp/logs/agent/agentimpl/agent_core_init_test.go b/comp/logs/agent/agentimpl/agent_core_init_test.go
index 547b8ae5dd3f..f4f5f08e5b59 100644
--- a/comp/logs/agent/agentimpl/agent_core_init_test.go
+++ b/comp/logs/agent/agentimpl/agent_core_init_test.go
@@ -19,5 +19,5 @@ func TestBuildEndpoints(t *testing.T) {
 
 	endpoints, err := buildEndpoints(config)
 	assert.Nil(t, err)
-	assert.Equal(t, "agent-intake.logs.datadoghq.com", endpoints.Main.Host)
+	assert.Equal(t, "agent-intake.logs.datadoghq.com.", endpoints.Main.Host)
 }
diff --git a/comp/logs/agent/config/config_test.go b/comp/logs/agent/config/config_test.go
index 13e391fc0830..8e1b6683bc11 100644
--- a/comp/logs/agent/config/config_test.go
+++ b/comp/logs/agent/config/config_test.go
@@ -583,7 +583,7 @@ func (suite *ConfigTestSuite) TestEndpointsSetDDSite() {
 		configSettingPath:      "api_key",
 		isAdditionalEndpoint:   false,
 		additionalEndpointsIdx: 0,
-		Host:                   "default-intake.logs.mydomain.com",
+		Host:                   "default-intake.logs.mydomain.com.",
 		Port:                   0,
 		useSSL:                 true,
 		UseCompression:         true,
@@ -623,7 +623,7 @@ func (suite *ConfigTestSuite) TestBuildServerlessEndpoints() {
 		configSettingPath:      "api_key",
 		isAdditionalEndpoint:   false,
 		additionalEndpointsIdx: 0,
-		Host:                   "http-intake.logs.datadoghq.com",
+		Host:                   "http-intake.logs.datadoghq.com.",
 		Port:                   0,
 		useSSL:                 true,
 		UseCompression:         true,
@@ -735,7 +735,7 @@ func (suite *ConfigTestSuite) TestBuildEndpointsWithoutVector() {
 	suite.config.SetWithoutSource("observability_pipelines_worker.logs.url", "observability_pipelines_worker.host:8443")
 	endpoints, err := BuildHTTPEndpoints(suite.config, "test-track", "test-proto", "test-source")
 	suite.Nil(err)
-	expectedEndpoints := getTestEndpoints(getTestEndpoint("agent-http-intake.logs.datadoghq.com", 0, true))
+	expectedEndpoints := getTestEndpoints(getTestEndpoint("agent-http-intake.logs.datadoghq.com.", 0, true))
 	suite.Nil(err)
 	suite.compareEndpoints(expectedEndpoints, endpoints)
 }
@@ -769,7 +769,7 @@ func (suite *ConfigTestSuite) TestEndpointsSetNonDefaultCustomConfigs() {
 		configSettingPath:       "api_key",
 		isAdditionalEndpoint:    false,
 		additionalEndpointsIdx:  0,
-		Host:                    "ndmflow-intake.datadoghq.com",
+		Host:                    "ndmflow-intake.datadoghq.com.",
 		Port:                    0,
 		useSSL:                  true,
 		UseCompression:          false,
diff --git a/comp/logs/agent/config/endpoints_test.go b/comp/logs/agent/config/endpoints_test.go
index 1016f1279885..adb54abaa4c3 100644
--- a/comp/logs/agent/config/endpoints_test.go
+++ b/comp/logs/agent/config/endpoints_test.go
@@ -28,25 +28,25 @@ func (suite *EndpointsTestSuite) SetupTest() {
 }
 
 func (suite *EndpointsTestSuite) TestLogsEndpointConfig() {
-	suite.Equal("agent-intake.logs.datadoghq.com", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
+	suite.Equal("agent-intake.logs.datadoghq.com.", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
 	endpoints, err := BuildEndpoints(suite.config, HTTPConnectivityFailure, "test-track", "test-proto", "test-source")
 	suite.Nil(err)
-	suite.Equal("agent-intake.logs.datadoghq.com", endpoints.Main.Host)
+	suite.Equal("agent-intake.logs.datadoghq.com.", endpoints.Main.Host)
 	suite.Equal(10516, endpoints.Main.Port)
 
 	suite.config.SetWithoutSource("site", "datadoghq.com")
-	suite.Equal("agent-intake.logs.datadoghq.com", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
+	suite.Equal("agent-intake.logs.datadoghq.com.", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
 	endpoints, err = BuildEndpoints(suite.config, HTTPConnectivityFailure, "test-track", "test-proto", "test-source")
 	suite.Nil(err)
-	suite.Equal("agent-intake.logs.datadoghq.com", endpoints.Main.Host)
+	suite.Equal("agent-intake.logs.datadoghq.com.", endpoints.Main.Host)
 	suite.Equal(10516, endpoints.Main.Port)
 
 	suite.config.SetWithoutSource("site", "datadoghq.eu")
-	suite.Equal("agent-intake.logs.datadoghq.eu", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
+	suite.Equal("agent-intake.logs.datadoghq.eu.", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
 	endpoints, err = BuildEndpoints(suite.config, HTTPConnectivityFailure, "test-track", "test-proto", "test-source")
 	suite.Nil(err)
-	suite.Equal("agent-intake.logs.datadoghq.eu", endpoints.Main.Host)
-	suite.Equal(443, endpoints.Main.Port)
+	suite.Equal("agent-intake.logs.datadoghq.eu.", endpoints.Main.Host)
+	suite.Equal(10516, endpoints.Main.Port)
 
 	suite.config.SetWithoutSource("logs_config.dd_url", "lambda.logs.datadoghq.co.jp")
 	suite.Equal("lambda.logs.datadoghq.co.jp", pkgconfigutils.GetMainEndpoint(suite.config, tcpEndpointPrefix, "logs_config.dd_url"))
@@ -76,7 +76,7 @@ func (suite *EndpointsTestSuite) TestBuildEndpointsShouldSucceedWithDefaultAndVa
 	suite.Nil(err)
 	endpoint = endpoints.Main
 	suite.Equal("azerty", endpoint.GetAPIKey())
-	suite.Equal("agent-intake.logs.datadoghq.com", endpoint.Host)
+	suite.Equal("agent-intake.logs.datadoghq.com.", endpoint.Host)
 	suite.Equal(10516, endpoint.Port)
 	suite.True(endpoint.UseSSL())
 	suite.Equal("boz:1234", endpoint.ProxyAddress)
@@ -132,7 +132,7 @@ func (suite *EndpointsTestSuite) TestBuildEndpointsShouldSucceedWithValidHTTPCon
 
 	endpoint = endpoints.Main
 	suite.True(endpoint.UseSSL())
-	suite.Equal("agent-http-intake.logs.datadoghq.com", endpoint.Host)
+	suite.Equal("agent-http-intake.logs.datadoghq.com.", endpoint.Host)
 }
 
 func (suite *EndpointsTestSuite) TestBuildEndpointsShouldSucceedWithValidHTTPConfigAndCompression() {
@@ -248,7 +248,7 @@ func (suite *EndpointsTestSuite) TestBuildEndpointsShouldSucceedWhenMigratingToA
 	suite.config.SetWithoutSource("logs_config.logs_dd_url", "")
 	endpoints, err := BuildEndpoints(suite.config, HTTPConnectivityFailure, "test-track", "test-proto", "test-source")
 	suite.Nil(err)
-	suite.Equal("agent-intake.logs.datadoghq.com", endpoints.Main.Host)
+	suite.Equal("agent-intake.logs.datadoghq.com.", endpoints.Main.Host)
 	suite.Equal(10516, endpoints.Main.Port)
 }
 
diff --git a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/agent_test.go b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/agent_test.go
index 899f61fec184..1ee47a01bf9d 100644
--- a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/agent_test.go
+++ b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/agent_test.go
@@ -190,6 +190,6 @@ func TestBuildEndpoints(t *testing.T) {
 
 	endpoints, err := buildEndpoints(deps.Config, deps.Log, config.OTelCollectorIntakeOrigin)
 	assert.Nil(t, err)
-	assert.Equal(t, "agent-http-intake.logs.datadoghq.com", endpoints.Main.Host)
+	assert.Equal(t, "agent-http-intake.logs.datadoghq.com.", endpoints.Main.Host)
 	assert.Equal(t, config.OTelCollectorIntakeOrigin, endpoints.Main.Origin)
 }
diff --git a/comp/trace/config/config_test.go b/comp/trace/config/config_test.go
index 4633b1e7d8e5..55061810611b 100644
--- a/comp/trace/config/config_test.go
+++ b/comp/trace/config/config_test.go
@@ -163,7 +163,7 @@ func TestTelemetryEndpointsConfig(t *testing.T) {
 
 		assert.True(t, cfg.TelemetryConfig.Enabled)
 		assert.Len(t, cfg.TelemetryConfig.Endpoints, 1)
-		assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com", cfg.TelemetryConfig.Endpoints[0].Host)
+		assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com.", cfg.TelemetryConfig.Endpoints[0].Host)
 	})
 
 	t.Run("dd_url", func(t *testing.T) {
@@ -206,7 +206,7 @@ func TestTelemetryEndpointsConfig(t *testing.T) {
 
 		assert.True(t, cfg.TelemetryConfig.Enabled)
 		assert.Len(t, cfg.TelemetryConfig.Endpoints, 1)
-		assert.Equal(t, "https://instrumentation-telemetry-intake.new_site.example.com", cfg.TelemetryConfig.Endpoints[0].Host)
+		assert.Equal(t, "https://instrumentation-telemetry-intake.new_site.example.com.", cfg.TelemetryConfig.Endpoints[0].Host)
 	})
 
 	t.Run("additional-hosts", func(t *testing.T) {
@@ -223,7 +223,7 @@ func TestTelemetryEndpointsConfig(t *testing.T) {
 		require.NotNil(t, cfg)
 
 		assert.True(t, cfg.TelemetryConfig.Enabled)
-		assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com", cfg.TelemetryConfig.Endpoints[0].Host)
+		assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com.", cfg.TelemetryConfig.Endpoints[0].Host)
 
 		assert.Len(t, cfg.TelemetryConfig.Endpoints, 3)
 		for _, endpoint := range cfg.TelemetryConfig.Endpoints[1:] {
@@ -246,7 +246,7 @@ func TestTelemetryEndpointsConfig(t *testing.T) {
 		require.NotNil(t, cfg)
 
 		assert.True(t, cfg.TelemetryConfig.Enabled)
-		assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com", cfg.TelemetryConfig.Endpoints[0].Host)
+		assert.Equal(t, "https://instrumentation-telemetry-intake.datadoghq.com.", cfg.TelemetryConfig.Endpoints[0].Host)
 
 		assert.Len(t, cfg.TelemetryConfig.Endpoints, 3)
 		for _, endpoint := range cfg.TelemetryConfig.Endpoints[1:] {
@@ -486,8 +486,8 @@ func TestSite(t *testing.T) {
 		file string
 		url  string
 	}{
-		"default":  {"./testdata/site_default.yaml", "https://trace.agent.datadoghq.com"},
-		"eu":       {"./testdata/site_eu.yaml", "https://trace.agent.datadoghq.eu"},
+		"default":  {"./testdata/site_default.yaml", "https://trace.agent.datadoghq.com."},
+		"eu":       {"./testdata/site_eu.yaml", "https://trace.agent.datadoghq.eu."},
 		"url":      {"./testdata/site_url.yaml", "some.other.datadoghq.eu"},
 		"override": {"./testdata/site_override.yaml", "some.other.datadoghq.eu"},
 		"vector":   {"./testdata/observability_pipelines_worker_override.yaml", "https://observability_pipelines_worker.domain.tld:8443"},
@@ -835,7 +835,7 @@ func TestLoadEnv(t *testing.T) {
 		cfg := config.Object()
 
 		assert.NotNil(t, cfg)
-		assert.Equal(t, apiEndpointPrefix+"my-site.com", cfg.Endpoints[0].Host)
+		assert.Equal(t, apiEndpointPrefix+"my-site.com.", cfg.Endpoints[0].Host)
 	})
 
 	env = "DD_APM_ENABLED"
diff --git a/pkg/config/setup/process.go b/pkg/config/setup/process.go
index 07964ccef0a0..3c0cc51eb4e9 100644
--- a/pkg/config/setup/process.go
+++ b/pkg/config/setup/process.go
@@ -57,10 +57,10 @@ const (
 	DefaultProcessEntityStreamPort = 6262
 
 	// DefaultProcessEndpoint is the default endpoint for the process agent to send payloads to
-	DefaultProcessEndpoint = "https://process.datadoghq.com"
+	DefaultProcessEndpoint = "https://process.datadoghq.com."
 
 	// DefaultProcessEventsEndpoint is the default endpoint for the process agent to send event payloads to
-	DefaultProcessEventsEndpoint = "https://process-events.datadoghq.com"
+	DefaultProcessEventsEndpoint = "https://process-events.datadoghq.com."
 
 	// DefaultProcessEventStoreMaxItems is the default maximum amount of events that can be stored in the Event Store
 	DefaultProcessEventStoreMaxItems = 200
diff --git a/pkg/config/utils/endpoints.go b/pkg/config/utils/endpoints.go
index 4966bea3e4ac..fd4f74f24337 100644
--- a/pkg/config/utils/endpoints.go
+++ b/pkg/config/utils/endpoints.go
@@ -170,7 +170,11 @@ func GetMultipleEndpoints(c pkgconfigmodel.Reader) (map[string][]APIKeys, error)
 
 // BuildURLWithPrefix will return an HTTP(s) URL for a site given a certain prefix
 func BuildURLWithPrefix(prefix, site string) string {
-	return prefix + strings.TrimSpace(site)
+	site = strings.TrimSpace(site)
+	if !strings.HasSuffix(site, ".") {
+		site += "."
+	}
+	return prefix + site
 }
 
 // GetMainEndpoint returns the main DD URL defined in the config, based on `site` and the prefix, or ddURLKey
diff --git a/pkg/config/utils/endpoints_test.go b/pkg/config/utils/endpoints_test.go
index 8facce3e4ea8..23194d6474a9 100644
--- a/pkg/config/utils/endpoints_test.go
+++ b/pkg/config/utils/endpoints_test.go
@@ -22,7 +22,7 @@ func TestSecretBackendWithMultipleEndpoints(t *testing.T) {
 	conf := mock.NewFromFile(t, "./tests/datadog_secrets.yaml")
 
 	expectedKeysPerDomain := map[string][]APIKeys{
-		"https://app.datadoghq.com": {
+		"https://app.datadoghq.com.": {
 			NewAPIKeys("api_key", "someapikey"),
 			NewAPIKeys("additional_endpoints", "someotherapikey"),
 		},
@@ -37,10 +37,10 @@ func TestGetMultipleEndpointsDefault(t *testing.T) {
 api_key: fakeapikey
 
 additional_endpoints:
-  "https://app.datadoghq.com":
+  "https://app.datadoghq.com.":
   - fakeapikey2
   - fakeapikey3
-  "https://foo.datadoghq.com":
+  "https://foo.datadoghq.com.":
   - someapikey
 `
 
@@ -49,10 +49,10 @@ additional_endpoints:
 	multipleEndpoints, err := GetMultipleEndpoints(testConfig)
 
 	expectedMultipleEndpoints := map[string][]APIKeys{
-		"https://foo.datadoghq.com": {
+		"https://foo.datadoghq.com.": {
 			NewAPIKeys("additional_endpoints", "someapikey"),
 		},
-		"https://app.datadoghq.com": {
+		"https://app.datadoghq.com.": {
 			NewAPIKeys("api_key", "fakeapikey"),
 			NewAPIKeys("additional_endpoints", "fakeapikey2", "fakeapikey3"),
 		},
@@ -95,17 +95,17 @@ additional_endpoints:
 
 func TestGetMultipleEndpointsEnvVar(t *testing.T) {
 	t.Setenv("DD_API_KEY", "fakeapikey")
-	t.Setenv("DD_ADDITIONAL_ENDPOINTS", "{\"https://foo.datadoghq.com\": [\"someapikey\"]}")
+	t.Setenv("DD_ADDITIONAL_ENDPOINTS", "{\"https://foo.datadoghq.com.\": [\"someapikey\"]}")
 
 	testConfig := mock.New(t)
 
 	multipleEndpoints, err := GetMultipleEndpoints(testConfig)
 
 	expectedMultipleEndpoints := map[string][]APIKeys{
-		"https://foo.datadoghq.com": {
+		"https://foo.datadoghq.com.": {
 			NewAPIKeys("additional_endpoints", "someapikey"),
 		},
-		"https://app.datadoghq.com": {
+		"https://app.datadoghq.com.": {
 			NewAPIKeys("api_key", "fakeapikey"),
 		},
 	}
@@ -120,10 +120,10 @@ site: datadoghq.eu
 api_key: fakeapikey
 
 additional_endpoints:
-  "https://app.datadoghq.com":
+  "https://app.datadoghq.com.":
   - fakeapikey2
   - fakeapikey3
-  "https://foo.datadoghq.com":
+  "https://foo.datadoghq.com.":
   - someapikey
 `
 
@@ -132,13 +132,13 @@ additional_endpoints:
 	multipleEndpoints, err := GetMultipleEndpoints(testConfig)
 
 	expectedMultipleEndpoints := map[string][]APIKeys{
-		"https://app.datadoghq.eu": {
+		"https://app.datadoghq.eu.": {
 			NewAPIKeys("api_key", "fakeapikey"),
 		},
-		"https://foo.datadoghq.com": {
+		"https://foo.datadoghq.com.": {
 			NewAPIKeys("additional_endpoints", "someapikey"),
 		},
-		"https://app.datadoghq.com": {
+		"https://app.datadoghq.com.": {
 			NewAPIKeys("additional_endpoints", "fakeapikey2", "fakeapikey3"),
 		},
 	}
@@ -242,14 +242,14 @@ func TestSiteEnvVar(t *testing.T) {
 	externalAgentURL := GetMainEndpoint(testConfig, "https://external-agent.", "external_config.external_agent_dd_url")
 
 	expectedMultipleEndpoints := map[string][]APIKeys{
-		"https://app.datadoghq.eu": {
+		"https://app.datadoghq.eu.": {
 			NewAPIKeys("api_key", "fakeapikey"),
 		},
 	}
 
 	assert.NoError(t, err)
 	assert.EqualValues(t, expectedMultipleEndpoints, multipleEndpoints)
-	assert.Equal(t, "https://external-agent.datadoghq.eu", externalAgentURL)
+	assert.Equal(t, "https://external-agent.datadoghq.eu.", externalAgentURL)
 }
 
 func TestDefaultSite(t *testing.T) {
@@ -262,14 +262,14 @@ api_key: fakeapikey
 	externalAgentURL := GetMainEndpoint(testConfig, "https://external-agent.", "external_config.external_agent_dd_url")
 
 	expectedMultipleEndpoints := map[string][]APIKeys{
-		"https://app.datadoghq.com": {
+		"https://app.datadoghq.com.": {
 			NewAPIKeys("api_key", "fakeapikey"),
 		},
 	}
 
 	assert.NoError(t, err)
 	assert.EqualValues(t, expectedMultipleEndpoints, multipleEndpoints)
-	assert.Equal(t, "https://external-agent.datadoghq.com", externalAgentURL)
+	assert.Equal(t, "https://external-agent.datadoghq.com.", externalAgentURL)
 }
 
 func TestSite(t *testing.T) {
@@ -283,14 +283,14 @@ api_key: fakeapikey
 	externalAgentURL := GetMainEndpoint(testConfig, "https://external-agent.", "external_config.external_agent_dd_url")
 
 	expectedMultipleEndpoints := map[string][]APIKeys{
-		"https://app.datadoghq.eu": {
+		"https://app.datadoghq.eu.": {
 			NewAPIKeys("api_key", "fakeapikey"),
 		},
 	}
 
 	assert.NoError(t, err)
 	assert.EqualValues(t, expectedMultipleEndpoints, multipleEndpoints)
-	assert.Equal(t, "https://external-agent.datadoghq.eu", externalAgentURL)
+	assert.Equal(t, "https://external-agent.datadoghq.eu.", externalAgentURL)
 }
 
 func TestDDURLEnvVar(t *testing.T) {
diff --git a/pkg/config/utils/tests/datadog_secrets.yaml b/pkg/config/utils/tests/datadog_secrets.yaml
index c6a11f5559d5..978910753f8f 100644
--- a/pkg/config/utils/tests/datadog_secrets.yaml
+++ b/pkg/config/utils/tests/datadog_secrets.yaml
@@ -2,4 +2,4 @@ api_key: someapikey
 secret_backend_command: /bin/foo
 
 additional_endpoints:
-  "https://app.datadoghq.com": "someotherapikey"
+  "https://app.datadoghq.com.": "someotherapikey"
diff --git a/pkg/logs/status/status_test.go b/pkg/logs/status/status_test.go
index 1d37e7ee3482..4a8d5e3a40e1 100644
--- a/pkg/logs/status/status_test.go
+++ b/pkg/logs/status/status_test.go
@@ -145,5 +145,5 @@ func TestStatusEndpoints(t *testing.T) {
 	initStatus(t)
 
 	status := Get(false)
-	assert.Equal(t, "Reliable: Sending uncompressed logs in SSL encrypted TCP to agent-intake.logs.datadoghq.com on port 10516", status.Endpoints[0])
+	assert.Equal(t, "Reliable: Sending uncompressed logs in SSL encrypted TCP to agent-intake.logs.datadoghq.com. on port 10516", status.Endpoints[0])
 }
diff --git a/pkg/process/runner/endpoints_test.go b/pkg/process/runner/endpoints_test.go
index 4e5d31060e48..b3238d1b9619 100644
--- a/pkg/process/runner/endpoints_test.go
+++ b/pkg/process/runner/endpoints_test.go
@@ -122,19 +122,19 @@ func TestGetAPIEndpointsSite(t *testing.T) {
 		{
 			name:                   "site only",
 			site:                   "datadoghq.io",
-			expectedHostname:       "process.datadoghq.io",
-			expectedEventsHostname: "process-events.datadoghq.io",
+			expectedHostname:       "process.datadoghq.io.",
+			expectedEventsHostname: "process-events.datadoghq.io.",
 		},
 		{
 			name:                   "dd_url only",
 			ddURL:                  "https://process.datadoghq.eu",
 			expectedHostname:       "process.datadoghq.eu",
-			expectedEventsHostname: "process-events.datadoghq.com",
+			expectedEventsHostname: "process-events.datadoghq.com.",
 		},
 		{
 			name:                   "events_dd_url only",
 			eventsDDURL:            "https://process-events.datadoghq.eu",
-			expectedHostname:       "process.datadoghq.com",
+			expectedHostname:       "process.datadoghq.com.",
 			expectedEventsHostname: "process-events.datadoghq.eu",
 		},
 		{
diff --git a/releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml b/releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml
new file mode 100644
index 000000000000..92abc220be14
--- /dev/null
+++ b/releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml
@@ -0,0 +1,12 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+---
+fixes:
+  - |
+    Use FQDNs when the Agent builds intake hostnames with ``DD_SITE`` to prevent generating as many DNS queries as there are entries in the ``search`` section of the ``/etc/resolv.conf` file.
+    If an intake full URL is explicitly set with a ``dd_url`` parameter, then, the parameter is used as-is and using FQDNs or not remains a user choice.


Reviews:
user: login: drichards-87
body: Left a suggestion from Docs and approved the PR.
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-05T18:12:45Z
user: login: sblumenthal
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-07T13:10:56Z
user: login: pgimalac
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-07T13:30:01Z
user: login: rahulkaukuntla
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-07T17:36:30Z
user: login: L3n41c
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-07T20:31:20Z
user: login: L3n41c
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-07T20:32:44Z
user: login: ichinaski
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-12T08:44:17Z
user: login: songy23
body: Approval for otel-agent
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-12T13:48:08Z
user: login: gh123man
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-12T15:16:25Z
user: login: misteriaud
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-13T08:28:27Z
user: login: iglendd
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T11:41:21Z
user: login: daniel-taf
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-13T13:06:25Z
user: login: chatgpt-codex-connector[bot]
body: 
### 💡 Codex Review

Here are some automated review suggestions for this pull request.

**Reviewed commit:** `c97904e9bb`
    

<details> <summary>ℹ️ About Codex in GitHub</summary>
<br/>

[Your team has set up Codex to review pull requests in this repo](http://chatgpt.com/codex/settings/general). Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.




Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
            
</details>
state: COMMENTED
author_association: NONE
submitted_at: 2026-02-12T21:12:08Z

Review comments:
diff_hunk: @@ -0,0 +1,13 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+---
+fixes:
+  - |
+    Make the agent use FQDN when building intake hostnames to avoid
+    generating as many useless DNS queries as entries in the
+    ``search`` section of the ``/etc/resolv.conf` file.
path: releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml
user: login: drichards-87
body: ```suggestion
    Use FQDNs when the Agent builds intake hostnames to prevent generating as many DNS queries as there are entries in the ``search`` section of the ``/etc/resolv.conf` file.
```
created_at: 2025-05-05T18:12:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,13 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+---
+fixes:
+  - |
+    Make the agent use FQDN when building intake hostnames to avoid
+    generating as many useless DNS queries as entries in the
+    ``search`` section of the ``/etc/resolv.conf` file.
path: releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml
user: login: pgimalac
body: Maybe specify that it's only when DD_SITE config is used, not when the full URL is provided ?
created_at: 2025-05-07T13:29:58Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,11 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+---
+fixes:
+  - |
+    Use FQDNs when the Agent builds intake hostnames to prevent generating as many DNS queries as there are entries in the ``search`` section of the ``/etc/resolv.conf` file.
path: releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml
user: login: L3n41c
body: ```suggestion
    Use FQDNs when the Agent builds intake hostnames with ``DD_SITE`` to prevent generating as many DNS queries as there are entries in the ``search`` section of the ``/etc/resolv.conf` file.
    If an intake full URL is explicitly set with a ``dd_url`` parameter, then, the parameter is used as-is and using FQDNs or not remains a user choice.
```
created_at: 2025-05-07T20:31:19Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,13 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+---
+fixes:
+  - |
+    Make the agent use FQDN when building intake hostnames to avoid
+    generating as many useless DNS queries as entries in the
+    ``search`` section of the ``/etc/resolv.conf` file.
path: releasenotes/notes/no-useless-DNS-queries-1ed8ff14e0684da1.yaml
user: login: L3n41c
body: Addressed in https://github.com/DataDog/datadog-agent/pull/36644/commits/11f7e06ec8337bf70d8d013400d8855f3537fd8a.
created_at: 2025-05-07T20:32:44Z
author_association: MEMBER
diff_hunk: @@ -170,7 +170,11 @@ func GetMultipleEndpoints(c pkgconfigmodel.Reader) (map[string][]APIKeys, error)
 
 // BuildURLWithPrefix will return an HTTP(s) URL for a site given a certain prefix
 func BuildURLWithPrefix(prefix, site string) string {
-	return prefix + strings.TrimSpace(site)
+	site = strings.TrimSpace(site)
+	if !strings.HasSuffix(site, ".") {
+		site += "."
path: pkg/config/utils/endpoints.go
user: login: chatgpt-codex-connector[bot]
body: **<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Keep TCP endpoint mappings compatible with dotted site hosts**

Appending a trailing dot to every `site` value changes `GetMainEndpoint` outputs to hostnames like `agent-intake.logs.datadoghq.eu.`, but `buildTCPEndpoints` in `comp/logs/agent/config/config.go` still does exact map lookups against undotted keys in `logsEndpoints` (for example `agent-intake.logs.datadoghq.eu` -> `443`). The lookup now misses and falls back to `logs_config.dd_port` (default `10516`), so EU log intake uses the wrong default TCP port whenever the agent is in TCP mode (e.g., HTTP connectivity failure, forced TCP, or SOCKS proxy).

Useful? React with 👍 / 👎.
created_at: 2026-02-12T21:12:08Z
author_association: NONE

PR comments:
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-05T15:35:27Z
body: ## Uncompressed package size comparison

Comparison with [ancestor](https://github.com/DataDog/datadog-agent/commit/6f4b965a2c1ade2639866c63b7d2c29e0eb32116) `6f4b965a2c1ade2639866c63b7d2c29e0eb32116`


<details>
  <summary> Diff per package </summary>

|package|diff|status|size|ancestor|threshold|
|--|--|--|--|--|--|
|datadog-agent-amd64-deb|0.00MB|✅|775.98MB|775.98MB|0.50MB|
|datadog-agent-x86_64-rpm|0.00MB|✅|784.92MB|784.92MB|0.50MB|
|datadog-agent-x86_64-suse|0.00MB|✅|784.92MB|784.92MB|0.50MB|
|datadog-agent-arm64-deb|0.00MB|✅|765.77MB|765.77MB|0.50MB|
|datadog-agent-aarch64-rpm|0.00MB|✅|774.69MB|774.69MB|0.50MB|
|datadog-dogstatsd-amd64-deb|0.00MB|✅|31.20MB|31.20MB|0.50MB|
|datadog-dogstatsd-x86_64-rpm|0.00MB|✅|31.28MB|31.28MB|0.50MB|
|datadog-dogstatsd-x86_64-suse|0.00MB|✅|31.28MB|31.28MB|0.50MB|
|datadog-dogstatsd-arm64-deb|0.00MB|✅|30.03MB|30.03MB|0.50MB|
|datadog-heroku-agent-amd64-deb|0.00MB|✅|377.85MB|377.85MB|0.50MB|
|datadog-iot-agent-amd64-deb|0.00MB|✅|60.52MB|60.52MB|0.50MB|
|datadog-iot-agent-x86_64-rpm|0.00MB|✅|60.60MB|60.60MB|0.50MB|
|datadog-iot-agent-x86_64-suse|0.00MB|✅|60.60MB|60.60MB|0.50MB|
|datadog-iot-agent-arm64-deb|0.00MB|✅|57.81MB|57.81MB|0.50MB|
|datadog-iot-agent-aarch64-rpm|0.00MB|✅|57.89MB|57.89MB|0.50MB|

</details>

## Decision
✅ Passed



author_association: CONTRIBUTOR
user: login: cit-pr-commenter[bot]
created_at: 2025-05-05T15:54:57Z
body: ## Regression Detector

# Regression Detector Results

[Metrics dashboard](https://app.datadoghq.com/dashboard/ykh-ua8-vcu/SMP-Regression-Detector-Metrics?fromUser=true&refresh_mode=paused&tpl_var_run-id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)  
[Target profiles](https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Adatadog-agent%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start=1746643768000&end=1746655168000&paused=true)  
Run ID: 6062a484-e6a9-407d-8662-248c39c6a3da

Baseline: 6f4b965a2c1ade2639866c63b7d2c29e0eb32116
Comparison: 11f7e06ec8337bf70d8d013400d8855f3537fd8a
[Diff](6f4b965a2c1ade2639866c63b7d2c29e0eb32116...11f7e06ec8337bf70d8d013400d8855f3537fd8a)


## Optimization Goals: ✅ No significant changes detected


<details>
<summary><h2>
Fine details of change detection per experiment
</h2></summary>

| perf | experiment                                   | goal               | Δ mean % | Δ mean % CI    | trials | links                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|------|----------------------------------------------|--------------------|----------|----------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ➖   | docker_containers_cpu                        | % cpu utilization  | +3.35    | [-0.54, +7.24] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Adocker_containers_cpu%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                           |
| ➖   | quality_gate_idle_all_features               | memory utilization | +1.49    | [+1.39, +1.60] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_idle_all_features%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false) |
| ➖   | tcp_syslog_to_blackhole                      | ingress throughput | +1.10    | [+1.05, +1.15] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Atcp_syslog_to_blackhole%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                         |
| ➖   | uds_dogstatsd_to_api_cpu                     | % cpu utilization  | +0.96    | [+0.12, +1.80] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_to_api_cpu%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                        |
| ➖   | ddot_logs                                    | memory utilization | +0.28    | [+0.16, +0.41] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Addot_logs%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                                       |
| ➖   | uds_dogstatsd_20mb_12k_contexts_20_senders   | memory utilization | +0.23    | [+0.19, +0.27] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_20mb_12k_contexts_20_senders%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                      |
| ➖   | quality_gate_idle                            | memory utilization | +0.12    | [+0.06, +0.18] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_idle%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)                           |
| ➖   | otlp_ingest_logs                             | memory utilization | +0.11    | [-0.02, +0.23] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aotlp_ingest_logs%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                                |
| ➖   | docker_containers_memory                     | memory utilization | +0.06    | [-0.03, +0.15] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Adocker_containers_memory%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                        |
| ➖   | file_to_blackhole_1000ms_latency_linear_load | egress throughput  | +0.05    | [-0.19, +0.28] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_1000ms_latency_linear_load%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                    |
| ➖   | file_to_blackhole_500ms_latency              | egress throughput  | +0.04    | [-0.56, +0.65] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_500ms_latency%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_0ms_latency_http2          | egress throughput  | +0.04    | [-0.62, +0.69] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency_http2%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                             |
| ➖   | file_to_blackhole_100ms_latency              | egress throughput  | +0.03    | [-0.60, +0.66] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_100ms_latency%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_1000ms_latency             | egress throughput  | +0.01    | [-0.60, +0.63] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_1000ms_latency%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                |
| ➖   | file_to_blackhole_300ms_latency              | egress throughput  | +0.01    | [-0.60, +0.62] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_300ms_latency%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | uds_dogstatsd_to_api                         | ingress throughput | +0.01    | [-0.26, +0.27] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_to_api%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                            |
| ➖   | tcp_dd_logs_filter_exclude                   | ingress throughput | -0.00    | [-0.02, +0.01] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Atcp_dd_logs_filter_exclude%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                      |
| ➖   | file_to_blackhole_0ms_latency                | egress throughput  | -0.00    | [-0.68, +0.67] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                   |
| ➖   | ddot_metrics                                 | memory utilization | -0.02    | [-0.14, +0.10] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Addot_metrics%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                                    |
| ➖   | file_to_blackhole_0ms_latency_http1          | egress throughput  | -0.09    | [-0.72, +0.54] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency_http1%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                             |
| ➖   | file_tree                                    | memory utilization | -0.19    | [-0.36, -0.03] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_tree%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                                       |
| ➖   | otlp_ingest_metrics                          | memory utilization | -0.43    | [-0.58, -0.28] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aotlp_ingest_metrics%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false)                                                                                                                                                                                                                                                                                                             |
| ➖   | quality_gate_logs                            | % cpu utilization  | -1.35    | [-4.10, +1.41] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_logs%20job_id%3A6062a484-e6a9-407d-8662-248c39c6a3da&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1746643768000&to_ts=1746655168000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)                           |
</details>


<details>
<summary><h2>
Bounds Checks: ✅ Passed
</h2></summary>

| perf | experiment                                   | bounds_check_name  | replicates_passed | links                                                                                                                                                                                                                                                                                            |
|------|----------------------------------------------|--------------------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ✅   | docker_containers_cpu                        | simple_check_run   | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | docker_containers_memory                     | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | docker_containers_memory                     | simple_check_run   | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency                | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency                | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http1          | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http1          | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http2          | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http2          | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_1000ms_latency             | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_1000ms_latency_linear_load | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_100ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_100ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_300ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_300ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_500ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_500ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | quality_gate_idle                            | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)              |
| ✅   | quality_gate_idle                            | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)              |
| ✅   | quality_gate_idle_all_features               | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false) |
| ✅   | quality_gate_idle_all_features               | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false) |
| ✅   | quality_gate_logs                            | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)              |
| ✅   | quality_gate_logs                            | lost_bytes         | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)              |
| ✅   | quality_gate_logs                            | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6062a484-e6a9-407d-8662-248c39c6a3da&view=spans&from_ts=1746650968000&to_ts=1746651568000&live=false)              |
</details>


<details>
<summary><h2>
Explanation
</h2></summary>

**Confidence level:** 90.00%
**Effect size tolerance:** |Δ mean %| ≥ 5.00%

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

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".
</details>

## CI Pass/Fail Decision

✅ **Passed.** All Quality Gates passed.

- **quality_gate_idle**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle_all_features**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle_all_features**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **lost_bytes**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
author_association: NONE
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-05T16:19:45Z
body: ## Static quality checks

✅ Please find below the results from static quality gates


<details>
<summary>Successful checks</summary>

### Info

|Result|Quality gate|On disk size|On disk size limit|On wire size|On wire size limit|
|----|----|----|----|----|----|
|✅|static_quality_gate_agent_deb_amd64|750.67 MiB|778.06 MiB|185.02 MiB|191.06 MiB|
|✅|static_quality_gate_agent_deb_amd64_fips|748.61 MiB|776.09 MiB|184.71 MiB|190.72 MiB|
|✅|static_quality_gate_agent_heroku_amd64|368.4 MiB|434.99 MiB|98.05 MiB|114.34 MiB|
|✅|static_quality_gate_agent_msi|968.77 MiB|978.45 MiB|146.84 MiB|151.65 MiB|
|✅|static_quality_gate_agent_rpm_amd64|750.79 MiB|778.06 MiB|186.83 MiB|193.42 MiB|
|✅|static_quality_gate_agent_rpm_amd64_fips|748.5 MiB|776.06 MiB|185.72 MiB|192.61 MiB|
|✅|static_quality_gate_agent_rpm_arm64|741.02 MiB|768.33 MiB|169.29 MiB|174.71 MiB|
|✅|static_quality_gate_agent_rpm_arm64_fips|739.04 MiB|766.55 MiB|168.07 MiB|173.92 MiB|
|✅|static_quality_gate_agent_suse_amd64|750.81 MiB|778.08 MiB|186.83 MiB|193.42 MiB|
|✅|static_quality_gate_agent_suse_amd64_fips|748.52 MiB|776.11 MiB|185.72 MiB|192.78 MiB|
|✅|static_quality_gate_agent_suse_arm64|740.87 MiB|768.31 MiB|169.29 MiB|174.71 MiB|
|✅|static_quality_gate_agent_suse_arm64_fips|738.96 MiB|766.5 MiB|168.07 MiB|173.92 MiB|
|✅|static_quality_gate_docker_agent_amd64|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_arm64|858.33 MiB|876.0 MiB|272.03 MiB|278.3 MiB|
|✅|static_quality_gate_docker_agent_jmx_amd64|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_jmx_arm64|858.33 MiB|876.63 MiB|272.03 MiB|278.4 MiB|
|✅|static_quality_gate_docker_agent_windows1809|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_core|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_core_jmx|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_jmx|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_core|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_core_jmx|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_jmx|844.93 MiB|862.5 MiB|285.2 MiB|292.0 MiB|
|✅|static_quality_gate_docker_cluster_agent_amd64|259.65 MiB|263.4 MiB|101.94 MiB|104.07 MiB|
|✅|static_quality_gate_docker_cluster_agent_arm64|275.66 MiB|279.38 MiB|96.89 MiB|98.95 MiB|
|✅|static_quality_gate_docker_cws_instrumentation_amd64|6.66 MiB|7.12 MiB|2.82 MiB|3.29 MiB|
|✅|static_quality_gate_docker_cws_instrumentation_arm64|6.44 MiB|6.92 MiB|2.6 MiB|3.07 MiB|
|✅|static_quality_gate_docker_dogstatsd_amd64|37.97 MiB|46.39 MiB|14.64 MiB|17.78 MiB|
|✅|static_quality_gate_docker_dogstatsd_arm64|36.9 MiB|45.05 MiB|13.73 MiB|16.65 MiB|
|✅|static_quality_gate_dogstatsd_deb_amd64|29.83 MiB|38.4 MiB|7.89 MiB|10.26 MiB|
|✅|static_quality_gate_dogstatsd_deb_arm64|28.71 MiB|36.98 MiB|6.87 MiB|8.96 MiB|
|✅|static_quality_gate_dogstatsd_rpm_amd64|29.83 MiB|38.4 MiB|7.9 MiB|10.27 MiB|
|✅|static_quality_gate_dogstatsd_suse_amd64|29.83 MiB|38.4 MiB|7.9 MiB|10.27 MiB|
|✅|static_quality_gate_iot_agent_deb_amd64|57.81 MiB|58.51 MiB|14.55 MiB|15.02 MiB|
|✅|static_quality_gate_iot_agent_deb_arm64|55.22 MiB|55.94 MiB|12.56 MiB|13.05 MiB|
|✅|static_quality_gate_iot_agent_deb_armhf|53.99 MiB|54.32 MiB|12.58 MiB|13.05 MiB|
|✅|static_quality_gate_iot_agent_rpm_amd64|57.81 MiB|58.51 MiB|14.57 MiB|15.04 MiB|
|✅|static_quality_gate_iot_agent_rpm_arm64|55.22 MiB|55.94 MiB|12.59 MiB|13.07 MiB|
|✅|static_quality_gate_iot_agent_suse_amd64|57.81 MiB|58.51 MiB|14.57 MiB|15.04 MiB|

</details>

author_association: CONTRIBUTOR
user: login: L3n41c
created_at: 2025-05-13T13:05:56Z
body: /merge
author_association: MEMBER
user: login: dd-devflow[bot]
created_at: 2025-05-13T13:06:01Z
body: <!-- "FeedbackWorkflowId":"7932717d-0bd5-4d1a-9fb4-8c1791afe517_36" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/7932717d-0bd5-4d1a-9fb4-8c1791afe517_36)

`2025-05-13 13:06:01 UTC` :information_source: Start processing command `/merge`

---
`2025-05-13 13:06:10 UTC` :information_source: **MergeQueue:** waiting for PR to be ready

This merge request is not mergeable yet, because of pending checks/missing approvals. It will be added to the queue as soon as checks pass and/or get approvals.
**Note:** if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with `/remove` command.

---
`2025-05-13 13:07:17 UTC` :information_source: **MergeQueue:** merge request added to the queue

The expected merge time in `main` is approximately 1h (p90).

---
`2025-05-13 14:47:00 UTC` :information_source: **MergeQueue:** This merge request was merged

author_association: NONE
user: login: vektah
created_at: 2025-07-01T05:35:25Z
body: Please document a way to DISABLE this for those behind corporate proxies.
author_association: NONE
user: login: jszwedko
created_at: 2026-02-12T21:08:51Z
body: @codex review
author_association: CONTRIBUTOR