Skip to main content
迁移可观测性平台,通常不只是更换数据存储的位置。Datadog agent 和 SDKs 可能早已部署在成千上万个应用、主机、虚拟机和 Kubernetes Pod (容器组) 中。如果还没来得及评估另一个后端,就得先为所有这些重新做插桩,那么迁移在产生任何价值之前,就已经变成了一个大型项目。 内置于 ClickStack 版 OpenTelemetry (OTel) collector 中的 Datadog receiver 消除了这部分前期成本。现有的 Datadog agent 和 SDKs 无需任何改动即可继续运行。你不用再把遥测数据发送到 Datadog,而是将它们指向该 receiver;它会把 Datadog 的原生日志、trace 和指标载荷转换为 OpenTelemetry 数据模型,并通过标准的 collector 管道传递到 ClickStack。 由于该 receiver 位于常规 collector 管道中,你可以用它来:
  • 在不改动应用代码的情况下并行评估 ClickStack 和 Datadog,利用现有 agent 将同一份遥测数据同时发送到两个平台。
  • 平滑迁移到 ClickStack,保留当前采集层,并逐步采用 OpenTelemetry 插桩。
  • 长期并行运行两套技术栈,让每个平台各尽其长。

为什么将 ClickStack 与 Datadog 搭配使用

对大多数团队来说,把可观测性数据迁出 Datadog 的主要原因是成本。随着应用规模扩大、完成埋点的服务越来越多,日志和 trace 量也会持续增长,团队往往只能在增加支出和减少遥测数据保留量之间二选一。而这些成本控制又会进一步限制你在调查时能看到的信息:采样后的链路追踪、未建立索引的日志、汇总后的指标,以及较短的保留窗口,都会在最需要的时候减少可用的上下文。 ClickStack 构建于 ClickHouse 之上,对于大规模日志和 tracing 工作负载,其成本效率相比 Datadog 可高出 100 倍以上。也正是这种存储经济性的差异,让将 ClickStack 与 Datadog 搭配使用变得很有价值:
  • 更长的保留期。 按照运维需求而不是预算来设置保留期,保留那些你可能在几周甚至几个月后仍需要的事件。
  • 全保真数据。 无需采样即可存储每一条日志和每一个 trace,让调查基于完整数据而非样本进行。
  • 无 API 速率限制。 以查询数据库的方式查询遥测数据,而不是通过按量计费的 API,并且没有按查询或按端点的限流。
  • 完整的 SQL 访问能力。 使用 SQL 分析日志、指标和链路追踪,并将它们与 ClickHouse 中已有的业务数据或基础设施数据关联起来。
  • 智能体工作负载。 通过 ClickStack MCP server 将遥测数据开放给 AI 智能体,并直接在 ClickHouse 上运行不限量的分析查询。
全保真遥测数据对智能体调查尤其有价值。智能体无法对在调查开始前就已被丢弃的事件进行推理,而且它还需要足够长的历史数据,才能将当前事故与更早的故障、行为变化以及更长期的模式进行比较。

Datadog receiver 的工作原理

在典型的 OpenTelemetry 部署中,遥测数据在到达后端之前,会先发送到 OpenTelemetry collector。collector 会从以 agent 模式运行的 collectors,以及为应用埋点的 OpenTelemetry SDKs 接收数据,应用所需的过滤或转换,将事件按批次处理,然后导出到目标端。 Datadog receiver 为这一架构增加了另一种输入。它提供了一个端点,能够理解 Datadog agents 和 SDKs 使用的协议,并将传入的 Datadog 载荷转换为 OpenTelemetry 数据模型。之后,这些数据会像其他遥测数据一样,通过常规的 collector 管道继续处理。 现有的 Datadog agents 只需重新配置为将日志和链路追踪发送到运行在 ClickStack collector 上的 receiver。应用可以继续使用现有的 Datadog SDKs,而已经部署在整个基础设施中的 agents 也无需改动。 由于 collector 管道可以使用多个 exporter,同一份遥测数据就可以同时发送到 Datadog 和 ClickStack。这也正是并行评估和长期并行运行成为可能的原因:你可以基于完全相同的数据对比两个平台,然后再独立决定是否迁移。

receiver 处理的内容

