菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 故障排除breadcrumb arrow 配置资源消耗
开源

配置Grafana Alloy资源消耗

Alloy是用Go编程语言编写的,它提供了内置的剖析支持。与其他用Go编写的应用程序一样,您可以通过发送HTTP请求来剖析Alloy,该请求返回一个pprof Go配置文件。

您拥有pprof文件后,可以在火焰图中将其可视化为Grafana Pyroscope中的。或者,您也可以在Grafana Play或本地使用Go的内置pprof工具来可视化它。

注意

配置文件可能包含关于您环境敏感的信息。您可能不希望将配置文件上传到公共位置。

发送HTTP请求时使用的端口号由--server.http.listen-addr 命令行参数控制。默认设置为127.0.0.1:12345

获取单个配置文件

不同类型的HTTP请求检索不同的配置文件。

内存消耗

goroutine泄露常常导致内存泄露。这就是为什么在调查内存问题时,通常需要获取goroutine配置文件。例如

bash
curl localhost:12345/debug/pprof/heap -o heap.pprof
curl localhost:12345/debug/pprof/goroutine -o goroutine.pprof

在内存使用量低和高的任何时候收集配置文件通常很有帮助。您可以比较配置文件,这可能更容易识别导致内存消耗增加的原因。

CPU消耗

如果您遇到高CPU消耗,您可以收集CPU配置文件

bash
curl https://127.0.0.1:12345/debug/pprof/profile?seconds=30 -o cpu.pprof

URL上方的?seconds=30部分表示剖析持续30秒。

持续剖析

您无需每次收集配置文件时都手动发送curl命令。您还可以使用Alloy中的pyroscope组件进行持续配置。

如果您只有一个很小的Alloy实例,甚至可以配置它们进行自我配置。然而,如果您有一个大型收集器集群,最好是设置专门的Alloy实例,其唯一任务是配置其他Alloy实例。

以下是一个Alloy实例进行自我配置的示例

alloy
pyroscope.scrape "default" {
  targets    = [{"__address__" = "localhost:12345", "service_name"="alloy"}]
  forward_to = [pyroscope.write.default.receiver]
}

pyroscope.write "default" {
  endpoint {
    url = "https://profiles-prod-014.grafana.net"
    basic_auth {
      username = sys.env("PYROSCOPE_USERNAME")
      password = sys.env("PYROSCOPE_PASSWORD")
    }
  }
}

预期资源消耗

有关Alloy中预期资源消耗的更多信息,请参阅估计资源使用

Alloy消耗了异常大量的资源

如果Alloy消耗了异常大量的资源,您可以在Alloy仓库中提交一个问题。请附上您的pprof文件和Alloy配置文件。确保在附件中删除任何机密信息。