OpenTelemetry backend
Four signals, one destination
Logs, metrics, traces and profiles all terminate in the same store. There is no fan-out to four backends, so a question that crosses signals is a join rather than a reconciliation you perform yourself.
Attributes are kept, not filtered
Resource, scope and record attributes are all stored, with no allowlist deciding which ones survive. Nested values become dotted keys rather than being discarded, so the dimension you added last week is still there to group by.
Both transports, one port
OTLP/gRPC and OTLP/HTTP are served by the same listener on the same port. There is no second endpoint to expose, no 4317-and-4318 pair to route, and no sidecar in between.
An unmodified Collector needs one exporter block and nothing else.
POST /v1/logsLogsServicePOST /v1/metricsMetricsServicePOST /v1/tracesTraceServicePOST /v1development/profilesProfilesServiceProfiles sit on the development path because that is where the OpenTelemetry specification still has them. The signal is implemented on both transports; the path will move when upstream moves it.
extensions:
basicauth/gigapipe:
client_auth:
username: <user>
password: <password>
receivers:
otlp:
protocols:
grpc:
http:
exporters:
# gRPC and HTTP are served on the same port, so either exporter
# points at the same host. Swap otlphttp for otlp to use gRPC.
otlphttp/gigapipe:
endpoint: https://<your-gigapipe-host>:3100
auth:
authenticator: basicauth/gigapipe
service:
extensions: [basicauth/gigapipe]
pipelines:
logs:
receivers: [otlp]
exporters: [otlphttp/gigapipe]
metrics:
receivers: [otlp]
exporters: [otlphttp/gigapipe]
traces:
receivers: [otlp]
exporters: [otlphttp/gigapipe]