从 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 配置。
打开终端窗口并运行以下命令。
alloy convert --source-format=otelcol --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>
替换以下内容
<INPUT_CONFIG_PATH>
: OpenTelemetry Collector 配置的完整路径。<OUTPUT_CONFIG_PATH>
: 输出 Alloy 配置的完整路径。
使用
<OUTPUT_CONFIG_PATH>
中新的 Alloy 配置来运行 Alloy。
调试
如果
convert
命令无法转换 OpenTelemetry Collector 配置,诊断信息将发送到stderr
。
您可以通过包含--bypass-errors
标志来绕过任何非关键问题,并以最佳努力方式输出 Alloy 配置。注意
如果您绕过错误,转换后的配置行为可能与原始 OpenTelemetry Collector 配置不匹配。在使用转换后的配置之前,请务必在生产环境中对其进行全面测试。
alloy convert --source-format=otelcol --bypass-errors --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>
替换以下内容
<INPUT_CONFIG_PATH>
: OpenTelemetry Collector 配置的完整路径。<OUTPUT_CONFIG_PATH>
: 输出 Alloy 配置的完整路径。
您还可以通过包含
--report
标志输出诊断报告。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 配置,诊断报告提供以下信息:
(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 配置文件。
调试
您可以按照 convert CLI 命令的调试说明生成诊断报告。
有关运行中的 Alloy 的更多信息,请参阅 Alloy 调试文档。
如果您的 OpenTelemetry Collector 配置无法直接转换为 Alloy 并加载,诊断信息将发送到
stderr
。您可以通过包含--config.bypass-conversion-errors
标志以及--config.format=otelcol
来绕过任何非关键问题并启动 Alloy。注意
如果您绕过错误,转换后的配置行为可能与原始 Prometheus 配置不匹配。请勿在生产环境中使用此标志。
示例
本示例演示如何将 OpenTelemetry Collector 配置文件转换为 Alloy 配置文件。
以下 OpenTelemetry Collector 配置文件作为转换的输入。
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 配置文件。
alloy convert --source-format=otelcol --output=<OUTPUT_CONFIG_PATH> <INPUT_CONFIG_PATH>
替换以下内容
<INPUT_CONFIG_PATH>
: OpenTelemetry Collector 配置的完整路径。<OUTPUT_CONFIG_PATH>
: 输出 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
。