菜单
开源

配置组件

组件是 Alloy 的核心特性。它们是小的、可重用的业务逻辑片段,执行单一任务,例如检索机密信息或收集 Prometheus 指标。您可以将它们连接起来,形成可编程的遥测数据管道。

组件控制器调度组件,报告其健康和调试状态,重新评估其参数,并提供其导出。

配置组件

您可以通过定义顶级块来创建组件。每个组件由其名称(描述其职责)和用户指定的标签标识。

参数和导出

大多数用户与组件的交互都围绕两个基本概念:参数和导出。

  • 参数是修改组件行为的设置。它们可以包括属性或嵌套的无标签块,其中一些是必需的,另一些是可选的。未设置的可选参数使用其默认值。

  • 导出是其他组件可以引用的零个或多个输出值。它们可以是任何 Alloy 类型。

以下块定义了一个标签为“targets”的 local.file 组件。local.file.targets 组件将其导出中的文件内容作为字符串暴露。

filename 属性是必需参数。您还可以定义几个可选参数,例如 detector、poll_frequency 和 is_secret。这些参数配置了文件轮询的方式和频率,以及其内容是否敏感。

alloy
local.file "targets" {
  // Required argument
  filename = "/etc/alloy/targets"

  // Optional arguments: Components may have some optional arguments that
  // do not need to be defined.
  //
  // The optional arguments for local.file are is_secret, detector, and
  // poll_frequency.

  // Exports: a single field named `content`
  // It can be referred to as `local.file.targets.content`
}

引用组件

要将组件连接在一起,可以通过引用将一个组件的导出用作另一个组件的参数。引用只能出现在组件中。

例如,这是一个抓取 Prometheus 指标的组件。targets 字段填充了两个抓取目标:一个常量目标 localhost:9001 和一个将目标绑定到 local.file.targets.content 值上的表达式。

alloy
prometheus.scrape "default" {
  targets = [
    { "__address__" = local.file.targets.content }, // tada!
    { "__address__" = "localhost:9001" },
  ]

  forward_to = [prometheus.remote_write.default.receiver]
  scrape_config {
    job_name = "default"
  }
}

每次文件内容更改时,local.file 组件都会更新其导出。新值会被发送到 prometheus.scrape targets 字段。

每个参数和导出字段都有一个底层类型。Alloy 在为属性赋值之前会检查表达式类型。有关如何连接组件的更多信息,请参阅每个组件的文档。

在前面的示例中,local.file.targets.content 表达式的内容被评估为一个具体的值。该值经过类型检查并被替换到 prometheus.scrape.default 中,您可以在其中进行配置。