Already running a Collector
Point an existing OpenTelemetry Collector at upzero instead of your app's SDK.
Already running a Collector
If your apps already export to your own OpenTelemetry Collector, you do not need to touch application code. Add upzero as an exporter target on that Collector's existing pipelines, using an ingestion token in place of a host application's SDK configuration.
upzero's ingestion authenticates the same way regardless of which OTel
transport carries it: a gRPC exporter sends the token as an
x-up0-ingest-token metadata header, an HTTP exporter sends it as a standard
Authorization: Bearer header. Both are accepted; use whichever your
Collector already uses for its other exporters.
exporters:
otlp/upzero:
endpoint: <UPZERO_OTLP_ENDPOINT>
headers:
x-up0-ingest-token: <UPZERO_INGEST_TOKEN>
service:
pipelines:
traces:
exporters: [otlp/upzero]
logs:
exporters: [otlp/upzero]
metrics:
exporters: [otlp/upzero]Add otlp/upzero (or otlphttp/upzero) to the exporters: list of each
pipeline you want upzero to receive, alongside whatever else that pipeline
already exports to; this is additive, not a replacement for your existing
backend.
No insecure flag
Do not set tls.insecure or tls.insecure_skip_verify on either exporter
above. Every regional ingestion endpoint is TLS-only. That flag exists in
the OTel Collector for pointing at an unencrypted Collector during local
development, and setting it against a real endpoint disables the one
mechanism that lets your Collector verify it is really talking to upzero.
Your token is scoped the same way regardless of which app sent the data
originally: to specific signals, and optionally to one service.name
(see Ingestion tokens). If your Collector
aggregates several services under one token, leave --service unset when you
create it.
Once the pipeline is wired, confirm data is arriving the same way any other guide does: see Verify ingestion.