No description
  • Go 97.8%
  • Go Template 1%
  • Makefile 0.4%
  • Nix 0.4%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Y.Matsuda 9d64683c28
Merge pull request #465 from ymtdzzz/dependabot/go_modules/dependencies-a4f050513d
chore(deps): bump the dependencies group across 1 directory with 17 updates
2026-07-13 17:44:10 +09:00
.github chore: change goreleaser parallelism to 2 2026-05-04 22:11:33 +09:00
distribution add generated otelcol codes and docs 2024-03-24 23:04:18 +09:00
docs chore: update screenshots 2026-01-05 14:35:10 +09:00
tuiexporter chore(deps): bump the dependencies group across 1 directory with 17 updates 2026-07-13 04:03:53 +00:00
.gitignore chore(git): ignore serena related directory 2025-08-16 22:29:22 +09:00
.golangci.yml chore: increase golangci timeout from 5min to 10min 2026-06-15 12:48:24 +09:00
.goreleaser.yaml chore(goreleaser): remove i386 from build target 2025-10-07 13:18:24 +09:00
codecov.yml chore(codecov): ignore tuiexporter/internal/test 2025-11-15 21:17:35 +09:00
CODEOWNERS chore: use CODEOWNERS instead of reviewers in dependabot 2025-05-18 10:34:20 +09:00
components.go feat: add receivers for datadog and dogstatsd 2026-01-30 22:32:12 -05:00
config.go fix: fix or ignore lint errors 2026-02-23 11:26:39 +09:00
config.yml.tpl fix: update receiver type name from otlpjsonfile to otlp_json_file 2026-06-16 11:19:00 +09:00
config_test.go fix: update receiver type name from otlpjsonfile to otlp_json_file 2026-06-16 11:19:00 +09:00
Dockerfile chore(docker): use golang:1.24 for container build 2025-10-12 16:15:17 +09:00
Dockerfile.goreleaser Add Docker image deployment 2024-06-30 12:12:20 +09:00
flake.lock chore(nix): update nix flake to use the newer golang toolchain 2025-11-15 22:23:45 +09:00
flake.nix chore: Add Nix Flake and release workflow 2025-03-10 22:32:23 +09:00
go.mod chore(deps): bump the dependencies group across 1 directory with 17 updates 2026-07-13 04:03:53 +00:00
go.sum chore(deps): bump the dependencies group across 1 directory with 17 updates 2026-07-13 04:03:53 +00:00
go.work update go.work go version to match go.mod in tuiexporter module 2026-06-15 10:11:06 +09:00
go.work.sum fix: update receiver type name from otlpjsonfile to otlp_json_file 2026-06-16 11:19:00 +09:00
LICENSE add generated otelcol codes and docs 2024-03-24 23:04:18 +09:00
main.go feat: add receivers for datadog and dogstatsd 2026-01-30 22:32:12 -05:00
main_others.go add generated otelcol codes and docs 2024-03-24 23:04:18 +09:00
main_test.go feat: support AUTH_TOKEN env for bearer token authentication 2025-12-08 09:39:41 +01:00
main_windows.go add Makefile cmds to run test and lint 2024-03-31 00:11:51 +09:00
Makefile fix: prevent fatal "concurrent map read and map write" in telemetry caches 2026-05-13 13:45:09 +09:00
manifest.yml Add GoReleaser settings 2024-06-17 19:46:45 +09:00
otel-tui.nix [Automated] Update Nix Flake 2026-05-13 12:47:53 +00:00
otel-tui.nix.tmpl fix: remove libX11 from nix 2025-12-08 21:43:57 +09:00
README.md docs: add tls.insecure: true to OTLP example in README 2026-03-04 22:23:19 +09:00
RELEASING.md doc: Add release instruction 2025-03-16 10:37:23 +09:00
screenshot.tape chore: update screenshots 2026-01-05 14:35:10 +09:00
test_data.json Add JSON File receiver and script to take screenshots automatically 2024-10-31 09:31:27 +09:00
update-nix.sh chore(nix): fix nix build error 2025-04-19 11:10:14 +09:00

otel-tui

A terminal OpenTelemetry viewer inspired by otel-desktop-viewer.

This tool currently supports OpenTelemetry, Zipkin (Traces), Prometheus (Metrics), and Datadog (Traces, Metrics, Logs) formats.

Traces Traces Spans Topologies

Metrics Metrics

Logs Logs

Getting Started

Currently, this tool exposes the ports:

  • 4317 to receive OpenTelemetry signals (gRPC)
  • 4318 to receive OpenTelemetry signals (HTTP)
  • 9411 to receive Zipkin traces (enabled by --enable-zipkin option)
  • 8126 to receive Datadog signals (enabled by --enable-datadog option)
  • 8125 to receive DogStatsD metrics (enabled by --enable-datadog option)

