Quick start

Setup and collect telemetry in minutes!

The OpenTelemetry Collector receives traces, metrics, and logs, processes the telemetry, and exports it to a wide variety of observability backends using its components. For a conceptual overview of the Collector, see Collector.

You are going to learn to do the following in less than five minutes:

  • Set up and run the OpenTelemetry Collector.
  • Send telemetry and see it processed by the Collector.


Make sure that your developer environment has the following. This page assumes that you’re using bash. Adapt configuration and commands as necessary for your preferred shell.

  • Docker or any compatible containers’ runtime.
  • Go 1.20 or higher
  • GOBIN environment variable is set; if unset, initialize it appropriately, for example1:
    export GOBIN=${GOBIN:-$(go env GOPATH)/bin}

Set up the environment

  1. Pull in the OpenTelemetry Collector Docker image:

    docker pull otel/opentelemetry-collector:0.101.0
  2. Install the telemetrygen utility:

    go install github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen@latest

    This utility can simulate a client generating traces, metrics, and logs.

Generate and collect telemetry

  1. Launch the Collector:

    docker run \
      -p \
      -p \
      otel/opentelemetry-collector:0.101.0 \
      2>&1 | tee collector-output.txt # Optionally tee output for easier search later
  2. In a separate terminal window, generate a few sample traces:

    $GOBIN/telemetrygen traces --otlp-insecure --traces 3

    Among the output generated by the utility, you should see a confirmation that traces were generated:

    2024-01-16T14:33:15.692-0500  INFO  traces/worker.go:99  traces generated  {"worker": 0, "traces": 3}
    2024-01-16T14:33:15.692-0500  INFO  traces/traces.go:58  stop the batch span processor

    For an easier time seeing relevant output you can filter it:

    $GOBIN/telemetrygen traces --otlp-insecure \
      --traces 3 2>&1 | grep -E 'start|traces|stop'
  3. In the terminal window running the Collector container, you should see trace ingest activity similar to what is shown in the following example:

    $ grep -E '^Span|(ID|Name|Kind|time|Status \w+)\s+:' ./collector-output.txt
    Span #0
        Trace ID       : f30faffbde5fcf71432f89da1bf7bc14
        Parent ID      : 6f1ff7f9cf4ec1c7
        ID             : 8d1e820c1ac57337
        Name           : okey-dokey
        Kind           : Server
        Start time     : 2024-01-16 14:13:54.585877 +0000 UTC
        End time       : 2024-01-16 14:13:54.586 +0000 UTC
        Status code    : Unset
        Status message :
    Span #1
        Trace ID       : f30faffbde5fcf71432f89da1bf7bc14
        Parent ID      :
        ID             : 6f1ff7f9cf4ec1c7
        Name           : lets-go
        Kind           : Client
        Start time     : 2024-01-16 14:13:54.585877 +0000 UTC
        End time       : 2024-01-16 14:13:54.586 +0000 UTC
        Status code    : Unset
        Status message :
  4. Open http://localhost:55679/debug/tracez and select one of the samples in the table to see the traces you’ve just generated.

  5. After you are done, shutdown the Collector container, for example, using Control-C.

Next steps

In this tutorial you’ve started the OpenTelemetry Collector and sent telemetry to it. As next steps, consider doing the following:

  1. For more information, see Your first program↩︎