原文: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這兒通常會出現大意相同寫法不同的屬性名稱。這就是對應的。 最后附上一張成功圖。