菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 教程breadcrumb arrow 将指标发送到 Prometheus
开源

使用 Grafana Alloy 向 Prometheus 发送指标

上一篇教程中,您学习了如何配置 Alloy 从本地机器收集和处理日志并发送到 Loki。

本教程将向您展示如何配置 Alloy 从本地机器收集和处理指标,将其发送到 Prometheus,并使用 Grafana 探索结果。

开始之前

完成本教程所需

  • 您必须对 Alloy 和一般的遥测数据收集有基本的了解。
  • 您应该熟悉 Prometheus、PromQL、Loki、LogQL 以及基本的 Grafana 导航。
  • 您必须完成上一篇教程以准备以下先决条件
    • 在您的环境中安装 Alloy 并启动服务。
    • 设置一个本地 Grafana 实例。
    • 创建一个 config.alloy 文件。

提示

或者,您可以在交互式学习环境中尝试此示例:将指标发送到 Prometheus

这是一个已完全配置好的环境,所有依赖项都已安装。

Interactive

配置 Alloy

在本教程中,您将配置 Alloy 收集指标并将其发送到 Prometheus。

您需要向 config.alloy 文件中添加组件,以告诉 Alloy 您想抓取哪些指标、如何处理这些数据以及数据应该发送到哪里。

以下步骤基于您在上一篇教程中创建的 config.alloy 文件进行构建。

第一个组件:抓取

将以下组件配置粘贴到 config.alloy 文件的顶部

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_metricsprometheus.scrape 组件,其作用如下

  • 它连接到 local_system 组件作为其来源或目标。
  • 它将抓取的指标转发到另一个名为 filter_metrics 的组件的接收器。
  • 它告诉 Alloy 每 10 秒抓取一次指标。

第二个组件:过滤指标

在将非关键指标发送到数据源之前对其进行过滤,可以帮助您降低成本,并让您专注于最重要的数据。

以下示例演示了如何在将指标发送到 Prometheus 之前过滤或丢弃它们。

将以下组件配置粘贴到 config.alloy 文件中上一个组件的下方

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_metricsprometheus.relabel 组件,其作用如下

  • 它接收来自 scrape_metrics 组件的抓取指标。
  • 它告诉 Alloy 丢弃带有 "env" 标签且其值为 "dev" 的指标。
  • 它将处理后的指标转发到另一个名为 metrics_service 的组件的接收器。

第三个组件:将指标写入 Prometheus

将以下组件配置粘贴到 config.alloy 文件中上一个组件的下方

alloy
prometheus.remote_write "metrics_service" {
    endpoint {
        url = "https://:9090/api/v1/write"

        // basic_auth {
        //   username = "admin"
        //   password = "admin"
        // }
    }
}

这个最终组件创建一个名为 metrics_serviceprometheus.remote_write 组件,指向 https://:9090/api/v1/write

这样就完成了简单的配置管线。

提示

`basic_auth` 已被注释掉,因为本地 `docker compose` stack 不需要它。此示例中包含它是为了展示如何为其他环境配置授权。

有关更多授权选项,请参阅 prometheus.remote_write 组件文档。

这直接连接到在 Docker 容器中运行的 Prometheus 实例。

重新加载配置

将本地的 config.alloy 文件复制到默认的 Alloy 配置文件位置。

macOS
sudo cp config.alloy $(brew --prefix)/etc/alloy/config.alloy
Linux
sudo cp config.alloy /etc/alloy/config.alloy

调用 /-/reload 端点,告知 Alloy 无需重启系统服务即可重新加载配置文件。

bash
curl -X POST https://:12345/-/reload

提示

此步骤使用 Alloy UI,位于 localhost 端口 12345。如果您选择在 Docker 容器中运行 Alloy,请确保使用 --server.http.listen-addr=0.0.0.0:12345 参数。

如果您不使用此参数,调试 UI 将无法在 Docker 容器外部访问。

可选:您可以重启 Alloy 系统服务并加载配置文件

macOS
brew services restart alloy
Linux
sudo systemctl reload alloy

在 Alloy UI 中检查您的配置

打开 https://:12345 并点击顶部的 Graph 选项卡。图表应类似于以下内容

Your configuration in the Alloy UI

Alloy UI 会向您展示使用 Alloy 组件配置构建的管线的可视化表示。

您可以看到组件运行状况良好,可以准备在 Grafana 中探索指标了。

登录 Grafana 并在 Prometheus 中探索指标

打开 https://:3000/explore/metrics/ 访问 Grafana 中的 Metrics Drilldown 功能。

您可以在此处直观地探索 Alloy 发送到 Prometheus 的指标。

Explore Metrics App

您也可以手动构建 PromQL 查询以进一步探索数据。

打开 https://:3000/explore 访问 Grafana 中的 Explore 功能。

选择 Prometheus 作为数据源,然后单击 Metrics Browser 按钮选择指标、标签及其对应值。

您可以在此处看到指标如预期般流向 Prometheus,且端到端配置成功。

总结

您已配置 Alloy 从本地主机收集和处理指标,并将其发送到您的本地 Grafana Stack。