构建企业级监控平台系列(三十):Grafana Panel 面板和 Time series(时间序列)...

点击下方名片,设为星标

回复“1024”获取2TB学习资源!

前面介绍了 Prometheus 高可用集群方案高可用架构 ThanosGrafana 入门与部署、仪表盘 DashBoard 、Dashboard 变量相关的知识点,今天我将详细的为大家介绍Grafana Panel 面板和 Time series(时间序列)相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!

Panel 面板介绍

面板(Panel)是 Grafana 中基本可视化构建块,每个面板都有一个特定于面板中选择数据源的查询编辑器,每个面板都有各种各样的样式和格式选项,面板可以在仪表板上拖放和重新排列,它们也可以调整大小,所以要在 Grafana 上创建可视化的图表,面板是我们必须要掌握的知识点。

Panel 是 Grafana 中最基本的可视化单元,每一种类型的面板都提供了相应的查询编辑器(Query Editor),让用户可以从不同的数据源(如 Prometheus)中查询出相应的监控数据,并且以可视化的方式展现,Grafana 中所有的面板均以插件的形式进行使用。

Grafana 提供了各种可视化来支持不同的用例,目前内置支持的面板包括:Time series(时间序列)是默认的也是主要的图形可视化面板、State timeline(状态时间表)状态随时间变化 、Status history(状态历史记录)、Bar chart(条形图)、Histogram(直方图)、Heatmap(热力图)、Pie chart(饼状图)、Stat(统计数据)、Gauge、Bar gauge、Table(表格)、Logs(日志)、Node Graph(节点图)、Dashboard list(仪表板列表)、Alert list(报警列表)、Text panel(文本面板,支持 markdown 和 html)、News Panel(新闻面板,可以显示 RSS 摘要)等,除此之外,我们还可以通过官网的面板插件页面 Grafana Plugins - extend and customize your Grafana | Grafana Labs 获取安装其他面板进行使用。64a2fac3c45b2af66ec5ccecf60edb2b.png更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

图形面板

前文我们介绍了 Grafana 中的面板概念,对于基于时间的折线图、面积图和条形图,我们建议使用默认的时间序列进行可视化。接下来我们就来介绍基于 Time series 时间序列的图形可视化方式的操作。

添加面板  Time series(时间序列)

cpu使用率:

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

面板是属于某一个 Dashboard 的,所以我们需要先创建一个 Dashboard,在侧边栏点击 + 切换到 Dashboard 下面开始创建 Dashboard:d9fe2564ff13e42afd2eae80d86a4e8a.png在默认创建的新的 Dashboard 中就有一个空的面板,点击 Add an empty panel 即可开始添加面板: 创建panel f881ca495f68f21a343c14deb1fea9e4.png471b16f12cf4cb7a1cfba1ebdaec7226.png最右边是关于panel的配置6ceb310964384d1b065ed4c4f1148d1e.png548399c51e048ae411420ac46de5c9cb.png在左侧的话分了上下两块,上面其实就是一个图形的展示。

Panel options

21ce0a742f72f7a02970e196bb6a85e1.png背景是否透明,整体的配置如下8a2e15fc7a37339e3a1e57b100b7f27b.png

Tooltip mode

Tooltip mode也即是鼠标移动到图形上面展示所有的指标,还是展示鼠标位置的指标。6bf807dc8a059919432fdd4073b5718c.png更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

Legend

Legend mode  也就是标志的模式ef60568b8bbbd6766d80c9043dc661c7.pngLegend placement  默认是在底部,可以调整到右上角a0c477ce2db53aaa09348cb8b18be294.pngLegend 格式其实就是格式化展示显示在图形上的东西,我们这里只需要instance的值。90dff49040f4a1d554476bbd599a00ac.png5840c12046478f507e73a5ca8a341d1a.png这里值也可以去选,选择最大值和最小值bdd813cd403e2058a5d0ebfdde8092e7.png可以选择不同的表格cb49f79e19cfa57bf7010acadcb21a20.pngdf71ef7bbbf13b9f51b37cd00ee1ea55.png74944d4e71242eef6e271b48cbe5ec47.png

