简而言之使用 OpenTelemetry Nginx module,在 ClickStack 中采集来自 Nginx 的分布式链路追踪。包含演示数据集和预置仪表板。
与现有 Nginx 集成
前置条件
- 正在运行且可访问 OTLP 端点 (端口 4317/4318) 的 ClickStack 实例
- 已安装 Nginx (版本 1.18 或更高)
- 具有修改 Nginx 配置的 root 或 sudo 权限
- ClickStack 主机名或 IP 地址
安装 OpenTelemetry Nginx 模块
为 Nginx 添加链路追踪的最简单方式,是使用内置 OpenTelemetry 支持的官方 Nginx image。使用 nginx:otel image
将当前的 Nginx image 替换为启用了 OpenTelemetry 的版本:ngx_otel_module.so,可直接使用。如果你是在 Docker 之外运行 Nginx,请参阅 OpenTelemetry Nginx documentation 获取手动安装说明。
配置 Nginx 将链路追踪发送到 ClickStack
将 OpenTelemetry 配置添加到你的nginx.conf 文件中。该配置会加载模块,并将链路追踪发送到 ClickStack 的 OTLP 端点。首先,获取你的 API key:- 在你的 ClickStack URL 中打开 HyperDX
- 进入 Settings → API Keys
- 复制你的摄取 API key
- 将其设置为环境变量:
export CLICKSTACK_API_KEY=your-api-key-here
nginx.conf 中:<clickstack-host> 替换为你的 ClickStack 实例主机名或 IP 地址。- 端口 4317 是 Nginx 模块使用的 gRPC 端点
- otel_service_name 应该能够清晰描述你的 Nginx 实例 (例如
"api-gateway"、"frontend-proxy") - 请根据你的环境调整 otel_service_name,以便在 HyperDX 中更容易识别
理解该配置
会追踪什么: 发往 Nginx 的每个请求都会创建一个 trace span,显示:- 请求方法和路径
- HTTP 状态码
- 请求耗时
- 时间戳
otel_span_attr 指令会为每个 trace 添加元数据,使你能够在 HyperDX 中按状态码、方法、路由等对请求进行过滤和分析。完成这些更改后,测试你的 Nginx 配置:在 HyperDX 中验证链路追踪
配置完成后,登录 HyperDX 并确认链路追踪是否已开始流入。你应该会看到类似下面的内容;如果没有看到链路追踪,请尝试调整时间范围:演示数据集
启动 ClickStack
如果你还没有运行 ClickStack,请使用以下命令启动:- 端口 8080:HyperDX Web 界面
- 端口 4317:OTLP gRPC 端点 (由 nginx 模块使用)
- 端口 4318:OTLP HTTP 端点 (用于演示链路追踪)
下载样本数据集
下载样本 链路追踪 文件,并将时间戳更新为当前时间:- 1,000 个具有真实时序的 trace span
- 9 个不同的端点,流量模式各不相同
- ~93% 成功率 (200) 、~3% 客户端错误 (404) 、~4% 服务器错误 (500)
- 延迟范围为 10ms 到 800ms
- 保留原始流量模式,并整体移位到当前时间
将链路追踪发送到 ClickStack
将你的 API key 设置为环境变量 (如果尚未设置) :- 在你的 ClickStack URL 中打开 HyperDX
- 进入 Settings → API Keys
- 复制你的摄取 API key
在 localhost 上运行此演示假定 ClickStack 在本地
localhost:4318 上运行。对于远程实例,请将 localhost 替换为你的 ClickStack 主机名。{"partialSuccess":{}} 的响应,表示链路追踪已成功发送。全部 1,000 条链路追踪都会被摄取到 ClickStack 中。仪表盘和可视化
仪表盘配置
仪表盘创建后,所有可视化都会预先配置好。
对于演示数据集,请将时间范围设置为 2025-10-26 13:00:00 - 2025-10-27 13:00:00 (UTC) (请根据你的本地时区进行调整) 。导入的仪表盘默认不会设置时间范围。