OpenTelemetry: otlp
Receives OTLP/HTTP logs, traces, and metrics at POST /v1/{logs,traces,metrics}. One source ingests
every service: resource attributes (e.g. service.name) become labels, so everything an OTel SDK or
Collector exports correlates by service with no per-service setup.
Prerequisites: something exporting OTLP, such as an instrumented app or an OpenTelemetry Collector,
pointed at the daemon. For OTLP/gRPC, the otlp-grpc extra (pip install 'tares[otlp-grpc]');
the receiver listens on :4317 (TARES_OTLP_GRPC_PORT, off to disable).
Set up
Agent
Ask a connected agent:
Use tares to create an OTLP source keyed by service.
The agent calls create_source; then point your exporter at the daemon (below).
Then point the exporter at the daemon:
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:8787 # OTLP/HTTP → /v1/{logs,traces,metrics}
# or gRPC (otlp-grpc extra): OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317On a secured instance (tares up --auth), exporters send an
ingest-scoped API key as Authorization: Bearer <key> (e.g.
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer <key>).
Configuration
No connector-specific fields, just labels. A label reads its value from one of three places in the
event, by path: resourceAttributes.<key> for resource attributes (for example
resourceAttributes.service.name), attributes.<key> for the attributes of a log record, span or
data point, and text for the rendered log line. There is no bare service field, so a label that
uses field: service gets no value from an OTLP event.
Verify
Recent events shows spans/logs/metric points as they arrive; Explore lists services under
the service key.