The server's Access-Control-Allow-Origin header includes localhost, allowing telemetry to be sent directly from browser applications running on localhost.

Options:

Usage:
  otel-tui [flags]

Flags:
      --debug-log                 Enable debug log output to file (/tmp/otel-tui.log)
      --enable-datadog            Enable the Datadog and DogStatsD receivers
      --enable-zipkin             Enable the zipkin receiver
      --from-json-file string     The JSON file path exported by JSON exporter
      --grpc int                  The port number on which we listen for OTLP grpc payloads (default 4317)
  -h, --help                      help for otel-tui
      --host string               The host where we expose our OTLP endpoints (default "0.0.0.0")
      --http int                  The port number on which we listen for OTLP http payloads (default 4318)
      --prom-target stringArray   Enable the prometheus receiver and specify the target endpoints for the receiver (--prom-target "localhost:9000" --prom-target "http://other-host:9000/custom/prometheus")
  -v, --version                   version for otel-tui

Homebrew

$ brew install ymtdzzz/tap/otel-tui

go install

$ go install github.com/ymtdzzz/otel-tui@latest

Docker

Run in the container simply:

$ docker run --rm -it --name otel-tui ymtdzzz/otel-tui:latest

Or, run as a background process and attach it:

# Run otel-tui as a background process
$ docker run --rm -dit --name otel-tui ymtdzzz/otel-tui:latest

# Show TUI in your current terminal session
$ docker attach otel-tui

# Detach by pressing Ctrl+p -> Ctrl+q

Docker Compose

First, add service to your manifest (docker-compose.yaml) for the instrumanted app

oteltui:
  image: ymtdzzz/otel-tui:latest
  container_name: otel-tui
  stdin_open: true
  tty: true
  # Override entrypoint if you want use options
  entrypoint: ["/otel-tui", "--enable-zipkin"]

Modify configuration for otelcol

exporters:
  otlp:
    endpoint: oteltui:4317
    tls:
      insecure: true
service:
  pipelines:
    traces:
      exporters: [otlp]
    logs:
      exporters: [otlp]

Run as a background process and attach it:

# Run services as usual
$ docker compose up -d

# Show TUI in your current terminal session
$ docker compose attach oteltui

# Detach by pressing Ctrl+p -> Ctrl+q

Nix

nix develop github:ymtdzzz/otel-tui

Executable Binary from Github Release page

https://github.com/ymtdzzz/otel-tui/releases

From Source

$ git clone https://github.com/ymtdzzz/otel-tui.git
$ cd otel-tui
$ go run ./...

Clipboard Functionality Requirements

The clipboard feature (y key to copy log body) requires platform-specific tools:

  • Linux/Unix: Install xclip or xsel command
  • macOS: No additional tools required
  • Windows: No additional tools required

Note: If clipboard tools are not available, the application will run normally but clipboard functionality will be disabled.

TODOs

There're a lot of things to do. Here are some of them:

  • Traces
    • Display traces
    • Filter traces
    • Show trace information
  • Metrics
    • Metric stream
      • Display metric stream
      • Filter metrics
      • Show metric information
      • Display basic chart of the selected metric
        • Gauge
        • Sum
        • Histogram
        • ExponentialHistogram
        • Summary
    • Metric list
      • Display metric stream
      • Flexible chart (query, selectable dimensions, etc.)
    • Auto refresh chart
    • Asynchronous chart rendering
  • Logs
    • Display logs
    • Filter logs
    • Show log information
    • Show logs related to a specific trace or span
  • UI
    • Improve UI
    • Add more keybindings
  • Performance
    • Timer based refresh
    • Data rotation (current buffer size: 1000 service root spans and logs)
  • Configurations
    • Port
    • Refresh interval
    • Buffer size

Contribution

Contributions are always welcome! Whether it's reporting an issue, suggesting a feature, or submitting a pull request, your involvement is greatly appreciated. Below is a simple guide to help you get started.

Creating a Pull Request

Fork the Repository

  • Start by forking this repository to your GitHub account.

Make Your Changes

  • Implement your changes in a new branch.

Write Tests

  • Add tests to verify your changes. This helps ensure the stability of the project.

Run Lint checks and Tests

  • Run the linting tools and test suite to verify your changes. Make sure everything passes before proceeding.
make lint
make lint-exporter
make test
make test-exporter

Open a Pull Request

  • Push your branch to your forked repository.
  • Open a pull request to the main repository, providing a clear description of your changes and their purpose.

Thank you for taking the time to contribute!