Skip to content

OTLP (OpenTelemetry Protocol)

  • It's the wire format that OpenTelemetry-instrumented apps use to send traces, metrics, and logs to a backend (collector, processor, or vendor like Honeycomb / Datadog / Jaeger).

Two transports, conventional ports:

4317 — gRPC (binary, more efficient, the default) 4318 — HTTP/1.1 with protobuf or JSON body (easier to debug, works through proxies that don't speak gRPC) Payloads are protobuf-encoded OTLP*Request messages (ExportTraceServiceRequest, ExportMetricsServiceRequest, ExportLogsServiceRequest).

Mental model: OTLP is to OpenTelemetry what statsd is to metrics or syslog is to logs — a vendor-neutral wire protocol so instrumented apps don't have to know what backend they're shipping to.

Standard reference: https://opentelemetry.io/docs/specs/otlp/

apiVersion: v1
kind: Service
metadata:
  name: my-processor
  labels:
    app: my-processor
spec:
  type: ClusterIP
  selector:
    app: my-processor
  ports:
    - port: 4317
      targetPort: 4317
      protocol: TCP
      name: otlp-grpc
    - port: 4318
      targetPort: 4318
      protocol: TCP
      name: otlp-http