Getting started with Uptrace and OpenTelemetry

To get started with Uptrace, you need to:

  1. Create a ClickHouse database.
  2. Install Uptrace binary.
  3. Start sending data using OpenTelemetry distro for Uptrace.
  4. Enjoy!

TIP

Dockeropen in new window example can get you started with a single command.

ClickHouse

Uptrace requires ClickHouse database to store telemetry data. After installingopen in new window ClickHouse, you can create uptrace database like this:

clickhouse-client -q "CREATE DATABASE uptrace"

When started, Uptrace will connect to the ClickHouse database specified in uptrace.yml config and will automatically create required tables and views.

Installation

Packages

Uptrace provides DEB and RPM packages for Linux amd64/arm64 systems. After installing the approriate package, you will have:

  • Uptrace binary at /usr/bin/uptrace.
  • Uptrace config at /etc/uptrace/uptrace.yml.
  • Systemd service at /lib/systemd/system/uptrace.service.
  • Environment file used by the systemd service at /etc/uptrace/uptrace.conf.

To check the status of Uptrace service:

sudo systemctl status uptrace

To restart Uptrace:

sudo systemctl restart uptrace

To view Uptrace logs:

sudo journalctl -u uptrace -f

DEB

To install Debian package, run the following command replacing 1.0.0 with the desired version and amd64 with the desired architecture:

wget https://github.com/uptrace/uptrace/releases/download/v1.0.0/uptrace_1.0.0_amd64.deb
sudo dpkg -i uptrace_1.0.0_amd64.deb

RPM

To install RPM package, run the following command replacing 1.0.0 with the desired version and x86_64 with the desired architecture:

wget https://github.com/uptrace/uptrace/releases/download/v1.0.0/uptrace-1.0.0-1.x86_64.rpm
sudo rpm -ivh uptrace-1.0.0-1.x86_64.rpm

Binaries

Alternatively, instead of installing DEB or RPM packages, you can downloadopen in new window a pre-compiled binary and install Uptrace manually.

Linux

Download Linux binary:

wget -O ./uptrace https://github.com/uptrace/uptrace/releases/download/v1.0.0/uptrace_linux_amd64
chmod +x ./uptrace

Download Uptrace config:

wget https://raw.githubusercontent.com/uptrace/uptrace/master/config/uptrace.yml

Start Uptrace:

./uptrace --config=uptrace.yml serve

MacOS

Download MacOS binary:

wget -O uptrace https://github.com/uptrace/uptrace/releases/download/v{{ uptrace.version }}/uptrace_darwin_amd64
chmod +x uptrace

Download Uptrace config:

wget https://raw.githubusercontent.com/uptrace/uptrace/master/config/uptrace.yml

Start Uptrace:

./uptrace --config=uptrace.yml serve

You may need to update ClickHouse connection string in uptrace.yml using ch.dsn option.

Other

For pre-compiled binaries for other platforms, check GitHub Releasesopen in new window.

Start sending data

To start sending data, you can install OpenTelemetry distro configured to work with Uptrace. Uptrace uses OpenTelemetry protocol (OTLP) to receive telemetry data, for example, spansopen in new window, metricsopen in new window, and logs. As a transport protocol, OTLP can use gRPC (OTLP/gRPC) or HTTP (OTLP/HTTP).

Uptrace supports OTLP/gRPC on the port 14317 and OTLP/HTTP on the port 14318. The port is specified in the Uptrace DSN that you will receive after installing Uptrace, for example:

# OTLP/gRPC
UPTRACE_DSN=http://project2_secret_token@localhost:14317/2

# OTLP/HTTP
UPTRACE_DSN=http://project2_secret_token@localhost:14318/2
DistroProtocolPort
uptrace-goOTLP/gRPC14317
uptrace-dotnetOTLP/gRPC14317
uptrace-pythonOTLP/gRPC14317
uptrace-nodeOTLP/HTTP14318
uptrace-rubyOTLP/HTTP14318
uptrace-javaOTLP/HTTP14317

For example, to run basic Go exampleopen in new window, you need to use OTLP/gRPC and port 14317:

UPTRACE_DSN=http://<project_token>:localhost:14317/<project_id> go run .

But to run basic Node.js exampleopen in new window, you need to use OTLP/HTTP and port 14318:

UPTRACE_DSN=http://<project_token>:localhost:14318/<project_id> node main.js

You can also try tutorials for the most popular frameworks:

OpenTelemetry Collector

If you are already using OpenTelemetry Collectoropen in new window, you can configure it to send data to Uptrace:

exporters:
  otlp:
    endpoint: http://localhost:14317
    tls:
      insecure: true
    headers:
      uptrace-dsn: 'http://<project_token>:localhost:14317/<project_id>'
exporters:
  otlphttp:
    endpoint: http://localhost:14318
    tls:
      insecure: true
    headers:
      uptrace-dsn: 'http://<project_token>:localhost:14318/<project_id>'

GitHub notifications

To get notified about a new Uptrace release, star the uptrace/uptraceopen in new window repo and subscribe to notifications.

  1. Click on "Watch" -> "Custom".
  2. Select "Releases".
  3. Click on "Apply" to save changes.

GitHub notifications

What's next?

Next, you can browse instrumentationsopen in new window to find examples for your framework and libraries or learn about OpenTelemetry APIopen in new window to create your own instrumentations.

Last Updated: