使用 Pyroscope UI 探索分析数据
Pyroscope 的 UI 旨在让您轻松可视化和分析分析数据。有几种不同的模式可用于查看、分析、上传和比较分析数据。
Pyroscope UI 仅适用于 Pyroscope 开源版本。在 Grafana 和 Grafana Cloud 中,您可以使用Profiles Drilldown来检查您的分析数据。
虽然代码分析(code profiling)是一种长期实践,但连续分析(continuous profiling)代表了一种更现代、更先进的性能监控方法。这项技术为传统分析增加了两个关键维度:
- 时间
- 分析数据是
连续 收集的,提供以时间为中心的视图,允许从过去的任何时间点查询性能数据。 - 元数据
- 配置文件通过元数据进行丰富,为性能数据增加了上下文深度。
这些维度,加上性能配置文件的详细特性,使连续分析成为一个独特且有价值的工具。Pyroscope 的 UI 通过提供一个方便的平台来分析配置文件并获取使用日志、指标或追踪等其他传统信号无法获得的洞察,进一步增强了这一点。
在本 UI 参考中,您将了解 Pyroscope 如何通过提供类似 Prometheus 的查询体验来与这些其他现代可观测性工具并行。更重要的是,您将学习如何使用 Pyroscope 广泛的 UI 功能,以更深入地了解应用程序的性能。
Pyroscope UI 的主要功能
以下部分描述了 Pyroscope UI 的功能。
Tag Explorer
Tag Explorer 页面允许您通过标签和标签导航和分析性能数据。此功能对于识别性能异常以及了解不同应用段在各种条件下的行为至关重要。Pyroscope 有意不在此页面包含查询语言。
使用 Tag Explorer
- 选择一个标签以查看相应的分析数据。
- 分析饼状图和描述性统计表,以确定哪些标签(如果存在)行为异常。
- 选择一个标签以查看相应的分析数据。
- 利用 Single、Comparison 和 Diff View 页面的快捷方式,进一步识别性能问题的根本原因。
单视图
Pyroscope UI 中的单视图(Single View)页面专为深入分析配置文件而构建。在此处,您可以探索具有多种查看选项和功能的单个火焰图:
- 表格视图
- 将分析数据分解为可排序的表格格式。选择Top Table会显示表格并隐藏火焰图。
- 三明治视图
- 显示选定函数的调用者和被调用者,提供函数交互的全面视图。通过点击火焰图并选择三明治视图访问。
- 火焰图视图
- 以火焰图格式可视化分析数据,方便识别资源密集型函数。选择火焰图会显示火焰图并隐藏表格。
- 两者视图
- 同时显示表格和火焰图。这是单视图的默认视图。
- 导出数据
- 提供导出火焰图进行离线分析或通过 flamegraph.com 链接共享进行协作审查的选项。
此截图显示 CPU 使用率飙升。如果不进行分析,您将从 CPU 使用率指标飙升转为深入研究代码或猜测原因。然而,通过分析,您可以使用火焰图和表格准确查看哪个函数对飙升最负责。通常,这会显示为一个节点在火焰图中占据明显不成比例的宽度,如下所示的 checkDriverAvailability
函数。
然而,在某些情况下,可能是某个函数被调用了多次,并在火焰图中占用了大量空间。在这种情况下,您可以使用三明治视图来查看,整个代码库中许多函数中调用的日志记录函数是罪魁祸首。
比较视图
比较视图(Comparison view)方便地进行配置文件并排比较,可以基于不同的标签集、不同的时间段或两者。此功能对于了解变更的影响或应用程序两个不同查询之间的差异非常有用。
无论标签是否相同,您都可以使用比较视图来比较不同的时间范围。例如,在调查内存泄漏原因时,时间线可能会显示内存分配量随时间稳定增加。您可以使用比较视图来比较分配量较低和分配量较高的两个不同时间段的内存分配。此信息有助于您识别导致内存泄漏的函数。
运行比较
- 选择两组不同的标签(例如,
env:production
与env:development
)和/或时间段,这反映在每个火焰图上方的时间轴上。 - 并排查看生成的火焰图,以识别性能差异。
使用 Pyroscope 的公司有很多实用的比较用例。以下是一些标签示例,表示为 label:value
:
- 功能标志
- 比较应用程序在
feature_flag:a
和feature_flag:b
下的性能 - 部署环境
- 对比
env:production
和env:development
- 发布分析
- 检查
commit:release-1
和commit:release-2
- 区域
- 比较
region:us-east-1
和region:us-west-1
Diff 页面:使用差异分析识别变化
“Diff”页面是比较页面(comparison page)的扩展,对于更轻松地直观显示两个分析数据集之间的差异至关重要。它通过比较每个函数花费的总时间百分比来规范化数据,从而使得生成的火焰图比较的是每个函数花费时间的
类似于 git diff
,它获取比较页面中的火焰图,并突出显示两个火焰图之间的差异,其中红色表示 CPU 使用率从基线增加到比较对象,绿色表示减少。