侧边栏壁纸
博主头像
一揽芳华 博主等级

行动起来,活在当下

  • 累计撰写 265 篇文章
  • 累计创建 24 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

6.2.Grafana添加时间序列面板

芳华是个男孩!
2024-10-14 / 0 评论 / 0 点赞 / 10 阅读 / 0 字
广告 广告

title: 6.2.Grafana添加时间序列面板
order: 37

icon: lightbulb

Grafana添加时间序列面板

一、环境

主机名

IP地址

系统

说明

localhost

192.168.11.61

Ubuntu 20.04

docker安装的prometheus

test

192.168.11.62

Ubuntu 20.04

二、Grafana创建Dashboard

因为要展示prometheus的数据,所以我们先要添加prometheus的数据源

1、添加数据源

登陆grafana

http://192.168.11.61:3000

默认的用户名和密码为 admin(docker安装的密码为password),也可以在配置文件 /etc/grafana/grafana.ini 中配置 admin_useradmin_password 两个参数来进行覆盖。

第一次登陆,需要修改密码,填入新的密码后,再submit(提交)如下图:

添加 Prometheus 数据源

在 Grafana 中创建 Prometheus 数据源:

  1. 单击边栏中的“齿轮”,打开“配置”菜单。

  2. 单击“数据源”。

  3. 单击“添加数据源”。

  4. 选择“Prometheus”作为类型。

  5. 设置适当的 Prometheus 服务器 URL(例如,http://localhost:9090,docker安装换成http://prometheus:9090

  6. 单击“保存并测试”以保存新的数据源。

如下图:

点击Prometheus

url填入:http://localhost:9090 注:localhost表示本机

2、创建仪表盘

从 Grafana.com 导入仪表板

https://grafana.com/grafana/dashboards/

打开grafana的dashboards官网,在搜索栏输入我们想要的仪表盘,回车搜索,拷贝下载量大的dashboards的id

在导入到grafana。

因为这步我们之前操作过了。所以这步略过

手动创建仪表盘(添加Panel)

面板是属于某一个 Dashboard 的,所以我们需要先创建一个 Dashboard,在侧边栏点击 + 切换到 Dashboard 下面开始创建 Dashboard:

比如我们现在就要来查询节点的 CPU 使用率,前面在 node_exporter 章节中已经学习了该监控数据的查询语句为 (1 - sum(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) / sum(rate(node_cpu_seconds_total[5m])) by (instance) ) * 100,只需要将该语句填充到查询的 PromQL 语句中即可在上面显示出监控的结果:

点击右上角的 Apply 按钮即可创建成功一个 Panel 面板。

用同样的方式我们可以创建一个用于查询节点内存使用率的面板:

(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)*100

创建完成后的面板我们也可以拖动他们的排列位置:

如果还想重新编辑面板,可以点击标题,在弹出来的下拉框中选择 Edit 编辑即可:

添加参数

现在我们在一个 Dashboard 中添加了两个 Panel,我们可以很明显看到会直接将所有的节点信息展示在同一个面板中,但是如果有非常多的节点的话数据量就非常大了,这种情况下我们最好的方式是将节点当成参数,可以让用户自己去选择要查看哪一个节点的监控信息,要实现这个功能,我们就需要去添加一个以节点为参数的变量来去查询监控数据。

点击 Dashboard 页面右上方的 Dashboard settings 按钮,进入配置页面:

在该 Settings 页面可以来对整个 Dashboard 进行配置,比如名称、标签、变量等:

这里我们点击左边的 Variables 添加一个变量,变量支持更具交互性和动态性的仪表板,我们可以在它们的位置使用变量,而不是在指标查询中硬编码,变量显示为 Dashboard 顶部的下拉列表,这些下拉列表可以轻松更改仪表板中显示的数据。

为了能够选择节点数据,这里我们定义了一个名为 instance 的变量名,在添加变量的页面中主要包括如下一些属性:

  • Name:变量名,在仪表盘中调用使用 $变量名 的方式

  • Type:变量类型,变量类型有多种,其中 query 表示这个变量是一个查询语句

  • Hide:为空是表现为下拉框,选择 label 表示不显示下拉框的名字,选择 variable 表示隐藏该变量,该变量不会在 Dashboard 上方显示出来,默认选择为空

  • Data source:查询语句的数据源

  • Refresh:何时去更新变量的值,变量的值是通过查询数据源获取到的,但是数据源本身也会发生变化,所以要时不时的去更新变量的值,这样数据源的改变才会在变量对应的下拉框中显示出来。Refresh 有两个值可以选择:On Dashboard Load(在 Dashboard 加载时更新)、On Time Range Change(在时间范围变更的时候更新)

  • Query:查询表达式,不同的数据源查询表达式都不同

  • Regex:正则表达式,用来对抓取到的数据进行过滤,默认不过滤

  • Sort:排序,对下拉框中的变量值做排序,默认是 disable,表示查询结果是怎样下拉框就怎样显示

  • Multi-value:启用这个功能,变量的值就可以选择多个,具体表现在变量对应的下拉框中可以选多个值的组合

  • Include All option:启用这个功能,变量下拉框中就多了一个全选 all 的选项

我们还可以使用一个 label_values() 的函数来直接获取查询结果中的某个 label 标签的值:

label_values(up{job="node-exporter"},instance)

回到 Dashboard 页面就可以看到多了一个选择节点的下拉框:但是这个时候的面板并不会随着我们下拉框的选择而变化,我们需要将 instance 这个变量传入查询语句中,比如重新修改CPU使用率的查询语句:

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


以同样的方式修改内存使用率

(1 - node_memory_MemAvailable_bytes{instance=~"$instance"} / node_memory_MemTotal_bytes{instance=~"$instance" } )* 100

回到 Dashboard 页面就可以根据我们的下拉框来选择需要监控的节点数据了,定义参数的时候如果选择了可以选择所有,同样可以查看所有节点的数据

我们也可以勾选多选框

可以我们就可以勾选多个

多个查询

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

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

在添加idle的使用率的表达式

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

依次在添加iowait和system和其他的使用率

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


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


#其他cpu使用
(sum(rate(node_cpu_seconds_total{mode!~"system|user|iowait|idle"}[5m])) by (instance) / sum(rate(node_cpu_seconds_total{instance=~"$instance"}[5m])) by (instance) ) * 100

完成后如下图:

Legend 配置

上面转换完成后,可以看到 Legend 部分展示的图例较多,我们可以将 Legend 的模式修改为 Table,此外我们还可以通过 Legend values 来选择一些其他的信息进行展示,比如最大值、最小值、平均值等等:

其他选项

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

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

时间间隔

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

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

覆盖

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

新增总内存的查询 node_memory_MemTotal_bytes{instance=~"$instance"},已用内存的查询 node_memory_MemTotal_bytes{instance=~"$instance"} - node_memory_MemAvailable_bytes{instance=~"$instance"} 以及可用内存的查询 node_memory_MemAvailable_bytes{instance=~"$instance"},如下图所示:

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

但是明显使用率的单位是不正确的,这个时候就需要我们针对该查询进行覆盖配置,点击编辑器右侧 Overrides 选项卡进行覆盖配置:

点击选项卡中的 + Add field override 按钮可以对属性进行覆盖操作

可选的方式有很多,比如可以设置指定具体属性的值,也可以根据正则表达式来匹配属性的名进行配置,还可以根据指定的类型以及指定的 query 查询结果进行覆盖,显然我们这里选择最后一项 Fields returned by query

直接选择查询使用率的 A 这条语句进行覆盖

先加上百分比的单位

选择Misc–Percent(0-100)

同样还可以把百分比显示在图形右侧

这样我们就在同一个图形当中显示出了不同单位的两种图形

0
广告 广告

评论区