新版GRANAFA K8S插件 K8S NODE 图表不显示问题解决方法
阅读原文时间:2021年04月22日阅读:1

原文:https://www.wchao.site/archives/granafa-k8s

其他参考:https://blog.csdn.net/bbwangj/article/details/82658419

k8s node 图表不显示问题。 收集节点信息,依赖node-exporter 暴露的http接口。以获取cpu使用率接口为例,其格式如下:

node_cpu_seconds_total{beta_kubernetes_io_arch="amd64",beta_kubernetes_io_os="linux",cpu="9",instance="slave1",job="kubernetes-nodes",kubernetes_io_arch="amd64",kubernetes_io_hostname="slave1",kubernetes_io_os="linux",mode="user"}

dashboard 中获取的cpu数据的公式如下:

可以看到k8s Node模板里面是使用 nodename 字段来获取不同节点的数据,但是node-exporter 暴露出来的接口中,并没有nodename 字段,因此导致了模板查询不到数据,从而无法绘制图形。

解决方法如下:

点击 k8s Node dashboard 页面中的设置按钮,选择Variable 菜单

可以看到当前有4个变量,点击右上角New 创建一个新变量

点击保存后,会弹出一个提示框。选择overwrite 即可。 

注意上图中的node_boot_time 要写成 node_boot_time_seconds,即

label_values(node_boot_time_seconds,instance)

直到下面preview of values 显示主机列表的时候才算正常

如下所示

再回到 k8s Node dashboard 页面,可以看到多了instance 一栏

随后编辑各个panel, 将引用了nodename的地方改为instance。这里以cpu panel 为例: 

可以看到,修改后图形能正常展示了。 使用新版本最后还是不能正常显示,不过问题不大,主要原因是有些字段名字已经更换了,下面是部分更改属性的对应:

* node_cpu ->  node_cpu_seconds_total
* node_memory_MemTotal -> node_memory_MemTotal_bytes
* node_memory_MemFree -> node_memory_MemFree_bytes
* node_filesystem_avail -> node_filesystem_avail_bytes
* node_filesystem_size -> node_filesystem_size_bytes
* node_disk_io_time_ms -> node_disk_io_time_seconds_total
* node_disk_reads_completed -> node_disk_reads_completed_total
* node_disk_sectors_written -> node_disk_written_bytes_total
* node_time -> node_time_seconds
* node_boot_time -> node_boot_time_seconds
* node_intr -> node_intr_total
* node_filesystem_free -> node_filesystem_free_bytes
* node_filesystem_size -> node_filesystem_size_bytes
* node_disk_bytes_read-> node_disk_read_bytes_total
* node_disk_bytes_written -> node_disk_written_bytes_total
* node_disk_reads_completed->node_disk_reads_completed_total
* node_disk_writes_completed  ->
        node_disk_writes_completed_total
* node_network_receive_bytes  ->
        node_network_receive_bytes_total
* node_network_transmit_bytes ->
        node_network_transmit_bytes_total
* node_network_receive_errs   ->
        node_network_receive_errs_total

授人以鱼不如授人以渔。如果上面没有列出的属性,你复制一下到prometheus这儿通常会出现大意相同写法不同的属性名称。这就是对应的。 最后附上一张成功图。 

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章