当前位置: 首页 > 科技观察

Grafana图形面板高级自定义方法

时间:2023-03-12 06:31:56 科技观察

按照前面的方法,我们基本可以画出我们的监控图表,但是有些场景可能需要更多的自定义功能。比如我们想在CPU使用率面板中同时显示系统、用户和总使用率,我们还需要做一些其他的定制,让我们的图表看起来更友好。多条查询编辑CPU使用率面板,点击面板编辑器下方查询区的+查询按钮添加新查询:输入查询语句sum(rate(node_cpu_seconds_total{instance=~"$host",mode="system"}[1m]))by(instance)/sum(rate(node_cpu_seconds_total{instance=~"$host"}[1m]))by(instance)*100获取系统CPU使用率:同理再添加一条语句查询用户的CPU使用率:如果我们选择查询所有节点的CPU使用率,最终效果如下:转换后可以看到Legend部分的显示会一直带端口:9100号,但实际上这对我们的展示意义不大,所以最好去掉这个端口信息,可以点击编辑器下方Query旁边的Transform选项卡进入转换页面:Transform转换功能可以让我们添加、计算、重新排序、隐藏和重命名查询结果,尽管目前仅支持时间序列数据。对于拥有大量仪表板或大量查询的用户,能够在另一个面板中重复使用来自一个面板的查询结果可以极大地提升性能。如果有多个转换,Grafana会按照它们列出的顺序应用它们,每个转换都会创建一个新的结果集,该结果集会传递给管道中的下一个转换进行处理。Grafana支持非常多的转换方式。这里我们使用Renamebyregex,它是一个通过正则表达式重命名的转换器。这里我们只需要添加一个正则表达式(.*):9100就可以保留主机信息,如下图所示:更多transformation的使用方法,请参考官方文档https://grafana.com/docs/grafana/latest/panels/transformations/types-options/获取更多信息。完成上述Legend配置的转换后,可以看到Legend部分显示的图例多了。我们可以将Legend的模式改为Table:改为Table模式后,可以看到图中的Legend以表格的形式显示。另外,我们还可以通过图例值选择一些其他的信息来显示,比如最大值,最小值,平均值等:在Standard右侧options下的Unit中选择Misc->Percent(0-100):另外还可以配置最小值、最大值、小数位数、图形颜色配置等:timeinterval,我们在查询监控数据的时候,大部分时候,intervalvector的范围是固定的1m或者5m,固定之后显然不是很灵活,所以我们可以再加一个timeinterval的参数来灵活选择。这里我们新增了一个参数叫interval,但是需要注意参数的类型是Interval,然后我们配置这个参数的可选值包括1m,5m,10m,30m,添加之后会有在Dashboard页面上多一个时间间隔的下拉框。然后记得把查询语句中的相关时间间隔替换成$interval参数:coverage可以用同样的方法修改内存监控图,比如显示总内存、已用内存、可用内存、内存使用情况等。在图表信息中。新查询node_memory_MemTotal_bytes{instance=~"$host"}用于总内存,node_memory_MemTotal_bytes{instance=~"$host"}用于已用内存-node_memory_MemAvailable_bytes{instance=~"$host"}和node_memory_MemAvailable_bytes{用于可用内存实例=~"$host"},如下图所示:但是这里有一个很明显的问题,内存使用的结果是百分比,而其他内存使用的结果是具体的内存大小,所以同时画出来一张图中难免会出现单位不一致的问题,结果相差很大,那么如何解决这个问题呢?首先,我们可以先把整个面板的单位调整为bytes(IEC),GiB、MiB、KiB之间的Conversion中会自动显示这种形式的单位:但是显然使用率的单位是不正确的。这个时候,我们需要为这个查询配置override。点击编辑器右侧的Overrides选项卡配置覆盖:在选项卡中点击+Addfieldoverride按钮可以覆盖属性。选项有很多,比如设置指定属性的值,或者根据正则表达式匹配属性的名称来配置,或者根据指定的类型和指定显然,我们选择最后一个比较合理item这里查询返回的字段,直接选择查询使用率的语句A覆盖:然后我们就可以开始单独配置查询A的属性了:比如我们可以修改内存使用百分比的图形样式为Point的形式:然后,还可以在图例的Y轴上添加各种样式的图形,比如Point的大小。单位显示在图表的右侧。这样看起来会更清晰:最终效果如下:这样我们就可以在同一张图中显示两个单位不同的图,而且没有违和感~在上面的内存信息图表中调整精度。可以直接看到内存总量,使用了多少内存等信息。其实数据对内存占用的要求并没有那么高。我们可以抽取一些使用量少的数据点,这样可以提高Grafana的性能。这里需要配置查询A的MinStep和Resolution选项:当查询的样本数据量很大时,Grafana渲染图标时可能会出现一些性能问题。MinStep可以控制Prometheus查询数据时的最小步长。从而减少从Prometheus返回的数据量。Resolution选项可以控制Grafana本身渲染的数据量。比如Resolution的值为1/10,Grafana会将Prometeus返回的10个样本数据合并为一个点。因此,Resolution越小,可视化的准确度越高,反之,可视化的准确度越低。例如,这里我们将最小步长设置为5m,将分辨率设置为1/10。最终的图形样式如下: