Datadog OTLP Logs Intake Endpoint
Datadog OTLP logs intake endpoint is not supported for your selected
Datadog site (
).
Overview
Datadog’s OpenTelemetry Protocol (OTLP) logs intake API endpoint allows you to send logs directly to Datadog. With this feature, you don’t need to run the Datadog Agent or OpenTelemetry Collector + Datadog Exporter.
Choose this option for a straightforward setup to send logs directly to Datadog without using the Datadog Agent or OpenTelemetry Collector.
Configuration
To send OTLP data to the Datadog OTLP logs intake endpoint, you must configure the OTLP HTTP Protobuf exporter. The process differs depending on whether you are using automatic or manual instrumentation for OpenTelemetry.
Based on your
Datadog site, which is
: Replace
${YOUR_ENDPOINT}
with
in the following examples.
Automatic instrumentation
If you are using OpenTelemetry automatic instrumentation, set the following environment variables:
export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=""
export OTEL_EXPORTER_OTLP_LOGS_HEADERS="dd-protocol=otlp,dd-api-key=${DD_API_KEY}"
Manual instrumentation
If you are using manual instrumentation with OpenTelemetry SDKs, configure the OTLP HTTP Protobuf exporter programmatically using the following examples.
The Java exporter is OtlpHttpLogRecordExporter
. To configure the exporter, use the following code snippet:
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
OtlpHttpLogRecordExporter exporter = OtlpHttpLogRecordExporter.builder()
.setEndpoint("${YOUR_ENDPOINT}") // Replace this with the correct endpoint
.addHeader("dd-protocol", "otlp")
.addHeader("dd-api-key", System.getenv("DD_API_KEY"))
.build();
The Go exporter is otlploghttp
. To configure the exporter, use the following code snippet:
import "go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp"
logExporter, err := otlploghttp.New(
ctx,
otlploghttp.WithEndpointURL("${YOUR_ENDPOINT}"), // Replace this with the correct endpoint, minus the URL path
otlploghttp.WithURLPath("/api/v2/logs"),
otlploghttp.WithHeaders(
map[string]string{
"dd-protocol": "otlp",
"dd-api-key": os.Getenv("DD_API_KEY"),
}),
)
OpenTelemetry Collector
If you are using the OpenTelemetry Collector and don’t want to use the Datadog Exporter, you can configure otlphttpexporter
to export logs to the Datadog OTLP logs intake endpoint.
Configure your config.yaml
like this:
exporters:
otlphttp:
logs_endpoint:
headers:
dd-protocol: "otlp"
dd-api-key: ${env:DD_API_KEY}
service:
pipelines:
logs:
receivers: [otlp]
processors: [batch]
exporters: [otlphttp]
Troubleshooting
Error: 403 Forbidden
If you receive a 403 Forbidden
error when sending logs to the Datadog OTLP logs intake endpoint, it indicates one of the following issues:
The API key belongs to an organization that is not allowed to access the Datadog OTLP logs intake endpoint.
Solution: Verify that you are using a valid API key with appropriate permissions.
The endpoint URL is incorrect for your organization.
Solution: Use the correct endpoint URL for your organization. Your site is
, so you need to use the
endpoint.
Further reading
Additional helpful documentation, links, and articles: