Edge Delta OTLP Destination Node

Configure the OTLP destination node in Edge Delta to send telemetry data over gRPC or HTTP to a specified endpoint.

Overview

The OTLP (OpenTelemetry Protocol) destination node in Edge Delta is used to send logs, metrics, and traces to a specified OTLP endpoint using either gRPC or HTTP protocols. This node can handle multiple data types and supports both protobuf and JSON encoding for HTTP connections, providing a comprehensive solution for telemetry data transmission. The OTLP output node requires Edge Delta version 1.32.0.

This node requires Edge Delta agent version v1.32.0 or higher.

Example Configuration

gRPC Protocol Example

nodes:
  - name: my_otlp_stream
    type: otlp_output
    endpoint: example.com
    port: 443
    protocol: grpc
    buffer_max_bytesize: 10485760 # 10MB
    buffer_ttl: 15m
    buffer_path: /var/log/edgedelta/outputbuffer
    tls:
      enabled: true
      ignore_certificate_check: false
      ca_file: /path/to/ca_file.pem

HTTP Protocol Example

nodes:
  - name: my_otlp_http_stream
    type: otlp_output
    endpoint: endpoint.example.com/receiver/v1/otlp
    port: 443
    protocol: http
    encoding: proto
    buffer_max_bytesize: 10485760 # 10MB
    buffer_ttl: 15m
    buffer_path: /var/log/edgedelta/outputbuffer
    tls:
      enabled: true
    headers:
      - header: Authorization
        value: Api-Token <your-token>

Required Parameters

name

A descriptive name for the node. This is the name that will appear in pipeline builder and you can reference this node in the YAML using the name. It must be unique across all nodes. It is a YAML list element so it begins with a - and a space followed by the string. It is a required parameter for all nodes.

nodes:
  - name: <node name>
    type: <node type>

type: otlp_output

The type parameter specifies the type of node being configured. It is specified as a string from a closed list of node types. It is a required parameter.

nodes:
  - name: <node name>
    type: <node type>

endpoint

The endpoint parameter specifies the OTLP server endpoint to send telemetry data. It is required and must be specified as a string without the protocol prefix (do not include http:// or https://). For HTTPS endpoints, configure TLS separately using the tls.enabled parameter.

nodes:
  - name: <node name>
    type: otlp_output
    endpoint: example.com/v1/otlp
    port: <port number>

Examples:

  • For gRPC: endpoint: otel.example.com
  • For HTTP: endpoint: collector.example.com/v1/traces
  • For HTTPS: endpoint: secure.example.com/receiver with tls.enabled: true

port

The port parameter defines the port number for the OTLP endpoint. It should be an integer between 1 and 65535 and is required.

protocol

The protocol parameter specifies the transport protocol to use for sending OTLP data. It is required and must be one of:

  • grpc - Use gRPC protocol (default)
  • http - Use HTTP protocol
nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    protocol: http

Note: When using http protocol with HTTPS endpoints, you must enable TLS by setting tls.enabled: true.

encoding

The encoding parameter specifies the encoding format for OTLP data when using HTTP protocol. It is required when protocol is set to http. Options are:

  • proto - Use Protocol Buffers (protobuf) encoding (recommended)
  • json - Use JSON encoding
nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    protocol: http
    encoding: proto

Note: This parameter only applies to HTTP protocol and is ignored when using gRPC.

Optional Parameters

buffer_max_bytesize

The buffer_max_bytesize parameter configures the maximum byte size for total unsuccessful items. If the limit is reached, the remaining items are discarded until the buffer space becomes available. It is specified as a datasize.Size, has a default of 0 indicating no size limit, and it is optional.

nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    buffer_max_bytesize: 2048

buffer_path

The buffer_path parameter configures the path to store unsuccessful items. Unsuccessful items are stored there to be retried back (exactly once delivery). It is specified as a string and it is optional.

nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    buffer_path: <path to unsuccessful items folder>

buffer_ttl

The buffer_ttl parameter configures the time-to-Live for unsuccessful items, which indicates when to discard them. It is specified as a duration, has a default of 10m, and it is optional.

nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    buffer_ttl: 20m

TLS Configuration

The tls parameter allows configuring SSL/TLS settings. It includes sub-parameters like enabled, ignore_certificate_check, ca_file, among others, which control the security configuration for both gRPC and HTTP connections. All TLS settings are optional.

nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    tls:
      enabled: true
      ignore_certificate_check: true
      ca_file: /path/to/ca_file.pem

Note: When using HTTP protocol with HTTPS endpoints, you must set tls.enabled: true.

headers

The headers parameter allows you to specify custom HTTP headers to be sent with OTLP requests. This is commonly used for authentication tokens or API keys. Each header consists of a header name and a value.

nodes:
  - name: <node name>
    type: otlp_output
    endpoint: <OTLP server URI>
    port: <port number>
    protocol: http
    headers:
      - header: Authorization
        value: Bearer <your-token>
      - header: X-Custom-Header
        value: <custom-value>

Note: For gRPC protocol, headers are sent as metadata. Please refer to the gRPC metadata documentation for more details.

Integration Examples

Dynatrace

nodes:
  - name: dynatrace_otlp
    type: otlp_output
    endpoint: your-environment-id.live.dynatrace.com/api/v2/otlp
    port: 443
    protocol: http
    encoding: json
    tls:
      enabled: true
    headers:
      - header: Authorization
        value: Api-Token <your-dynatrace-token>

Sumo Logic

nodes:
  - name: sumologic_otlp
    type: otlp_output
    endpoint: endpoint.collection.sumologic.com/receiver/v1/otlp/<your-collector-token>
    port: 443
    protocol: http
    encoding: proto
    tls:
      enabled: true

Important Notes

  • Endpoint Format: Do not include http:// or https:// in the endpoint field. Use the tls.enabled parameter to specify secure connections.
  • Port Specification: When using HTTPS endpoints (port 443), ensure tls.enabled: true is set.
  • Encoding for HTTP: When using HTTP protocol, specify the encoding parameter. Protobuf (proto) is recommended for better performance and smaller payload sizes.
  • Authentication: Use the headers parameter to add authentication tokens or API keys required by your OTLP receiver.

Troubleshooting

For detailed troubleshooting guidance including:

  • Connection errors and timeout issues
  • Authentication failures (401 errors)
  • Endpoint configuration problems
  • Protocol-specific troubleshooting (gRPC vs HTTP)
  • Destination-specific configuration examples

See the comprehensive OTLP Destination Troubleshooting guide.