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本地开发监控⚡实时数据可视化一体化观测平台otel-desktop-viewer是一款专为本地开发环境设计的OpenTelemetry可视化CLI工具它将追踪、指标和日志三大观测信号整合到统一的Web界面中为开发者提供开箱即用的本地可观测性解决方案。核心理念本地优先的观测性体验架构设计哲学otel-desktop-viewer采用单二进制、零配置的设计理念基于OpenTelemetry Collector构建但摒弃了传统Collector的复杂配置。项目核心架构采用DuckDB作为存储引擎通过Go语言实现高性能数据摄取前端使用Svelte 5构建响应式Web界面。技术栈对比特性otel-desktop-viewer传统方案部署复杂度单二进制零配置需要配置Collector、存储、UI等多个组件存储引擎DuckDB内存/磁盘通常需要Jaeger、Prometheus、Loki等独立存储数据持久化可选通过--db参数控制通常需要独立数据库配置开发体验实时数据可视化无需外部依赖需要搭建完整观测栈资源占用轻量级适合本地开发资源消耗较大实战部署快速启动指南多种安装方式Homebrew安装macOS用户brew tap ctrlspice/otel-desktop-viewer brew install --cask otel-desktop-viewerDocker运行docker run -p 8000:8000 -p 4317:4317 -p 4318:4318 \ ghcr.io/ctrlspice/otel-desktop-viewer:latest源码编译安装go install github.com/CtrlSpice/otel-desktop-viewerlatest export PATH$(go env GOPATH)/bin:$PATH otel-desktop-viewerDocker Compose集成在现有Docker Compose项目中添加otel-desktop-viewer服务services: your-app: image: your-app:latest environment: OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-desktop-viewer:4318 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 # OTLP gRPC - 4318:4318 # OTLP HTTP端口配置说明端口协议用途默认值8000HTTPWeb UI和JSON-RPC API是4317gRPCOTLP gRPC接收器是4318HTTPOTLP HTTP接收器是高级配置自定义数据流环境变量配置根据应用程序使用的SDK配置相应的环境变量# HTTP协议配置 export OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318 export OTEL_TRACES_EXPORTERotlp export OTEL_METRICS_EXPORTERotlp export OTEL_LOGS_EXPORTERotlp export OTEL_EXPORTER_OTLP_PROTOCOLhttp/protobuf # gRPC协议配置 export OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4317 export OTEL_EXPORTER_OTLP_PROTOCOLgrpc数据持久化配置默认情况下otel-desktop-viewer使用内存存储。通过--db参数可以启用磁盘持久化# 使用磁盘存储重启后数据不丢失 otel-desktop-viewer --db ./telemetry.duckdb # 自定义端口配置 otel-desktop-viewer --browser-port 8080 --grpc 4319 --http 4320命令行参数详解参数类型默认值说明--browser-portint8000Web UI和JSON-RPC API端口--dbstring(内存)DuckDB文件路径用于持久化存储--grpcint4317OTLP gRPC监听端口--httpint4318OTLP HTTP监听端口--hoststringlocalhost所有端点的绑定地址--open-browserbooltrue启动时自动打开浏览器应用场景示例场景一微服务本地调试在本地开发微服务时通过otel-desktop-viewer可以实时查看服务间的调用链路追踪界面功能甘特图展示完整的调用链路服务间依赖关系可视化每个Span的详细元数据查看错误状态和耗时分析场景二性能指标监控开发过程中监控应用程序的性能指标指标界面特性实时指标数据可视化热图展示指标分布多维度聚合分析时间序列图表场景三日志集中查看统一查看应用程序的结构化日志日志界面功能结构化日志条目展示按时间、服务、级别过滤日志与追踪关联查看完整的资源和作用域信息场景四Shell脚本追踪使用otel-cli从Shell脚本发送追踪数据# 配置otel-cli指向本地otel-desktop-viewer export OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318 export OTEL_EXPORTER_OTLP_PROTOCOLhttp/protobuf # 执行命令并生成追踪 otel-cli exec --service my-service --name check the archive \ curl -s -o /dev/null https://archive.org/ # 链式Span示例 otel-cli exec --kind producer --service demo --name produce -- \ otel-cli exec --kind consumer --service demo --name consume sleep 0.2技术实现深度解析存储架构设计otel-desktop-viewer采用高度规范化的数据库设计确保查询性能和存储效率核心表结构spans- 追踪Span记录events- Span事件规范化存储links- Span链接规范化存储logs- 日志记录metric_streams- 指标流元数据datapoints- 所有指标数据点attributes- 所有实体的属性键值对设计亮点所有ID使用UUID格式嵌套数据规范化存储避免数组和联合类型单一datapoints表存储所有类型指标属性统一存储在attributes表中支持跨实体搜索查询优化策略项目采用JSON-RPC over HTTP作为API传输协议查询层直接在SQL中构建JSON响应-- 示例构建追踪查询的JSON响应 SELECT json_object( trace_id, trace_id, spans, json_arrayagg( json_object( span_id, span_id, name, name, start_time, start_time, end_time, end_time ) ) ) AS trace_json FROM spans WHERE trace_id ? GROUP BY trace_id这种设计使得响应结构在SQL中定义避免了Go结构体的重复定义同时保持了前端的灵活性。前端架构模式前端采用现代化的技术栈和架构模式技术栈组成框架Svelte 5使用Runes$state,$derived,$effect构建工具Vite 7路由tinro5历史模式样式Tailwind CSS 4 DaisyUI 5图表layerchart搜索UICodeMirror 6 自定义Lezer语法状态管理策略无全局状态管理库使用Svelte上下文模块.svelte.ts页面局部状态使用$state实时更新通过轮询getStats实现生态集成建议与现有监控栈集成虽然otel-desktop-viewer主要面向本地开发但可以与生产环境监控栈协同工作开发/生产环境分离本地使用otel-desktop-viewer生产环境使用Jaeger、Prometheus等数据导出通过自定义导出器将本地数据同步到生产环境配置管理使用环境变量区分不同环境的OTLP端点扩展开发建议项目采用模块化设计便于功能扩展后端扩展在desktopexporter/internal/store/中添加新的存储模块在desktopexporter/internal/server/中添加新的API端点通过components.go注册新的Collector组件前端扩展在desktopexporter/internal/frontend/src/pages/中添加新页面使用现有的组件库和样式系统通过services/telemetry-service.ts扩展API客户端性能优化技巧内存管理对于大量数据使用--db参数启用磁盘存储查询优化利用DuckDB的列式存储特性优化查询性能前端性能虚拟化长列表使用懒加载技术最佳实践总结开发工作流优化# 开发模式前后端分离运行 make dev-go # 启动Go服务器 (:8000) make dev-ts # 启动Vite开发服务器 (:3001) # 生产模式构建并运行 make build # 构建完整二进制文件 ./otel-desktop-viewer # 运行生产版本调试技巧实时数据查看启动应用后立即访问http://localhost:8000数据清理使用UI中的清除功能或重启服务清空内存数据网络调试使用curl测试OTLP端点连通性故障排查指南问题现象可能原因解决方案无法访问Web UI端口冲突检查端口占用使用--browser-port指定其他端口OTLP数据未显示协议不匹配确认SDK配置的协议与监听端口一致内存占用过高数据量过大启用磁盘存储或定期清理数据查询性能下降数据量增长考虑添加索引或优化查询otel-desktop-viewer作为本地开发环境中的OpenTelemetry可视化工具通过简化配置、统一界面和实时反馈显著提升了开发者的观测性体验。其基于DuckDB的存储设计和现代化的前端架构为本地开发提供了专业级的监控能力是微服务开发和分布式系统调试的理想伴侣。【免费下载链接】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),仅供参考