分布统计:Heatmap 面板

Heatmap 是是 Grafana v4.3 版本以后新添加的可视化面板,通过热图可以直观的查看样本的分布情况。在Grafana v5.1 版本中 Heatmap 完善了对 Prometheus 的支持。这部分,将介绍如何使用 Heatmap Panel 实现对 Prometheus 监控指标的可视化。

使用 Heatmap 可视化 Histogram 样本分布情况

在上一小节中,我们尝试了使用 Graph 面板来可视化 Histogram 类型的监控指标prometheus_tsdb_compaction_duration_bucket。虽然能展示各个 Bucket 区间内的样本分布,但是无论是以线图还是柱状图的形式展示,都不够直观。对于 Histogram 类型的监控指标来说,更好的选择是采用 Heatmap Panel,如下所示,Heatmap Panel 可以自动对 Histogram 类型的监控指标分布情况进行计划,获取到每个区间范围内的样本个数,并且以颜色的深浅来表示当前区间内样本个数的大小。而图形的高度,则反映出当前时间点,样本分布的离散程度。

Heatmap示例

Heatmap示例

在Grafana中使用Heatmap Panel也非常简单,在Dashboard页面右上角菜单中点击“add panel”按钮,并选择Heatmap Panel即可。

如下所示,Heapmap Panel的编辑页面中,主要包含5类配置选项,分别是:General、Metrics、Axes、Display、Time range。

Heapmap Panel编辑页面

Heapmap Panel编辑页面

其中大部分的配置选项与Graph面板基本保持一致,这里就不重复介绍了。

当使用Heatmap可视化Histogram类型的监控指标时,需要设置Format as选项为Heatmap。当使用Heatmap格式化数据后,Grafana会自动根据样本的中的le标签,计算各个Bucket桶内的分布,并且按照Bucket对数据进行重新排序。Legend format模板则将会控制Y轴中的显示内容。如下所示:

Mteircs设置

Mteircs设置

默认情况下,Heatmap Panel会自行对PromQL查询出的数据进行分布情况统计,而在Prometheus中Histogram类型的监控指标其实是已经自带了分布的Bucket信息的,因此为了直接使用这些Bucket信息,我们需要在Axes选项中定义数据的Date format需要定义为Time series buckets。该选项表示Heatmap Panel不需要自身对数据的分布情况进行计算,直接使用时间序列中返回的Bucket即可。如下所示:

Axes设置

Axes设置

通过以上设置,即可实现对Histogram类型监控指标的可视化。

使用 Heatmap 可视化其它类型样本分布情况

对于非Histogram类型,由于其监控样本中并不包含Bucket相关信息,因此在Metrics选项中需要定义Format asTime series,如下所示:

Metrics设置

Metrics 设置

并且通过Axes选项中选择Data format方式为Time series。设置该选项后Heatmap Panel会要求用户提供Bucket分布范围的设置,如下所示:

Axes设置

Axes 设置

在Y轴(Y Axis)中需要通过Scale定义Bucket桶的分布范围,默认的 Bucket 范围支持包括:liner(线性分布)、log(base 10)(10的对数)、log(base 32)(32的对数)、log(base 1024)(1024的对数)等。

例如,上图中设置的 Scale 为 log(base 2),那么在 Bucket 范围将2的对数的形式进行分布,即[1,2,4,8,….],如下所示:

Bucket分布情况

Bucket 分布情况

通过以上设置,Heatmap 会自动根据用户定义的 Bucket 范围对 Prometheus 中查询到的样本数据进行分布统计。