配置后端插件
本指南提供了配置后端插件以在启动时启用某些诊断的说明,生成 性能数据。性能数据可以提供调查某些性能问题(如高 CPU 或内存使用)或使用 连续性能分析 时可能有用的信息。
配置性能数据
Grafana 配置文件 允许您在 [plugin.<插件 ID>]
下配置性能分析。
在此文件部分中,指定要配置性能分析的后端插件的 <插件 ID>
(唯一标识符),例如,grafana-github-datasource,以及性能配置选项(以下子节中详细说明)。
示例配置
[plugin.<plugin ID>]
profiling_enabled = true
profiling_port = 6060
profiling_block_rate = 5
profiling_mutex_rate = 5
在应用配置更改后重启 Grafana。您应该看到一条指示性能分析是否启用的日志消息。例如
INFO [07-09|19:15:00] Profiling enabled logger=plugin.<plugin ID> blockProfileRate=5 mutexProfileRate=5
要使用 profiling_block_rate
和 profiling_mutex_rate
,您的插件至少需要使用 grafana-plugin-sdk-go v0.238.0
。有关如何更新 SDK 的说明,请参阅 更新 Go SDK。
关于 profiling_enabled 选项
使用此选项来启用/禁用分析。默认值为 false
。
关于 profiling_port 选项
可选地,自定义暴露分析数据的 HTTP 端口。例如,如果您想分析多个插件或默认端口已被占用,请使用它。默认值为 6060
。
关于 profiling_block_rate 选项
使用此选项来控制报告到阻塞分析中的 goroutine
阻塞事件的分数。默认值为 0
(即不跟踪任何事件)。例如,使用 5
来报告 20% 的所有事件。有关更详细的信息,请参阅 https://pkg.go.dev/runtime#SetBlockProfileRate。
分数越高(即此值越小),对正常操作的开销就越大。
关于 profiling_mutex_rate 选项
使用此选项来控制报告到互斥锁分析中的互斥锁争用事件的分数。默认值为 0
(即不跟踪任何事件)。例如,使用 5
来报告 20% 的所有事件。有关更详细的信息,请参阅 https://pkg.go.dev/runtime#SetMutexProfileFraction。
分数越高(即此值越小),对正常操作的开销就越大。
关于开销的说明
在启用分析但未启用 block 和 mutex 分析的情况下运行后端插件应仅增加一小部分开销。因此,这些端点适合生产或持续分析场景。
通常,添加少量(如 5 或 10,即 10 到 20%)的阻塞和互斥锁分析应该没问题,但具体效果可能因插件而异。
另一方面,可能存在潜在问题。例如,如果您遇到请求变慢或排队,且没有线索,那么您可以将分析临时配置为收集 100% 的阻塞和互斥锁分析以获取全面情况。收集完分析后,请关闭它。
检查调试端点
通过浏览 https://127.0.0.1:<profiling_port>/debug/pprof
检查哪些调试端点可用。
在此文件中,使用的是 localhost
,这意味着您连接到运行 Grafana 和插件的宿主机。如果从另一台主机连接,请相应调整。
其他端点
有一些额外的godeltaprof端点可用于分析。这些端点在连续分析场景中更为合适。
这些端点是:
/debug/pprof/delta_heap
/debug/pprof/delta_block
/debug/pprof/delta_mutex
收集和分析分析结果
通常,您使用Go命令pprof
来收集和分析分析数据。您也可以使用curl
或类似工具来收集分析结果,这在您没有Go pprof
命令的环境中可能很方便。
接下来,让我们看看使用curl
和pprof
收集和分析内存和CPU分析结果的示例。
分析高内存使用和内存泄漏
当遇到高内存使用或潜在的内存泄漏时,收集几个堆分析结果非常有用。然后您可以稍后分析和比较它们。
最好在收集每个分析结果之间等待一段时间,例如30秒,以允许内存消耗增加。
在以下示例中,localhost
用于表示您连接到运行Grafana和插件的宿主。如果您是从其他宿主连接的,则根据需要调整命令。
curl https://127.0.0.1:<profiling_port>/debug/pprof/heap > heap1.pprof
sleep 30
curl https://127.0.0.1:<profiling_port>/debug/pprof/heap > heap2.pprof
然后您可以使用pprof
工具来比较两个堆分析结果。例如
go tool pprof -http=localhost:8081 --base heap1.pprof heap2.pprof
分析高CPU使用
当您遇到高CPU使用时,收集一段时间内的CPU分析结果是一个好主意,例如30秒。
在以下示例中,localhost
用于表示您连接到运行Grafana和插件的宿主。如果您是从其他宿主连接的,则根据需要调整命令。
curl 'https://127.0.0.1:<profiling_port>/debug/pprof/profile?seconds=30' > profile.pprof
然后您可以使用pprof
工具来比较两个堆分析结果。例如
go tool pprof -http=localhost:8081 profile.pprof
更多信息
有关如何分析Grafana的更多信息,请参阅Grafana分析文档。