菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 收集并转发数据breadcrumb arrow 收集 Datadog 追踪和指标
开源

接收来自 Datadog 仪表化应用的追踪和指标

您可以配置 Alloy 来收集 Datadog 追踪和指标,并将它们转发到任何兼容 OpenTelemetry 的数据库。

本主题介绍如何

  • 配置 Alloy 发送追踪和指标。
  • 配置 Alloy Datadog Receiver。
  • 配置 Datadog Agent 将追踪和指标转发到 Alloy Datadog Receiver。

开始之前

  • 确保至少有一个 Datadog Agent 实例正在收集指标和追踪。
  • 确定将收集到的遥测数据写入何处。指标可以写入 Prometheus 或任何其他兼容 OpenTelemetry 的数据库,例如 Grafana Mimir、Grafana Cloud 或 Grafana Enterprise Metrics。追踪可以写入 Grafana Tempo、Grafana Cloud 或 Grafana Enterprise Traces。
  • 熟悉 Alloy 中的 组件 概念。

配置 Alloy 发送追踪和指标

在组件能够收集 Datadog 遥测信号之前,您必须有一个负责将此遥测数据写入某个位置的组件。

otelcol.exporter.otlp 组件负责将 OTLP 数据传递到兼容 OpenTelemetry 的端点。

  1. 将以下 otelcol.exporter.otlp 组件添加到您的配置文件中。

    alloy
    otelcol.exporter.otlp "default" {
      client {
        endpoint = "<OTLP_ENDPOINT_URL>"
        auth     = otelcol.auth.basic.auth.handler
      }
    }

    替换以下内容

    • <OTLP_ENDPOINT_URL>: 发送指标和追踪的兼容 OpenTelemetry 端点的完整 URL,例如 https://otlp-gateway-prod-eu-west-2.grafana.net/otlp
  2. 如果您的端点需要基本认证,请将以下内容粘贴到 endpoint 块内。

    alloy
    basic_auth {
      username = "<USERNAME>"
      password = "<PASSWORD>"
    }

    替换以下内容

    • <USERNAME>: 基本认证用户名。
    • <PASSWORD>: 基本认证密码或 API 密钥。

配置 Alloy Datadog Receiver

  1. 将以下 otelcol.processor.batch 组件添加到您的配置文件中。

    alloy
    otelcol.processor.batch "default" {
      output {
        metrics = [otelcol.exporter.otlp.default.input]
        traces  = [otelcol.exporter.otlp.default.input]
      }
    }
  2. 将以下 otelcol.processor.deltatocumulative 组件添加到您的配置文件中。

    alloy
    otelcol.processor.deltatocumulative "default" {
      max_stale = "<MAX_STALE>"
      max_streams = <MAX_STREAMS>
      output {
        metrics = [otelcol.processor.batch.default.input]
      }
    }

    替换以下内容

    • <MAX_STALE>: 多久未接收到新样本的序列会被移除,例如 “5m”。
    • <MAX_STREAMS>: 跟踪的流的上限。超出此上限的新流将被丢弃。
  3. 将以下 otelcol.receiver.datadog 组件添加到您的配置文件中。

    alloy
    otelcol.receiver.datadog "default" {
      endpoint = "<HOST>:<PORT>"
      output {
        metrics = [otelcol.processor.deltatocumulative.default.input]
        traces  = [otelcol.processor.batch.default.input]
      }
    }

    替换以下内容

    • <HOST>: 接收器监听的主机地址。
    • <PORT>: 接收器监听的端口。
  4. 如果您的端点需要基本认证,请将以下内容粘贴到 endpoint 块内。

    alloy
    basic_auth {
      username = "<USERNAME>"
      password = "<PASSWORD>"
    }

    替换以下内容

    • <USERNAME>: 基本认证用户名。
    • <PASSWORD>: 基本认证密码或 API 密钥。

配置 Datadog Agent 将遥测数据转发到 Alloy Datadog Receiver

您可以设置 Datadog Agent 将 Datadog 指标和追踪同时转发到 Alloy 和 Datadog。

对于希望尝试使用 Alloy 的现有 Datadog 用户,我们推荐此方法。

  1. 将以下环境变量添加到您的 Datadog Agent 安装中。

    bash
    DD_ADDITIONAL_ENDPOINTS='{"http://<DATADOG_RECEIVER_HOST>:<DATADOG_RECEIVER_PORT>": ["datadog-receiver"]}'
    DD_APM_ADDITIONAL_ENDPOINTS='{"http://<DATADOG_RECEIVER_HOST>:<DATADOG_RECEIVER_PORT>": ["datadog-receiver"]}'

    DD_ADDITIONAL_ENDPOINTS 用于转发指标,而 DD_APM_ADDITIONAL_ENDPOINTS 用于转发追踪。

    替换以下内容

    • <DATADOG_RECEIVER_HOST>: 找到 Alloy 接收器的主机名。
    • <DATADOG_RECEIVER_PORT>: Alloy 接收器暴露的端口。

或者,您可能只想让 Datadog Agent 将指标发送到 Alloy。您可以通过以下方式设置您的 Datadog Agent:

  1. 替换配置 YAML 中的 DD_URL

    yaml
     dd_url: http://<DATADOG_RECEIVER_HOST>:<DATADOG_RECEIVER_PORT>

    或者通过设置环境变量

    bash
    DD_DD_URL='{"http://<DATADOG_RECEIVER_HOST>:<DATADOG_RECEIVER_PORT>": ["datadog-receiver"]}'

运行 Alloy

otelcol.receiver.datadog 组件是实验性的。要使用此组件,您需要在启动 Alloy 时带上额外的命令行标志

bash
alloy run config.alloy --stability.level=experimental