otel-desktop-viewer:终极本地 OpenTelemetry 监控解决方案
2026/7/23 1:26:08 网站建设 项目流程

otel-desktop-viewer:终极本地 OpenTelemetry 监控解决方案

【免费下载链接】otel-desktop-viewerotel-desktop-viewer is a CLI tool for receiving OpenTelemetry traces while working on your local machine.项目地址: https://gitcode.com/gh_mirrors/ot/otel-desktop-viewer

在当今的微服务和分布式系统开发中,可观测性已成为确保应用稳定性的关键因素。然而,许多开发者在本地开发环境中面临一个共同挑战:如何快速查看和分析 OpenTelemetry 数据?传统的云监控方案配置复杂,延迟高,不适合本地调试。这就是otel-desktop-viewer诞生的原因——一个专为本地开发设计的强大 OpenTelemetry 数据可视化工具。

otel-desktop-viewer 是一个基于 Go 语言实现的 CLI 工具,它能够接收、存储和可视化 OpenTelemetry 的三大支柱数据:追踪(Traces)、指标(Metrics)和日志(Logs)。它采用 DuckDB 作为后端存储,结合 Svelte 5 构建的现代化 Web UI,为开发者提供了一个简单、快速、免费的本地监控解决方案。

快速上手体验:三分钟启动监控

安装 otel-desktop-viewer 非常简单,无论你使用哪种操作系统,都能快速开始。以下是几种最常用的安装方式:

通过 Homebrew 安装(macOS 用户)

对于 macOS 用户,这是最简单的安装方式:

brew tap ctrlspice/otel-desktop-viewer brew install --cask otel-desktop-viewer

通过 Go 安装(开发者首选)

如果你已经安装了 Go 开发环境,可以直接从源码安装:

go install github.com/CtrlSpice/otel-desktop-viewer@latest export PATH="$(go env GOPATH)/bin:$PATH" otel-desktop-viewer

通过 Docker 运行

不想安装任何依赖?使用 Docker 是最佳选择:

docker pull ghcr.io/ctrlspice/otel-desktop-viewer:latest docker run -p 8000:8000 -p 4317:4317 -p 4318:4318 ghcr.io/ctrlspice/otel-desktop-viewer:latest

通过预编译二进制文件

项目为各个平台提供了预编译的二进制文件,你可以直接从发布页面下载对应版本:

平台架构文件
macOSApple Silicon (M1–M4)otel-desktop-viewer_darwin_arm64.tar.gz
macOSIntelotel-desktop-viewer_darwin_amd64.tar.gz
Linuxx86_64otel-desktop-viewer_linux_amd64.tar.gz
Linuxarm64otel-desktop-viewer_linux_arm64.tar.gz
Windowsx86_64otel-desktop-viewer_windows_amd64.zip

安装完成后,只需运行otel-desktop-viewer命令,工具就会自动启动并打开浏览器访问http://localhost:8000。默认情况下,它会在以下端口监听:

  • 4317: OTLP gRPC 接收端口
  • 4318: OTLP HTTP 接收端口
  • 8000: Web UI 和 JSON-RPC API 端口

核心功能详解:全方位监控体验

分布式追踪可视化

追踪功能是 otel-desktop-viewer 的亮点之一。它能够以瀑布图形式展示跨服务的调用链,让你清晰地看到请求在系统中的流转路径。

在追踪界面中,你可以看到:

  • 服务调用关系:以甘特图形式展示各个服务之间的调用顺序
  • 耗时分析:精确显示每个操作的开始时间、结束时间和持续时间
  • 错误标识:快速定位失败的服务调用(如状态码为 Error 的 span)
  • 详细元数据:点击任意追踪可查看完整的 span ID、parent ID、状态码等信息

指标数据可视化

指标监控是系统性能分析的基础。otel-desktop-viewer 提供了多种图表类型来展示指标数据:

指标界面支持:

  • 热图(Heatmap):直观展示数据在时间和数值维度上的分布
  • 直方图(Histogram):分析数据的分布情况
  • 分位数图表(Quantiles):查看数据的百分位分布
  • 实时统计:显示指标的计数、平均值、最大值、最小值等统计信息

日志查看与分析

日志是问题排查的重要依据。otel-desktop-viewer 的日志界面提供了强大的搜索和过滤功能:

日志功能包括:

  • 结构化日志查看:支持按时间戳、严重级别、服务名称等字段筛选
  • 日志关联:自动将日志与对应的追踪和 span 关联
  • 资源属性展示:显示日志来源的服务名称、版本、环境等信息
  • 快速搜索:支持关键词搜索和高级查询语法