receiver 会将 Datadog 载荷转换为正确的 OpenTelemetry 表示,以便 ClickStack 无需任何 Datadog 特有逻辑即可解释、关联和查询这些数据:
  • 日志记录。 Datadog 的毫秒级时间戳会被转换为纳秒,用于填充 OpenTelemetry 的 timestamp、observed timestamp、body 和 severity 字段,因此这些记录不再显示为 Unix epoch。
  • 资源属性和严重性。 Datadog 的状态值 (如 infowarnerror) 会映射到对应的 OpenTelemetry SeverityNumberSeverityText。hostname、service name、environment,以及已知的 container、cloud 和 Kubernetes 标签,都会提升为标准资源属性。
  • trace 与日志关联。 dd.trace_iddd.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 连接时不会因载荷被拒绝。
这些变更已包含在 ClickStack collector 发行版中并会自动完成配置,同时也可在 OpenTelemetry Collector Contrib 项目中使用。

启用 Datadog receiver

Datadog receiver 包含在 ClickStack 发行的 OpenTelemetry Collector 中,监听端口 8126。它默认处于禁用状态,可通过 ENABLE_DATADOG_RECEIVER 环境变量启用。 启用后,将 Datadog agent 指向该 receiver,并使用 ClickStack 摄取密钥进行身份验证。该密钥的来源取决于你的部署方式:如果使用 托管 ClickStack,你需要运行独立的 collector,并在启动时自行设置该密钥;如果使用 开源 ClickStack,系统会为你生成该密钥,你可以从 ClickStack 界面 (HyperDX) 中复制。请在下方选择你的部署方式。
使用托管 ClickStack 时,你需要部署一个独立的 ClickStack 收集器,将数据摄取到你的 ClickHouse Cloud 服务。你可以在收集器启动时使用自己选择的身份验证令牌对其进行保护,并将同一个令牌复用为 Datadog agent 的 API 密钥。
1

部署启用接收器的收集器

ClickStack OpenTelemetry collector 与标准 OpenTelemetry collectorDatadog 接收器内置于 ClickStack 发行版的 OpenTelemetry collector 中,并已预先配置好。如果你更倾向于使用标准的 OpenTelemetry Collector Contrib 发行版,则需要自行配置该接收器。我们对该接收器的所有更改和改进都会推送到上游,因此你也可以在那里使用它们。有关配置选项,请参阅 Datadog receiver README
运行独立 ClickStack 收集器,并将其指向你的 ClickHouse Cloud 服务。使用 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 中查看。

实操示例

以下示例使用一个示例应用,展示数据如何从已插桩的应用,经由 Datadog agent,最终进入 ClickStack 的完整链路。
1

克隆并运行示例应用

该示例使用 Hacker News demo app,并在 datadog-instrumentation 分支中集成了 Datadog。克隆该分支:
按照 README 中的说明 运行该应用。
2

启动已启用 receiver 的 ClickStack

启动启用了 Datadog receiver 的 all-in-one 镜像。这里我们将 receiver 映射到主机端口 18126,以避免与本地 Datadog agent 冲突,后者同样使用 8126
receiver 可通过 http://127.0.0.1:18126 访问。
3

安装并配置 Datadog agent

安装 Datadog agent。在 macOS 上:
更新 /opt/datadog-agent/etc/datadog.yaml,使其指向端口 18126 上的 receiver,并将你的 ClickStack 摄取密钥用作 API key,然后重启 agent:
有关完整的 agent 配置以及如何找到你的摄取密钥,请参阅 启用 Datadog receiver
4

在 ClickStack 中探索你的遥测数据

打开 http://localhost:8080 上的 HyperDX 界面,探索从 Datadog agent 采集到的链路追踪、日志和指标。

当前可迁移的内容

Datadog receiver 是 OpenTelemetry Collector Contrib 中的一个 alpha 组件,并且在 ClickStack collector 发行版中被标记为 Experimental,因此需要通过特性开关启用。 该 receiver 已针对 日志和 trace 工作负载进行了充分测试,推荐用于基于这些信号评估 ClickStack。指标 虽然可用,但仍需进一步测试和开发。该 receiver 目前支持 Datadog 的 v1 和 v2 metrics intake 端点;使用更新协议版本的 agent 必须显式配置为通过受支持的端点发送指标。 目前,如果你的应用已经使用 Datadog SDKs,或你的基础设施中正在运行 Datadog agent,这个 receiver 可以帮助你快速评估 ClickStack。并行运行两条管道,验证数据在 ClickStack 中的呈现方式和查询效果,然后再决定是否推进更大范围的迁移。如果评估结果显示出明显优势,同一架构也支持渐进式迁移:在各项服务逐步迁移到 OpenTelemetry 的过程中,保留现有的 Datadog instrumentation。
最后修改于 2026年7月23日