Graph styles

关于图形还可以再去修改样式,Graph styles里面去修改。3f7ad5e37c8a548bb926809612a1e171.png最后效果如下 e6df07123e7497bbc1404cb1719f5212.png同样的道理来看看内存使用率54ee56c1938004d8e12d4db8b8a928d7.png这里会展示出很多的标签,在panel里面的Legend只要展示instance即可。d89c6e597352ed72b4b2d17876b53e62.pngcdeb400d8ac8fd5223ffa348b9cea6d9.png最后调整一下大小,调整一下位置即可!b848eb2d0feac8400891bc473a4c4183.png最后别忘记保存了监控面板!d4f3ac6741f253e787dfdf32d6f1f6c5.png上面就是创建panel的使用方法,但是我们是将master,nod1,node2这些全部展现在一个面板里面,如果监控的节点比较多都展示在这个地方就不方便了。更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

图形定制

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

多个查询

编辑 CPU 使用率这个面板,在面板编辑器下方的 Query 区域点击 + Query 按钮新增一个查询:

这样其实也就是将不同的查询放到一个panel里面去,这样就可以多维度的展示监控指标了。87d0079fa7df7ba71446e6d01ed11748.png在该查询中输入查询语句来获取系统 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

d3b249c9204194d32e87f9c1f3ccceaa.png用同样的方式再新增一个查询用户 CPU 使用率的语句:765ee7fb293f21b1d43977982b92b43d.png如果我们选择查询所有节点的 CPU 使用率,那么最终的效果如下所示:(这样就可以看到总使用率和用户使用率了)。7e0974c5c79d82c9666a2c62e9d47315.png这样就将不同的查询整合到同一个panel里面来了。

转换

我们可以看 Legend 部分的展示始终会带上 :9100 这个端口号,但其实这对于我们展示来说意义不大,所以最好是去掉这个端口信息,可以点击编辑器下方 Query 旁边的 Transform 选项卡进入转换页面:ebb89b099a378509b85cb4da46749821.pngd142017f71cdd94d3c83d74b71095ac4.pngTransform 转换功能允许我们在查询结果可视化之前加入、计算、重新排序、隐藏和重命名查询结果,不过目前只支持时间序列数据。

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

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

Grafana 中支持非常多的转换方式,我们这里使用 Rename by regex 这个通过正则重命名的转换器即可,这里我们只需要添加一个 (.*):9100 的正则表达式即可,将 host 信息保留下来,如下图所示:af70ba381d8c0c22410892f6c64287e1.png关于转换的更多使用方法可以参考官方文档 https://grafana.com/docs/grafana/latest/panels/transformations/types-options/。更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

Legend 配置

上面转换完成后,可以看到 Legend 部分展示的图例较多,我们可以将 Legend 的模式修改为 Table2bd60e74bf04ff45f8a22bb15ffe1b4c.png修改为 Table 模式后可以看到图形中的 Legend 用表格的形式展示出来了。1c14874d7057b23bb12bcd13810db685.png展示到右上方,这样方便看。

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

Standard options

由于我们这里计算的都是百分比,所以可以将单位设置为 %,位于右侧的 Standard options 下方的 Unit 中选择 Misc -> Percent(0-100) 即可:f69ad2920432dd6d84337940a643e98f.pngb665eef3953a46757301feb7b724f505.png此外还可以配置图例的最小值、最大值、保留小数的位数、图形颜色配置等等。58fd3962794f6303587a3440115aa4e2.png可以去选择图形颜色的配置 06b57c4f845ffa3ddd23637e585c5f09.png

时间间隔设置为变量