配置与自定义:灵活适应你的需求

命令行参数配置

otel-desktop-viewer 提供了丰富的命令行参数,让你可以根据需要灵活配置:

# 基本使用 otel-desktop-viewer # 使用持久化存储 otel-desktop-viewer --db ./telemetry.duckdb # 自定义端口 otel-desktop-viewer --browser-port 8080 --grpc 4319 --http 4320 # 指定主机地址 otel-desktop-viewer --host 0.0.0.0 # 禁用自动打开浏览器 otel-desktop-viewer --open-browser=false

可用参数说明:

参数默认值说明
--browser-port8000Web UI 和 JSON-RPC API 端口
--db空(内存存储)DuckDB 文件路径,用于持久化存储
--grpc4317OTLP gRPC 监听端口
--http4318OTLP HTTP 监听端口
--hostlocalhost所有端点的绑定地址
--open-browsertrue启动时自动打开浏览器

配置你的 OpenTelemetry SDK

要让你的应用向 otel-desktop-viewer 发送数据,只需配置 OpenTelemetry SDK 的导出器:

HTTP 协议配置:

export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp" export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"

gRPC 协议配置:

export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp" export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"

Docker Compose 集成

如果你使用 Docker Compose 管理服务,可以轻松将 otel-desktop-viewer 集成到你的开发环境中:

version: '3.8' services: your-app: image: your-app:latest environment: - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-desktop-viewer:4318 - OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf - OTEL_TRACES_EXPORTER=otlp - OTEL_METRICS_EXPORTER=otlp - OTEL_LOGS_EXPORTER=otlp otel-desktop-viewer: image: ghcr.io/ctrlspice/otel-desktop-viewer:latest ports: - "8000:8000" # Web UI - "4317:4317" # gRPC - "4318:4318" # HTTP

使用场景与最佳实践

场景一:本地微服务调试

在开发微服务应用时,你经常需要调试服务间的调用链路。使用 otel-desktop-viewer,你可以:

  1. 实时查看调用链:启动所有微服务,在 UI 中实时查看请求的完整流转路径
  2. 定位性能瓶颈:通过瀑布图快速发现耗时最长的服务调用
  3. 分析错误传播:当某个服务失败时,追踪错误是如何在系统中传播的

场景二:API 性能测试

在进行 API 性能测试时,otel-desktop-viewer 可以帮助你:

  1. 监控响应时间:查看每个 API 端点的响应时间分布
  2. 分析资源使用:监控 CPU、内存等系统指标的变化趋势
  3. 识别异常模式:通过热图发现异常的请求模式或性能退化

场景三:日志集中分析

当你的应用分布在多个服务中时,日志分析变得复杂。使用 otel-desktop-viewer:

  1. 统一查看日志:将所有服务的日志集中在一个界面查看
  2. 日志关联追踪:点击日志即可查看相关的追踪信息
  3. 快速问题定位:通过日志级别过滤和关键词搜索快速定位问题

最佳实践建议

  1. 使用持久化存储:对于重要的调试会话,使用--db参数将数据保存到文件,方便后续分析
  2. 合理配置采样率:在生产环境中,适当配置 OpenTelemetry 的采样率,避免产生过多数据
  3. 结合开发工具:将 otel-desktop-viewer 集成到你的开发工作流中,如 IDE 插件或 CI/CD 管道
  4. 团队协作:在团队中共享配置,确保所有开发者使用相同的监控标准

技术架构解析

otel-desktop-viewer 的技术架构设计精良,既保证了性能又提供了良好的扩展性:

数据流架构

应用/SDK → OTLP (gRPC/HTTP) → otlp 接收器 → desktop 导出器 → spans/metrics/logs 数据摄入 → DuckDB 存储 → JSON-RPC API → Svelte Web UI

存储设计

项目采用 DuckDB 作为存储引擎,具有以下优势:

  • 列式存储:适合分析型查询,快速过滤和聚合
  • 内存存储:默认使用内存存储,查询速度极快
  • 持久化选项:可通过--db参数启用文件存储
  • 标准化模式:使用规范化的表结构存储追踪、指标和日志数据

