前置条件
- 一个可用且可访问的 OTel collector,并已配置为将数据摄取到你的托管 ClickStack 服务中。你需要其 OTLP 端点和摄取令牌。
- Node 18+ 和 npm。
1
克隆并运行应用程序
克隆仓库,安装依赖项,并创建.env 文件:2
获取连接信息
应用程序需要以下两个值才能连接到 collector:OTEL_EXPORTER_OTLP_ENDPOINT:你的 collector 暴露的 OTLP 端点 (OTLP over HTTP 通常使用端口4318) 。OTEL_EXPORTER_OTLP_HEADERS:携带摄取令牌的授权请求头,格式为authorization=<token>。
.env 并设置它们:OTEL_EXPORTER_OTLP_HEADERS 为三种信号设置授权请求头:链路追踪、指标和日志。如果你的 collector 在本地运行且不强制启用身份验证,可以将该值留空 (OTEL_EXPORTER_OTLP_HEADERS=authorization=) ;但该变量必须存在,因为如果未设置,或其值完全为空,SDK 会完全跳过初始化。3
为应用添加插桩
插桩分为三个部分:安装 SDKs、切换启动命令,以及启用浏览器 SDK。这些操作都不会改变应用程序的业务逻辑。安装 SDKs
同时安装后端和浏览器 OpenTelemetry SDKs:使用 opentelemetry-instrument CLI
应用程序由run.sh 启动,文件底部有两行 exec:一行启用,另一行被注释掉。切换启用的那一行,让 Node 通过 opentelemetry-instrument 启动:opentelemetry-instrument 加载。启用 Browser SDK
要采集分布式链路追踪 (从浏览器到后端) 和会话回放,请在src/web/telemetry.ts 中启用 Browser SDK。取消对 import 和 HyperDX.init({...}) 代码块的注释:.env。__OTLP_ENDPOINT__ 和 __OTLP_AUTH_TOKEN__ 是由 vite.config.ts 注入的编译时常量:端点对应 OTEL_EXPORTER_OTLP_ENDPOINT,令牌则从 OTEL_EXPORTER_OTLP_HEADERS 中解析出来,与后端使用的值相同。4
生成流量并查看遥测数据
重启应用程序,使新的启动命令和新构建的浏览器端打包产物生效:- 前往 搜索,将时间范围过滤到最近 5 分钟。
hn-analyzer-api的日志会不断流入。
- 点开一个请求,沿着 trace 向上查看。你会看到 Express handler span、一个指向 ClickHouse 集群且显示真实网络耗时的子 HTTP span,以及同一条 trace 上已关联的
console.log记录。
- 打开 Session Replay,回放带可拖动进度条的浏览器会话视频,并与 trace 时间线同步。
了解更多
- 会话回放:功能概览、SDK 选项和隐私控制。
- 会话回放演示:一个使用本地 ClickStack 实例的自包含演示。
- ClickStack 入门:部署 ClickStack 并摄取你的第一批数据。
- 所有示例数据集:其他示例数据集和相关指南。