前面我们在查询监控数据的时候都是将区间向量的范围固定成了 1m 或者 5m,这样固定后显然不是非常灵活,所以我们可以再添加一个时间间隔的参数来灵活选择。bd6696d14c74b65594c4a599a5d47296.png这个1m钟就需要改为参数的形式。 f8a6e0abe65ddb080843807c7a1a554b.png这里我们新增了一个名为 interval 的参数,不过需要注意该参数的类型为 Interval,然后我们配置该参数可选的值包括 1m,5m,10m,30m,添加后在 Dashboard 页面上就会多一个时间间隔的下拉框。然后记得将查询语句中的相关时间间隔替换成 $interval 参数:747c65acf11298acde71478e6142da6f.png可以看到这里可以选择时间间隔了。81b70ff2ab8e17cfab808d098214c4d5.png修改PromQL!bfbd71b12a8f0b66a6d459aba6a5c998.png更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

覆盖

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

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

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

首先我们可以先将整个面板的单位调整为 bytes(IEC),该形式的单位会自动在 GiB、MiB、KiB 之间进行换算:89bbf90e2b4c7c05f5788e88d97c316c.png但是明显使用率的单位是不正确的,这个时候就需要我们针对该查询进行覆盖配置,点击编辑器右侧 Overrides 选项卡进行覆盖配置:3a59beee4910792296f0790452ab8395.png点击选项卡中的 + Add field override 按钮可以对属性进行覆盖操作,可选的方式有很多,比如可以设置指定具体属性的值,也可以根据正则表达式来匹配属性的名进行配置,还可以根据指定的类型以及指定的 query 查询结果进行覆盖,显然我们这里选择最后一项 Fields returned by query 更加合理,直接选择查询使用率的 A 这条语句进行覆盖:

下面其实就是对单独的promsql语句展示图形的配置,包括线条,以百分比显示ed6efb9416161df8941c9850ccc2fb1b.png1d825187c992239313c86aa660567b0c.png然后就可以开始针对查询 A 的各项属性进行单独的配置:8bbc8c1a5ebfb9a25e21572b34b9f72c.png比如我们可以将内存使用百分比的图形样式修改成 Point 点的形式:2717ef2a377848353a48d72592056341.png然后还可以图形的各种样式,比如 Point 的大小。a4edc56bb30209901d1584f511584647.png同样还可以给图例的 Y 轴添加上百分比的单位,显示在图形右侧,这样看上去就更加清晰了:370b18f04021d89e7ddc1ff1caac770a.png最终效果如下所示:ac9625ea478b8c562c6864ff8c928c0a.png这样我们就在同一个图形当中显示出了不同单位的两种图形,而且毫无违和感吧~

调整精度

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

这里就需要对查询 A 的 Min Step 和 Resolution 选项进行配置:fb53f18339e8b1d948f1ab21ef160b1d.png当查询到的样本数据量非常大时可以导致 Grafana 渲染图标时出现一些性能问题,通过 Min Step 可以控制 Prometheus 查询数据时的最小步长,从而减少从 Prometheus 返回的数据量。

Resolution 选项则可以控制 Grafana 自身渲染的数据量。例如,如果 Resolution 的值为 1/10,Grafana 会将 Prometeus 返回的 10 个样本数据合并成一个点。因此 Resolution 越小可视化的精确性越高,反之,可视化的精度越低。比如我们这里设置最小步长为 5m,分辨率为 1/10,最终的图形样式如下所示:7d21e58306f8a69e7816ca2fae47ee0c.png更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

链接:https://blog.csdn.net/qq_34556414/article

/details/123548933  

https://blog.csdn.net/qq_34556414/article/

details/123689279

读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

9f0af5fbd292f4664c7b47a6b6e5f549.jpeg

推荐阅读 点击标题可跳转

面试官:如何将多个容器暴露到一个端口上?

啪啪打脸!k8s 为啥又把 swap 拿回来了

彻底凉凉!停止支持!

知名车企被爆大规模裁员!比例 10%-20%

Windows 全新虚拟机发布!

专为 90 后定制的 Shell,到底有啥不一样!

0336a446e7225067fa107b15df081f25.png

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值