前端技术栈

  • 框架:Svelte 5(使用 runes:$state$derived$effect
  • 构建工具:Vite 7
  • 路由:tinro5(历史模式)
  • 样式:Tailwind CSS 4 + DaisyUI 5
  • 图表:layerchart
  • 搜索 UI:CodeMirror 6 + Lezer 语法

开发与贡献

开发环境搭建

如果你想要贡献代码或自定义功能,可以按照以下步骤搭建开发环境:

# 克隆项目 git clone https://gitcode.com/gh_mirrors/ot/otel-desktop-viewer cd otel-desktop-viewer # 安装前端依赖 make install # 启动开发服务器(两个终端) # 终端1:启动 Go 服务器 make dev-go # 终端2:启动前端开发服务器 make dev-ts

项目结构概览

otel-desktop-viewer/ ├── main.go # CLI 入口 ├── desktopexporter/ # 自定义导出器包 │ ├── factory.go # 导出器工厂 │ ├── exporter.go # pushTraces/pushMetrics/pushLogs │ └── internal/ │ ├── server/ # HTTP 服务器、JSON-RPC、静态资源 │ ├── store/ # DuckDB 存储、模式、摄入、搜索、查询 │ └── frontend/ # Svelte 5 + Vite UI ├── scripts/ # OTLP 种子脚本 └── Makefile # 构建、运行、开发、测试目标

贡献指南

项目欢迎各种形式的贡献,包括但不限于:

  • Bug 报告:在项目中创建 Issue
  • 功能建议:讨论新功能的想法
  • 代码贡献:提交 Pull Request
  • 文档改进:完善使用文档和示例

在贡献之前,请阅读 CONTRIBUTING.md 和 CODE_OF_CONDUCT.md。

常见问题解答

Q1: otel-desktop-viewer 与 Jaeger、Prometheus 有什么区别?

A:otel-desktop-viewer 专为本地开发设计,具有以下特点:

  • 轻量级:单二进制文件,无需复杂部署
  • 一体化:同时支持追踪、指标、日志三种信号
  • 零配置:开箱即用,无需复杂的配置文件
  • 实时性:数据实时显示,适合调试场景

而 Jaeger 和 Prometheus 更适合生产环境部署,需要更多的配置和维护工作。

Q2: 数据存储在哪里?如何保证数据安全?

A:默认情况下,数据存储在内存中,程序退出后数据会丢失。如果你需要持久化存储,可以使用--db参数指定 DuckDB 文件路径。数据安全方面:

  • 默认只监听 localhost,不会暴露到外部网络
  • 你可以使用--host参数控制监听地址
  • 数据存储在本地文件系统中,不会被发送到云端

Q3: 支持哪些 OpenTelemetry 协议版本?

A:otel-desktop-viewer 基于最新的 OpenTelemetry Collector 构建,支持:

  • OTLP gRPC v1.x
  • OTLP HTTP/protobuf v1.x
  • 与 OpenTelemetry SDK 1.x 完全兼容

Q4: 如何处理大量数据?

A:otel-desktop-viewer 采用以下策略处理大量数据:

  1. 内存优化:使用 DuckDB 的列式存储和压缩技术
  2. 查询优化:针对常见查询模式进行优化
  3. 数据清理:提供清理 API,可以按需删除旧数据
  4. 持久化存储:对于大量数据,建议使用--db参数启用文件存储

Q5: 是否支持自定义查询和导出?

A:是的,otel-desktop-viewer 提供了 JSON-RPC API,你可以通过编程方式:

  • 查询特定时间段的数据
  • 导出数据到其他格式
  • 集成到自动化测试脚本中
  • 构建自定义的监控面板

API 端点位于http://localhost:8000/rpc,支持标准的 JSON-RPC 2.0 协议。

总结

otel-desktop-viewer 是一个功能强大且易于使用的本地 OpenTelemetry 监控工具,它为开发者提供了完整的可观测性解决方案。无论是调试微服务调用链、分析系统性能指标,还是查看应用日志,它都能提供直观的界面和强大的功能。

主要优势:

  • 🚀快速启动:单命令启动,无需复杂配置
  • 🔍全面监控:支持追踪、指标、日志三种信号
  • 💾灵活存储:内存或文件存储,按需选择
  • 🎨美观界面:现代化的 Web UI,支持暗色主题
  • 🔧易于集成:与现有 OpenTelemetry SDK 无缝集成
  • 🆓完全免费:开源项目,Apache 2.0 许可证

无论你是刚刚接触 OpenTelemetry 的新手,还是需要高效调试工具的资深开发者,otel-desktop-viewer 都能成为你开发工具箱中不可或缺的一员。立即尝试,体验本地监控的便捷与高效!

【免费下载链接】otel-desktop-viewerotel-desktop-viewer is a CLI tool for receiving OpenTelemetry traces while working on your local machine.项目地址: https://gitcode.com/gh_mirrors/ot/otel-desktop-viewer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询