Skip to content

Commit 91c9e0f

Browse files
authored
Document OTLP intake limits and clarify host metadata defaults (#37936)
* Document OTLP intake limits and clarify host metadata defaults * Reconcile per-signal payload limits with OTLP endpoints summary * Address review: link to per-endpoint limits, reconcile host metadata opt-in
1 parent 6601529 commit 91c9e0f

5 files changed

Lines changed: 32 additions & 10 deletions

File tree

content/en/opentelemetry/mapping/host_metadata.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,19 @@ This feature is in Preview. If you have any feedback, contact <a href="/help/">D
1515

1616
## Overview
1717

18-
The Datadog exporter supports sending system information about your hosts to Datadog, which you can see in the [Infrastructure List][6]. You can send this information in OTLP through the ['Resource' field][1] as part of any of the existing signals. This is supported under any [deployment pattern][9] including gateway deploys.
18+
The Datadog Exporter collects host metadata and sends it to Datadog by default, where you can see it in the [Infrastructure List][6]. For most deployments, such as running the Collector as an agent on each host, host information is populated automatically and you do not need to follow the configuration on this page.
1919

20-
<div class="alert alert-danger">Only metadata sent through the Datadog Exporter will populate the Infrastructure Host List. Metadata sent using the direct OTLP ingest endpoint does not support this feature.</div>
20+
<div class="alert alert-info">The manual configuration described on this page is primarily for <a href="https://opentelemetry.io/docs/collector/deployment/gateway/">gateway deployments</a>, where the Collector that exports to Datadog runs separately from the hosts it reports on. In these setups, explicitly tag your resources so that the correct host metadata reaches Datadog. If you run the Collector as an agent on each host, host metadata is collected by default and you can skip this configuration.</div>
21+
22+
The Datadog Exporter supports sending system information about your hosts to Datadog. You can send this information in OTLP through the ['Resource' field][1] as part of any of the existing signals. This is supported under any [deployment pattern][9] including gateway deploys.
23+
24+
<div class="alert alert-danger">Only metadata sent through the Datadog Exporter populates the Infrastructure Host List. Metadata sent using the direct OTLP ingest endpoint does not support this feature.</div>
2125

2226
Datadog uses [OpenTelemetry semantic conventions][2] to recognize system information about your hosts. Follow the instructions for [setting up for host metrics][3] to send the necessary metrics and resource attributes to Datadog. Alternatively, you can manually send this information in the way that best fits your infrastructure.
2327

2428
## Opting in to the feature
2529

26-
To use this feature, set the `datadog.host.use_as_metadata` resource attribute to `true` in all OTLP payloads that contain information about hosts.
30+
For gateway deployments, or to manually control which resources are used for host metadata, set the `datadog.host.use_as_metadata` resource attribute to `true` in all OTLP payloads that contain information about hosts.
2731

2832
Resources populate the infrastructure list information if they have a [host-identifying attribute][10] and the `datadog.host.use_as_metadata` attribute set to `true`.
2933

content/en/opentelemetry/setup/collector_exporter/oss_setup.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ exporters:
161161
# Send telemetry to Datadog's OTLP intake endpoints
162162
otlp_http:
163163
endpoint: https://otlp.${env:DD_SITE}
164-
metrics_endpoint: https://otlp.${env:DD_SITE}/api/v2/otlpmetrics
165164
headers:
166165
dd-api-key: ${env:DD_API_KEY}
167166
# Send resource attributes and scope metadata as metric tags
@@ -347,7 +346,6 @@ exporters:
347346
# Send telemetry to Datadog's OTLP intake endpoints
348347
otlp_http:
349348
endpoint: https://otlp.${env:DD_SITE}
350-
metrics_endpoint: https://otlp.${env:DD_SITE}/api/v2/otlpmetrics
351349
headers:
352350
dd-api-key: ${env:DD_API_KEY}
353351
# Send resource attributes and scope metadata as metric tags
@@ -575,7 +573,6 @@ exporters:
575573
# Send telemetry to Datadog's OTLP intake endpoints
576574
otlp_http:
577575
endpoint: https://otlp.${env:DD_SITE}
578-
metrics_endpoint: https://otlp.${env:DD_SITE}/api/v2/otlpmetrics
579576
headers:
580577
dd-api-key: ${env:DD_API_KEY}
581578
# Send resource attributes and scope metadata as metric tags
@@ -758,7 +755,7 @@ For a complete list of dimensions included in the recommended configuration, inc
758755

759756
The `otlp_http` exporter sends telemetry data to Datadog's OTLP intake endpoints. Key configuration details:
760757

761-
- **Endpoint**: `https://otlp.<YOUR_DD_SITE>` for traces and logs, `https://otlp.<YOUR_DD_SITE>/api/v2/otlpmetrics` for metrics.
758+
- **Endpoint**: `https://otlp.<YOUR_DD_SITE>` for traces, logs, and metrics.
762759
- **Compression**: `zstd` is recommended for reduced bandwidth usage. When using `zstd`, set `compression_params.level` explicitly, because the default uses the lowest compression level.
763760

764761
#### `dd-otel-metric-config` header {#dd-otel-metric-config-header}
@@ -801,6 +798,16 @@ The `cumulativetodelta` processor converts cumulative metrics to delta temporali
801798

802799
The configuration sends the Collector's own metrics back to its local OTLP receiver (`http://localhost:4318`). This routes the Collector's internal metrics through its own pipelines so they are enriched with resource attributes before being exported to Datadog.
803800

801+
## OTLP intake limits
802+
803+
Datadog enforces the following limits when ingesting OTLP data. Data that exceeds a limit is rejected or dropped as noted.
804+
805+
**Payload size**
806+
: Each intake endpoint enforces a maximum payload size per request. Requests above the limit are rejected with an `HTTP 413 Request Entity Too Large` response. If you receive a 413, reduce the batch size or flush more frequently so each request stays under the limit. For the payload size limit of each endpoint, see [Intake limits][8].
807+
808+
**Histogram bucket count**
809+
: Each histogram datapoint is validated on ingestion, with a maximum per-bucket count (the number of observations in any single bucket) of 2,147,483,647 (2<sup>31</sup> − 1). If any bucket exceeds this, the entire datapoint is dropped.
810+
804811
## Further reading
805812

806813
{{< partial name="whats-next/whats-next.html" >}}
@@ -812,4 +819,5 @@ The configuration sends the Collector's own metrics back to its local OTLP recei
812819
[5]: https://github.com/DataDog/opentelemetry-examples/tree/experimental-oss-config/configurations/opentelemetry-collector
813820
[6]: /opentelemetry/guide/otlp_delta_temporality/
814821
[7]: /opentelemetry/compatibility/
822+
[8]: /opentelemetry/setup/otlp_ingest/#intake-limits
815823
[100]: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/latest

content/en/opentelemetry/setup/otlp_ingest/_index.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ Your setup depends on where your telemetry is coming from. Check the [Managed pl
3131

3232
See also: [Instrumenting for Agent Observability][5].
3333

34+
## Intake limits
35+
36+
Datadog enforces a maximum payload size per request on each OTLP intake endpoint. Requests that exceed the limit are rejected with an `HTTP 413 Request Entity Too Large` response. If you receive a 413, reduce the export batch size or flush more frequently so each request stays under the limit.
37+
38+
| Signal | Endpoint path | Maximum payload size |
39+
|---------|-----------------|-------------------------|
40+
| Metrics | `/v1/metrics` | 512 KiB (compressed) |
41+
| Logs | `/v1/logs` | 5.1 MiB (uncompressed) |
42+
| Traces | `/v1/traces` | 15 MiB (uncompressed) |
43+
3444
## Further reading
3545

3646
{{< partial name="whats-next/whats-next.html" >}}

content/en/opentelemetry/setup/otlp_ingest/metrics.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ If you receive a `403 Forbidden` error when sending metrics to the Datadog OTLP
255255

256256
### Error: 413 Request Entity Too Large
257257

258-
If you receive a `413 Request Entity Too Large` error when sending metrics to the Datadog OTLP metrics intake endpoint, it indicates that the payload size sent by the OTLP exporter exceeds the Datadog metrics intake endpoint's limit of 500KB for uncompressed payloads, or 5MB for compressed payloads after decompression.
258+
If you receive a `413 Request Entity Too Large` error when sending metrics to the Datadog OTLP metrics intake endpoint, it indicates that the payload size sent by the OTLP exporter exceeds the Datadog metrics intake endpoint's limit of 512 KiB (compressed).
259259

260260
This error usually occurs when the OpenTelemetry SDK batches too much telemetry data in a single request payload.
261261

content/en/opentelemetry/setup/otlp_ingest/traces.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ If you receive a `403 Forbidden` error when sending traces to the Datadog OTLP t
187187

188188
### Error: 413 Request Entity Too Large
189189

190-
If you receive a `413 Request Entity Too Large` error when sending traces to the Datadog OTLP traces intake endpoint, it indicates that the payload size sent by the OTLP exporter exceeds the Datadog traces intake endpoint's limit of 3.2MB.
190+
If you receive a `413 Request Entity Too Large` error when sending traces to the Datadog OTLP traces intake endpoint, it indicates that the payload size sent by the OTLP exporter exceeds the Datadog traces intake endpoint's limit of 15 MiB (uncompressed).
191191

192192
This error usually occurs when the OpenTelemetry SDK batches too much telemetry data in a single request payload.
193193

@@ -200,7 +200,7 @@ CopyBatchSpanProcessor batchSpanProcessor =
200200
.setMaxExportBatchSize(10) // Default is 512
201201
.build();
202202
```
203-
Adjust the `setMaxExportBatchSize` value according to your needs. A smaller value results in more frequent exports with smaller payloads, reducing the likelihood of exceeding the 3.2MB limit.
203+
Adjust the `setMaxExportBatchSize` value according to your needs. A smaller value results in more frequent exports with smaller payloads, reducing the likelihood of exceeding the 15 MiB limit.
204204

205205
### Warning: "traces export: failed … 202 Accepted" in Go
206206

0 commit comments

Comments
 (0)