菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 设置breadcrumb arrow 迁移breadcrumb arrow 从 OpenTelemetry Collector 迁移
开源

从 OpenTelemetry Collector 迁移到 Alloy

Grafana Alloy 内置的 convert 命令可以将您的 OpenTelemetry Collector 配置迁移到 Alloy 配置。

本主题介绍如何

  • 将 OpenTelemetry Collector 配置转换为 Alloy 配置。
  • 使用 Alloy 原生运行 OpenTelemetry Collector 配置。

本主题使用的组件

开始之前

  • 您必须有一个 OpenTelemetry Collector 配置。
  • 您必须有一组 OpenTelemetry Collector 应用准备好将遥测数据推送到 Alloy。
  • 您必须熟悉 Alloy 中 组件的概念。

转换 OpenTelemetry Collector 配置

要将您的配置完全从 OpenTelemetry Collector 迁移到 Alloy,您必须将 OpenTelemetry Collector 配置转换为 Alloy 配置。这种转换使您能够充分利用 Alloy 中提供的许多额外功能。

在此任务中,您将使用 convert CLI 命令,从 OpenTelemetry Collector 配置输出 Alloy 配置。

  1. 打开终端窗口并运行以下命令。

    shell
    alloy convert --source-format=otelcol --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>

    替换以下内容

    • <INPUT_CONFIG_PATH>: OpenTelemetry Collector 配置的完整路径。
    • <OUTPUT_CONFIG_PATH>: 输出 Alloy 配置的完整路径。
  2. 使用 <OUTPUT_CONFIG_PATH> 中新的 Alloy 配置来运行 Alloy。

调试

  1. 如果 convert 命令无法转换 OpenTelemetry Collector 配置,诊断信息将发送到 stderr
    您可以通过包含 --bypass-errors 标志来绕过任何非关键问题,并以最佳努力方式输出 Alloy 配置。

    注意

    如果您绕过错误,转换后的配置行为可能与原始 OpenTelemetry Collector 配置不匹配。在使用转换后的配置之前,请务必在生产环境中对其进行全面测试。

    shell
    alloy convert --source-format=otelcol --bypass-errors --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>

    替换以下内容

    • <INPUT_CONFIG_PATH>: OpenTelemetry Collector 配置的完整路径。
    • <OUTPUT_CONFIG_PATH>: 输出 Alloy 配置的完整路径。
  2. 您还可以通过包含 --report 标志输出诊断报告。

    shell
    alloy convert --source-format=otelcol --report=<OUTPUT_REPORT_PATH> --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>

    替换以下内容

    • <INPUT_CONFIG_PATH>: OpenTelemetry Collector 配置的完整路径。
    • <OUTPUT_CONFIG_PATH>: 输出 Alloy 配置的完整路径。
    • <OUTPUT_REPORT_PATH>: 报告的输出路径。

    使用下面的示例 OpenTelemetry Collector 配置,诊断报告提供以下信息:

    plaintext
    (Info) Converted receiver/otlp into otelcol.receiver.otlp.default
    (Info) Converted processor/memory_limiter into otelcol.processor.memory_limiter.default
    (Info) Converted exporter/otlp into otelcol.exporter.otlp.default
    
    A configuration file was generated successfully.

运行 OpenTelemetry Collector 配置

如果您尚未完全切换到 Alloy 配置,可以使用 OpenTelemetry Collector 配置运行 Grafana Alloy。--config.format=otelcol 标志指示 Grafana Alloy 将您的 OpenTelemetry Collector 配置转换为 Alloy 配置并直接加载,而无需保存新配置。这使您可以在不修改 OpenTelemetry Collector 配置基础设施的情况下试用 Alloy。

在此任务中,您将使用 run CLI 命令,使用 OpenTelemetry Collector 配置运行 Alloy。

运行 Alloy 并包含命令行标志 --config.format=otelcol。您的配置文件必须是有效的 OpenTelemetry Collector 配置文件,而不是 Alloy 配置文件。

调试

  1. 您可以按照 convert CLI 命令的调试说明生成诊断报告。

  2. 有关运行中的 Alloy 的更多信息,请参阅 Alloy 调试文档。

  3. 如果您的 OpenTelemetry Collector 配置无法直接转换为 Alloy 并加载,诊断信息将发送到 stderr。您可以通过包含 --config.bypass-conversion-errors 标志以及 --config.format=otelcol 来绕过任何非关键问题并启动 Alloy。

    注意

    如果您绕过错误,转换后的配置行为可能与原始 Prometheus 配置不匹配。请勿在生产环境中使用此标志。

示例

本示例演示如何将 OpenTelemetry Collector 配置文件转换为 Alloy 配置文件。

以下 OpenTelemetry Collector 配置文件作为转换的输入。

yaml
receivers:
  otlp:
    protocols:
      grpc:
      http:

exporters:
  otlp:
    endpoint: database:4317

processors:
  memory_limiter:
    limit_percentage: 90
    check_interval: 1s


service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [memory_limiter]
      exporters: [otlp]
    logs:
      receivers: [otlp]
      processors: [memory_limiter]
      exporters: [otlp]
    traces:
      receivers: [otlp]
      processors: [memory_limiter]
      exporters: [otlp]

convert 命令将 YAML 文件作为输入,并输出一个 Alloy 配置文件。

shell
alloy convert --source-format=otelcol --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>

替换以下内容

  • <INPUT_CONFIG_PATH>: OpenTelemetry Collector 配置的完整路径。
  • <OUTPUT_CONFIG_PATH>: 输出 Alloy 配置的完整路径。

新的 Alloy 配置文件如下所示:

alloy
otelcol.receiver.otlp "default" {
    grpc { }

    http { }

    output {
        metrics = [otelcol.processor.memory_limiter.default.input]
        logs    = [otelcol.processor.memory_limiter.default.input]
        traces  = [otelcol.processor.memory_limiter.default.input]
    }
}

otelcol.processor.memory_limiter "default" {
    check_interval   = "1s"
    limit_percentage = 90

    output {
        metrics = [otelcol.exporter.otlp.default.input]
        logs    = [otelcol.exporter.otlp.default.input]
        traces  = [otelcol.exporter.otlp.default.input]
    }
}

otelcol.exporter.otlp "default" {
    client {
        endpoint = "database:4317"
    }
}

限制

配置转换是尽力而为的。如果无法执行转换,Grafana Alloy 会发出警告或错误。

配置转换后,请查看生成的 Alloy 配置文件,并在生产环境中使用之前验证其正确性。

以下列表专门针对 convert 命令,而非 Alloy:

  • 支持直接嵌入上游 OpenTelemetry Collector 功能的组件。您可以通过查看组件参考中的 otelcol.* 组件来大致了解 Alloy 中可用于转换的组件。任何其他不受支持的功能在转换期间会返回错误。
  • 检查您是否使用了任何 OpenTelemetry Collector 附加的命令行参数,而这些参数未包含在您的配置文件中。
  • Alloy 暴露的元监控指标通常与 OpenTelemetry Collector 元监控指标匹配,但名称不同。请确保您使用新的指标名称,例如,在您的告警和仪表盘查询中。
  • Alloy 生成的日志与 OpenTelemetry Collector 生成的日志不同。
  • Alloy 的用户界面使用 Alloy 的命名约定来表示组件及其配置块和参数。
  • 并非 service/telemetry 部分中的所有参数都受支持。
  • 不支持方案不是 env 的环境变量。没有方案的环境变量默认使用 env