使用 Grafana Alloy 向 Prometheus 发送指标
在上一篇教程中,您学习了如何配置 Alloy 从本地机器收集和处理日志并发送到 Loki。
本教程将向您展示如何配置 Alloy 从本地机器收集和处理指标,将其发送到 Prometheus,并使用 Grafana 探索结果。
开始之前
完成本教程所需
- 您必须对 Alloy 和一般的遥测数据收集有基本的了解。
- 您应该熟悉 Prometheus、PromQL、Loki、LogQL 以及基本的 Grafana 导航。
- 您必须完成上一篇教程以准备以下先决条件
- 在您的环境中安装 Alloy 并启动服务。
- 设置一个本地 Grafana 实例。
- 创建一个
config.alloy
文件。
提示
或者,您可以在交互式学习环境中尝试此示例:将指标发送到 Prometheus。
这是一个已完全配置好的环境,所有依赖项都已安装。
配置 Alloy
在本教程中,您将配置 Alloy 收集指标并将其发送到 Prometheus。
您需要向 config.alloy
文件中添加组件,以告诉 Alloy 您想抓取哪些指标、如何处理这些数据以及数据应该发送到哪里。
以下步骤基于您在上一篇教程中创建的 config.alloy
文件进行构建。
第一个组件:抓取
将以下组件配置粘贴到 config.alloy
文件的顶部
prometheus.exporter.unix "local_system" { }
prometheus.scrape "scrape_metrics" {
targets = prometheus.exporter.unix.local_system.targets
forward_to = [prometheus.relabel.filter_metrics.receiver]
scrape_interval = "10s"
}
此配置创建一个名为 scrape_metrics
的 prometheus.scrape
组件,其作用如下
- 它连接到
local_system
组件作为其来源或目标。 - 它将抓取的指标转发到另一个名为
filter_metrics
的组件的接收器。 - 它告诉 Alloy 每 10 秒抓取一次指标。
第二个组件:过滤指标
在将非关键指标发送到数据源之前对其进行过滤,可以帮助您降低成本,并让您专注于最重要的数据。
以下示例演示了如何在将指标发送到 Prometheus 之前过滤或丢弃它们。
将以下组件配置粘贴到 config.alloy
文件中上一个组件的下方
prometheus.relabel "filter_metrics" {
rule {
action = "drop"
source_labels = ["env"]
regex = "dev"
}
forward_to = [prometheus.remote_write.metrics_service.receiver]
}
prometheus.relabel
组件通常用于过滤 Prometheus 指标或标准化传递给一个或多个下游接收器的标签集。您可以使用此组件重写发送到接收器的每个指标的标签集。在此组件内,您可以定义规则块以指定在存储或转发指标之前如何处理它们。
此配置创建一个名为 filter_metrics
的 prometheus.relabel
组件,其作用如下
- 它接收来自
scrape_metrics
组件的抓取指标。 - 它告诉 Alloy 丢弃带有
"env"
标签且其值为"dev"
的指标。 - 它将处理后的指标转发到另一个名为
metrics_service
的组件的接收器。
第三个组件:将指标写入 Prometheus
将以下组件配置粘贴到 config.alloy
文件中上一个组件的下方
prometheus.remote_write "metrics_service" {
endpoint {
url = "https://:9090/api/v1/write"
// basic_auth {
// username = "admin"
// password = "admin"
// }
}
}
这个最终组件创建一个名为 metrics_service
的 prometheus.remote_write
组件,指向 https://:9090/api/v1/write
。
这样就完成了简单的配置管线。
提示
`basic_auth` 已被注释掉,因为本地 `docker compose` stack 不需要它。此示例中包含它是为了展示如何为其他环境配置授权。
有关更多授权选项,请参阅
prometheus.remote_write
组件文档。
这直接连接到在 Docker 容器中运行的 Prometheus 实例。
重新加载配置
将本地的 config.alloy
文件复制到默认的 Alloy 配置文件位置。
sudo cp config.alloy $(brew --prefix)/etc/alloy/config.alloy
sudo cp config.alloy /etc/alloy/config.alloy
调用 /-/reload
端点,告知 Alloy 无需重启系统服务即可重新加载配置文件。
curl -X POST https://:12345/-/reload
提示
此步骤使用 Alloy UI,位于
localhost
端口12345
。如果您选择在 Docker 容器中运行 Alloy,请确保使用--server.http.listen-addr=0.0.0.0:12345
参数。如果您不使用此参数,调试 UI 将无法在 Docker 容器外部访问。
可选:您可以重启 Alloy 系统服务并加载配置文件
brew services restart alloy
sudo systemctl reload alloy
在 Alloy UI 中检查您的配置
打开 https://:12345 并点击顶部的 Graph 选项卡。图表应类似于以下内容

Alloy UI 会向您展示使用 Alloy 组件配置构建的管线的可视化表示。
您可以看到组件运行状况良好,可以准备在 Grafana 中探索指标了。
登录 Grafana 并在 Prometheus 中探索指标
打开 https://:3000/explore/metrics/ 访问 Grafana 中的 Metrics Drilldown 功能。
您可以在此处直观地探索 Alloy 发送到 Prometheus 的指标。

您也可以手动构建 PromQL 查询以进一步探索数据。
打开 https://:3000/explore 访问 Grafana 中的 Explore 功能。
选择 Prometheus 作为数据源,然后单击 Metrics Browser 按钮选择指标、标签及其对应值。
您可以在此处看到指标如预期般流向 Prometheus,且端到端配置成功。
总结
您已配置 Alloy 从本地主机收集和处理指标,并将其发送到您的本地 Grafana Stack。