入门
安装 HyperDX OpenTelemetry 插桩包
使用以下命令安装 ClickStack OpenTelemetry 包。- NPM
- Yarn
初始化 SDK
要初始化 SDK,需要在应用程序入口文件的顶部调用init 函数。
- require
- import
设置日志收集
默认情况下,会自动收集console.* 日志。如果你使用的是 winston 或 pino
等日志库,则需要为日志记录器添加一个 transport,才能将
日志发送到 ClickStack。如果你使用的是其他类型的日志记录器,
请联系我们,或在适用时查看我们的平台
集成 (例如 Kubernetes) 。
- Winston
- Pino
- console.log
如果你使用
winston 作为日志记录器,则需要为日志记录器添加以下 transport。设置错误收集
ClickStack SDK 可以自动捕获应用中的未捕获异常和错误,并附带完整的堆栈跟踪和代码上下文。 要启用此功能,你需要将以下代码添加到应用错误处理中间件的末尾,或者使用recordException 函数手动记录异常。
- Express
- Koa
- 手动
故障排查
如果你在使用 SDK 时遇到问题,可以将OTEL_LOG_LEVEL 环境变量设为 debug,以启用详细日志。
高级插桩配置
捕获控制台日志
默认情况下,ClickStack SDK 会捕获控制台日志。你可以通过 将HDX_NODE_CONSOLE_CAPTURE 环境变量设为 0 来禁用此功能。
copy
附加用户信息或元数据
为了方便给与特定属性或标识符 (例如用户 id 或电子邮件) 相关的所有事件打上标签,你可以调用setTraceAttributes 函数。调用后,它会为与当前 trace 关联的每条
日志/span 添加已声明的
属性。建议在给定请求/trace 中尽可能早地调用此函数 (例如在 Express 中间件栈中尽可能靠前的位置) 。
这是一种很方便的方式,可确保所有日志/spans 都会自动带上
后续搜索所需的正确标识符,而不必由你自己手动
打标签并传递这些标识符。
userId、userEmail、userName 和 teamName 会将对应的值填充到 sessions UI
中,但也可以省略。你还可以指定任何其他附加值,并用其搜索事件。
HDX_NODE_BETA_MODE 环境
变量设为 1,或向 init 函数传入 betaMode: true,以
启用 trace 属性。
Google Cloud Run
如果您在 Google Cloud Run 上运行应用,Cloud Trace 会自动将采样请求头注入传入请求,目前会将每个实例的链路追踪采样限制为每秒 0.1 个请求。@hyperdx/node-opentelemetry 包默认会将采样率覆盖为 1.0。
若要更改此行为,或配置其他 OpenTelemetry 安装,您可以手动配置环境变量
OTEL_TRACES_SAMPLER=parentbased_always_on 和 OTEL_TRACES_SAMPLER_ARG=1,以
达到相同效果。
如需了解更多信息,以及强制对特定请求启用链路追踪,请参阅
Google Cloud Run 文档。
自动插桩的库
以下库将由 SDK 自动插桩 (生成 trace) :dnsexpressgraphqlhapihttpioredisknexkoamongodbmongoosemysqlmysql2netpgpinorediswinston
其他安装方式
使用 ClickStack OpenTelemetry CLI 运行应用
或者,你也可以使用opentelemetry-instrument CLI 或 Node.js 的 --require 标志,无需修改任何代码即可为应用自动插桩。通过 CLI 安装可支持更多自动插桩的库和框架。
- 使用 NPX
- 自定义入口点(例如 Nodemon、ts-node 等)
- 代码导入
托管 ClickStack对于托管 ClickStack,可以省略
HYPERDX_API_KEY。OTEL_SERVICE_NAME 环境变量用于在 HyperDX 应用中标识你的服务,你可以将其设为任意名称。
启用异常捕获
要启用未捕获异常捕获功能,您需要将HDX_NODE_EXPERIMENTAL_EXCEPTION_CAPTURE 环境变量设置为 1。