新版GRANAFA K8S插件 K8S NODE 图表不显示问题解决方法
原文: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这儿通常会出现大意相同写法不同的属性名称。这就是对应的。 最后附上一张成功图。