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.

Prerequisites

Image for: Prerequisites

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

Image for: Set up the environment
  1. Pull in the OpenTelemetry Collector Contrib Docker image:

    docker pull otel/opentelemetry-collector-contrib:0.127.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

Image for: Generate and collect telemetry
  1. Launch the Collector, listening on ports 4317 (for OTLP gRPC), 4318 (for OTLP HTTP) and 55679 (for ZPages):

    docker run \
      -p 127.0.0.1:4317:4317 \
      -p 127.0.0.1:4318:4318 \
      -p 127.0.0.1:55679:55679 \
      otel/opentelemetry-collector-contrib:0.127.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

Image for: 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↩︎

Image for: Feedback