Grafana panel 图形高级定制

网友投稿 958 2022-11-07

Grafana panel 图形高级定制

Grafana panel 图形高级定制

图形定制

根据上面的方式方法基本上可以把我们的监控图表绘制出来,但是有的场景下面可能需要更多的定制功能。比如我们想要在 CPU 使用率的面板中同时展示系统、用户以及总的使用率,还需要做一些其他定制让我们的图表看起来更加友好。(需要多个PromQL语句来展示,这也就是将不同的查询放置到一个面板上面)

多个查询

这样其实也就是将不同的查询放到一个panel里面去,这样就可以多维度的展示监控指标了。

在该查询中输入查询语句来获取系统 CPU 的使用率:

sum(rate(node_cpu_seconds_total{instance=~"$hosts",mode="system"}[1m])) by (instance) / sum(rate(node_cpu_seconds_total{instance=~"$hosts"}[1m])) by (instance) * 100

空闲CPU:

(1 - sum(rate(node_cpu_seconds_total{mode="idle",instance=~"$instance"}[1m])) by (instance) / sum(rate(node_cpu_seconds_total{instance=~"$instance"}[1m])) by (instance) ) * 100

用同样的方式再新增一个查询用户 CPU 使用率的语句:

如果我们选择查询所有节点的 CPU 使用率,那么最终的效果如下所示:(这样就可以看到总使用率和用户使用率了)

这样就将不同的查询整合到同一个panel里面来了。

转换

​​Transform​​ 转换功能允许我们在查询结果可视化之前加入、计算、重新排序、隐藏和重命名查询结果,不过目前只支持时间序列数据

对于拥有大量仪表板或大量查询的用户而言,能够在另一个面板中重用来自一个面板的查询结果可能会带来巨大的性能提升。

如果有多个转换,Grafana 会按照它们列出的顺序来应用它们,每个转换都会创建一个新的结果集,该结果集会传递到管道中的下一个转换进行处理。

Grafana 中支持非常多的转换方式,我们这里使用 ​​Rename by regex​​​ 这个通过正则重命名的转换器即可,这里我们只需要添加一个 ​​(.*):9100​​ 的正则表达式即可,将 host 信息保留下来,如下图所示:

关于转换的更多使用方法可以参考官方文档 ​​/docs/grafana/next/panels/reference-transformation-functions/​​ 了解更多信息。

Legend 配置

上面转换完成后,可以看到 Legend 部分展示的图例较多,我们可以将 Legend 的模式修改为 ​​Table​​:

修改为 ​​Table​​ 模式后可以看到图形中的 Legend 用表格的形式展示出来了。

展示到右上方,这样方便看。

此外我们还可以通过 ​​Legend values​​ 来选择一些其他的信息进行展示,比如最大值、最小值、平均值等等:(以table展示的话显得更加有序)

​​Standard options ​​

由于我们这里计算的都是百分比,所以可以将单位设置为 ​​%​​​,位于右侧的 ​​Standard options​​​ 下方的 ​​Unit​​​ 中选择 ​​Misc​​​ -> ​​Percent(0-100)​​ 即可:

此外还可以配置图例的最小值、最大值、保留小数的位数、图形颜色配置等等

可以去选择图形颜色的配置

时间间隔设置为变量

前面我们在查询监控数据的时候都是将区间向量的范围固定成了 ​​1m​​​ 或者 ​​5m​​,这样固定后显然不是非常灵活,所以我们可以再添加一个时间间隔的参数来灵活选择。

这个1m钟就需要改为参数的形式。

这里我们新增了一个名为 ​​interval​​​ 的参数,不过需要注意该参数的类型为 ​​Interval​​​,然后我们配置该参数可选的值包括 ​​1m,5m,10m,30m​​​,添加后在 Dashboard 页面上就会多一个时间间隔的下拉框。然后记得将查询语句中的相关时间间隔替换成 ​​$interval​​ 参数:

可以看到这里可以选择时间间隔了

修改PromQL

覆盖

用同样的方式可以去对内存监控图表进行修改,比如在一个图表中展示总内存、已用内存、可用内存、内存使用率等信息。

新增

总内存的查询​​node_memory_MemTotal_bytes{instance=~"$host"}​​已用内存的查询​​node_memory_MemTotal_bytes{instance=~"$host"} -                      node_memory_MemAvailable_bytes{instance=~"$host"}​​可用内存的查询​​node_memory_MemAvailable_bytes{instance=~"$host"}​​

如下图所示:

但是这里有一个明显的问题是内存使用率的结果是一个百分比,而其他内存使用情况的结果是具体的内存大小,那么将他们绘制在同一个图形中必然会有单位不一致的问题,而且结果相差也较大,那么可以怎么来解决这个问题呢?

首先我们可以先将整个面板的单位调整为 ​​bytes(IEC)​​,该形式的单位会自动在 GiB、MiB、KiB 之间进行换算:

下面其实就是对单独的promsql语句展示图形的配置,包括线条, 以百分比显示

然后就可以开始针对查询 A 的各项属性进行单独的配置:

比如我们可以将内存使用百分比的图形样式修改成 ​​Point​​ 点的形式:

然后还可以图形的各种样式,比如 ​​Point​​ 的大小

同样还可以给图例的 Y 轴添加上百分比的单位,显示在图形右侧,这样看上去就更加清晰了:

最终效果如下所示:

这样我们就在同一个图形当中显示出了不同单位的两种图形,而且毫无违和感吧~

调整精度

在上面的内存信息图表中我们已经可以直接看到总内存、使用了多少内存等信息了,其实对于内存的使用率数据要求就不是那么高了,我们可以少绘制几个使用率的数据点,可以提高 Grafana 的性能。

这里就需要对查询 ​​A​​​ 的 ​​Min Step​​​ 和 ​​Resolution​​ 选项进行配置:

当查询到的样本数据量非常大时可以导致 Grafana 渲染图标时出现一些性能问题,通过 ​​Min Step​​ 可以控制 Prometheus 查询数据时的最小步长,从而减少从 Prometheus 返回的数据量。

​​Resolution​​ 选项则可以控制 Grafana 自身渲染的数据量。例如,如果 Resolution 的值为 1/10,Grafana 会将 Prometeus 返回的 10 个样本数据合并成一个点。因此 Resolution 越小可视化的精确性越高,反之,可视化的精度越低。比如我们这里设置最小步长为 ​​5m​​​,分辨率为 ​​1/10​​,最终的图形样式如下所示:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Grafana ​ 添加动态参数
下一篇:Linux 调度器 CFS
相关文章

 发表评论

暂时没有评论,来抢沙发吧~