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.

config.yaml
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.

On this page