- 在不改动应用代码的情况下并行评估 ClickStack 和 Datadog,利用现有 agent 将同一份遥测数据同时发送到两个平台。
- 平滑迁移到 ClickStack,保留当前采集层,并逐步采用 OpenTelemetry 插桩。
- 长期并行运行两套技术栈,让每个平台各尽其长。
为什么将 ClickStack 与 Datadog 搭配使用
- 更长的保留期。 按照运维需求而不是预算来设置保留期,保留那些你可能在几周甚至几个月后仍需要的事件。
- 全保真数据。 无需采样即可存储每一条日志和每一个 trace,让调查基于完整数据而非样本进行。
- 无 API 速率限制。 以查询数据库的方式查询遥测数据,而不是通过按量计费的 API,并且没有按查询或按端点的限流。
- 完整的 SQL 访问能力。 使用 SQL 分析日志、指标和链路追踪,并将它们与 ClickHouse 中已有的业务数据或基础设施数据关联起来。
- 智能体工作负载。 通过 ClickStack MCP server 将遥测数据开放给 AI 智能体,并直接在 ClickHouse 上运行不限量的分析查询。
Datadog receiver 的工作原理
receiver 处理的内容
- 日志记录。 Datadog 的毫秒级时间戳会被转换为纳秒,用于填充 OpenTelemetry 的 timestamp、observed timestamp、body 和 severity 字段,因此这些记录不再显示为 Unix epoch。
- 资源属性和严重性。 Datadog 的状态值 (如
info、warn和error) 会映射到对应的 OpenTelemetrySeverityNumber和SeverityText。hostname、service name、environment,以及已知的 container、cloud 和 Kubernetes 标签,都会提升为标准资源属性。 - trace 与日志关联。
dd.trace_id和dd.span_id字段会填充 OpenTelemetry 的 trace 和 span 标识符,receiver 还会根据 Datadog 的拆分表示重建完整的 128 位 trace ID。该功能默认启用,可让来自 Datadog 的日志和 span 与使用 OpenTelemetry 埋点的服务建立关联。 - 结构化 JSON 日志。 默认启用的
decode_json_message选项会执行通常由 Datadog backend 完成的 JSON 处理,提取 body、timestamp、severity、trace 标识符、resource 字段以及其余 attributes。 - 与当前 Agent 的兼容性。 Datadog Agent 7.59 及更高版本默认使用 Zstandard 压缩 HTTP 载荷。receiver 同时支持 Zstandard 和 gzip,因此当前 Agent 连接时不会因载荷被拒绝。
启用 Datadog receiver
8126。它默认处于禁用状态,可通过 ENABLE_DATADOG_RECEIVER 环境变量启用。
启用后,将 Datadog agent 指向该 receiver,并使用 ClickStack 摄取密钥进行身份验证。该密钥的来源取决于你的部署方式:如果使用 托管 ClickStack,你需要运行独立的 collector,并在启动时自行设置该密钥;如果使用 开源 ClickStack,系统会为你生成该密钥,你可以从 ClickStack 界面 (HyperDX) 中复制。请在下方选择你的部署方式。
- 托管 ClickStack
- 开源 ClickStack
使用托管 ClickStack 时,你需要部署一个独立的 ClickStack 收集器,将数据摄取到你的 ClickHouse Cloud 服务。你可以在收集器启动时使用自己选择的身份验证令牌对其进行保护,并将同一个令牌复用为 Datadog agent 的 API 密钥。运行独立 ClickStack 收集器,并将其指向你的 ClickHouse Cloud 服务。使用 现在,该接收器可通过
1
部署启用接收器的收集器
ClickStack OpenTelemetry collector 与标准 OpenTelemetry collectorDatadog 接收器内置于 ClickStack 发行版的 OpenTelemetry collector 中,并已预先配置好。如果你更倾向于使用标准的 OpenTelemetry Collector Contrib 发行版,则需要自行配置该接收器。我们对该接收器的所有更改和改进都会推送到上游,因此你也可以在那里使用它们。有关配置选项,请参阅 Datadog receiver README。
ENABLE_DATADOG_RECEIVER=true 启用 Datadog 接收器,暴露端口 8126,并通过设置你自己的 OTLP_AUTH_TOKEN 来保护摄取:http://localhost:8126 访问,而 OTLP_AUTH_TOKEN 中的令牌就是你传递给 Datadog agent 的密钥。有关如何保护收集器的更多详细信息 (包括 Helm 的对应配置) ,请参阅“保护收集器”。2
配置 Datadog agent
更新位于 此配置将会:
/opt/datadog-agent/etc/datadog.yaml 的 agent 配置文件,将日志、链路追踪和指标发送到该接收器。使用 OTLP_AUTH_TOKEN 的值作为 API 密钥,并将每个目标端都指向该接收器端点:- 将指标、链路追踪和日志发送到该接收器,而不是发送到 Datadog。
- 禁用 v3 指标摄取,因为 ClickStack 支持 Datadog v2 指标端点。
- 关闭远程更新和远程配置,因为它们依赖 Datadog 后端。
3
重启 agent
重启 Datadog agent,使其加载新配置。在 macOS 上:现在,来自该 agent 的遥测数据会流入 ClickStack,你可以在 HyperDX 中查看。
实操示例
1
克隆并运行示例应用
2
启动已启用 receiver 的 ClickStack
启动启用了 Datadog receiver 的 all-in-one 镜像。这里我们将 receiver 映射到主机端口 receiver 可通过
18126,以避免与本地 Datadog agent 冲突,后者同样使用 8126:http://127.0.0.1:18126 访问。3
安装并配置 Datadog agent
安装 Datadog agent。在 macOS 上:更新 有关完整的 agent 配置以及如何找到你的摄取密钥,请参阅 启用 Datadog receiver。
/opt/datadog-agent/etc/datadog.yaml,使其指向端口 18126 上的 receiver,并将你的 ClickStack 摄取密钥用作 API key,然后重启 agent:4
在 ClickStack 中探索你的遥测数据
打开 http://localhost:8080 上的 HyperDX 界面,探索从 Datadog agent 采集到的链路追踪、日志和指标。