配置组件
组件是 Alloy 的核心特性。它们是小的、可重用的业务逻辑片段,执行单一任务,例如检索机密信息或收集 Prometheus 指标。您可以将它们连接起来,形成可编程的遥测数据管道。
组件控制器调度组件,报告其健康和调试状态,重新评估其参数,并提供其导出。
配置组件
您可以通过定义顶级块来创建组件。每个组件由其名称(描述其职责)和用户指定的标签标识。
参数和导出
大多数用户与组件的交互都围绕两个基本概念:参数和导出。
参数是修改组件行为的设置。它们可以包括属性或嵌套的无标签块,其中一些是必需的,另一些是可选的。未设置的可选参数使用其默认值。
导出是其他组件可以引用的零个或多个输出值。它们可以是任何 Alloy 类型。
以下块定义了一个标签为“targets”的 local.file 组件。local.file.targets 组件将其导出中的文件内容作为字符串暴露。
filename 属性是必需参数。您还可以定义几个可选参数,例如 detector、poll_frequency 和 is_secret。这些参数配置了文件轮询的方式和频率,以及其内容是否敏感。
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 值上的表达式。
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 中,您可以在其中进行配置。