• Home
  • Extend Dynatrace
  • Send data to Dynatrace with OpenTelemetry
  • OpenTelemetry basics
  • OpenTelemetry Protocol (OTLP) specification

OpenTelemetry Protocol (OTLP) specification

The OpenTelemetry Protocol (OTLP) specification describes the encoding, transport, and delivery mechanism of telemetry data between telemetry sources, intermediate nodes such as collectors, and telemetry backends. OTLP is a general-purpose telemetry data delivery protocol designed within the scope of the OpenTelemetry project and directly supported by Dynatrace.

OTLP is the default protocol to transfer telemetry data used by OpenTelemetry. This protocol enables data to be sent to and analyzed by various tracing backends without needing to adapt the application code for each one.

Tracing, metrics, and logs support OTLP within their own maturity levels.

There are currently two types of communication protocol supported.

  • OTLP/HTTP (protobuf)
  • gRPC

Depending on the protocol support of the application you use to store the data, you can choose one or the other. Additionally, you can use the collector to convert a given data format into another.

OTLP and HTTP

OTLP/HTTP uses Protobuf encoded in binary (stable) or JSON format (experimental).

The protobuf of the messages is the same for OTLP/HTTP and OTLP/gRPC requests.

  • Data is sent via an HTTP POST request, either in binary or JSON-encoded Protobuf format.
  • The default URL path is /v1/traces; the request body is
    • ExportTraceServiceRequest message for traces and /v1/metrics
    • ExportMetricsServiceRequest message for metrics and /v1/logs
    • ExportLogsServiceRequest message for logs
  • The default port is 4318.

OTLP and gRPC

As the official documentation states, the OTLP/gRPC protocol is concerned with reliability of delivery between one pair of client/server nodes. No data should be lost during the request between both nodes. A delivery guarantee is not set for OTLP in systems with intermediary nodes (for example, application > agent > collector > backend).

  • Unary requests use the following messages: ExportTraceServiceRequest for traces, ExportMetricsServiceRequest for metrics, and ExportLogsServiceRequest for logs.
  • A success response is returned via the following messages:
    • ExportTraceServiceResponse for traces
    • ExportMetricsServiceResponse for metrics
    • ExportLogsServiceResponse for logs
  • The default port is 4317.