searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

主机节点监控

2023-11-08 03:35:12
33
0
# node-exporter常用指标
 
## cpu监控
### 相关指标
+ node_cpu_seconds_total
#### 指标说明
> 指标内容如下,用于统计操作系统启动后CPU每种模式下(用户态user、内核态system、空闲idle...)所花费的时间,是一个counter类型,持续累积值
```
node_cpu_seconds_total{cpu="0",mode="nice"} 0.01 # 低优先级用户态
node_cpu_seconds_total{cpu="0",mode="softirq"} 87.99 # 软中断
node_cpu_seconds_total{cpu="0",mode="steal"} 0 # 虚拟机运行时被其他虚拟机占用CPU
node_cpu_seconds_total{cpu="0",mode="system"} 309.38 # 内核态
node_cpu_seconds_total{cpu="0",mode="user"} 79.93 # 用户态
node_cpu_seconds_total{cpu="1",mode="idle"} 13168.98 # 空闲
node_cpu_seconds_total{cpu="1",mode="iowait"} 0.27 # 等待I/O
node_cpu_seconds_total{cpu="1",mode="irq"} 0 # 硬中断

 

---------两次采集的分割线,可以看出不同mode的值是递增的---------

 

node_cpu_seconds_total{cpu="1",mode="nice"} 0
node_cpu_seconds_total{cpu="1",mode="softirq"} 74.1
node_cpu_seconds_total{cpu="1",mode="steal"} 0
node_cpu_seconds_total{cpu="1",mode="system"} 314.71
node_cpu_seconds_total{cpu="1",mode="user"} 78.83
node_cpu_seconds_total{cpu="2",mode="idle"} 13182.78
node_cpu_seconds_total{cpu="2",mode="iowait"} 0.69
node_cpu_seconds_total{cpu="2",mode="irq"} 0
```
### 指标用途
> 查询cpu使用率: ***cpu使用率是cpu除空闲(idle)状态之外的其他所有cpu状态的时间总和除以总的cpu时间***

 

 
```
# 表达式
(1 - sum(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(rate(node_cpu_seconds_total[1m])) by (instance) ) * 100>90
```
> tips:该表达式用到了rate函数计算1m内的每秒的变化速率,irate和rate都会用于计算某个指标在一定时间间隔内的变化速率。但是它们的计算方法有所不同:irate取的是在指定时间范围内的最近两个数据点来算速率,而rate会取指定时间范围内所有数据点,算出一组速率,然后取平均值作为结果。

 

> 所以官网文档说:irate适合快速变化的计数器(counter),而rate适合缓慢变化的计数器(counter)

 

> increase()和rate()对比只是它没有将最终单位转换为 “每秒”(1/s),求取的是一段范围的增量



![cpu-usage](/doc/imgs/cpu-usage.png)



## 内存监控
### 相关指标
+ node_memory_Buffers_bytes
+ node_memory_Cached_bytes
+ node_memory_MemFree_bytes
+ node_memory_MemTotal_bytes
### 指标说明
> 关于节点内存情况我们使用free命令查看如下,理想情况下可使用内存avilabel=buff+cache+free
```
[root@master ~]# free
total used free shared buff/cache available
Mem: 3782872 1670360 128216 5304 1984296 1829016
Swap: 0 0 0

 

Mem 行(第二行)是内存的使用情况
Swap 行(第三行)是交换空间的使用情况
total 列显示系统总的可用物理内存和交换空间大小(node_memory_MemTotal_bytes)
used 列显示已经被使用的物理内存和交换空间
free 列显示还有多少物理内存和交换空间可用使用(node_memory_MemFree_bytes)
shared 列显示被共享使用的物理内存大小
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小(node_memory_Buffers_byte、node_memory_Cached_bytes)
available 列显示还可以被应用程序使用的物理内存大小
```
### 指标用途
> 查询使用率:***内存使用率是可用内存除以总内存***

 

 
```
# 表达式
(1- (node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_MemFree_bytes) / node_memory_MemTotal_bytes) * 100>90
```
![mem-usage](/doc/imgs/mem-usage.png)
## 磁盘监控
### 相关指标
+ node_filesystem_avail_bytes 可用容量
+ node_filesystem_size_bytes 总容量
+ node_filesystem_files_free 可用文件数
+ node_filesystem_files 总文件数量
+ node_filesystem_readonly 文件系统只读
+ node_disk_reads_completed_total 磁盘读总量
+ node_disk_writes_completed_total 磁盘写总量
### 指标说明
> 要监控磁盘容量,需要用到 node_filesystem_* 相关的指标,比如要查询节点磁盘空间使用率,则可以同样用总的减去可用的来进行计算,磁盘可用空间使用 node_filesystem_avail_bytes 指标,但是由于会有一些我们不关心的磁盘信息,所以我们可以使用 fstype 标签过滤关心的磁盘信息,比如 ext4 或者 xfs 格式的磁盘

 

> 当node_filesystem_readonly==1表示磁盘挂载目录文件系统只读,无法写入数据,一般是因为磁盘故障或文件系统损坏,磁盘正常情况下该值应为0

 

> 读 IO 使用 node_disk_reads_completed_total指标,写 IO 使用 node_disk_writes_completed_total 指标。

 

### 指标用途
> 查询磁盘空间使用率

 

 
```
# 表达式
(1 - node_filesystem_avail_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"}) * 100>90
```

 

![disk-usage](/doc/imgs/disk-usage.png)

 

> Node文件系统即将占满

 

 
 
```
# 表达式
( node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 40 and predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```
> Node文件系统即将无空间
 
 
```
# 表达式
( node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 10 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```



> Node文件系统文件即将占满

 

 
 
```
# 表达式
( node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 40 and predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```
> Node文件系统几乎无文件

 

 
 

 

```
# 表达式
( node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 8 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```
> Node文件系统只读(异常)

 

 
 

 

```
# 表达式
node_filesystem_readonly{fstype=~"(ext.|xfs)"} == 1
```

 

> 磁盘读IO监控

 

默认阈值: 未知
```
# 表达式
rate(node_disk_reads_completed_total[5m])
```
![io-read](/doc/imgs/io-read.png)
> 磁盘写IO监控

 

默认阈值: 未知
```
# 表达式
rate(node_disk_writes_completed_total[5m])
```
![io-write](/doc/imgs/io-write.png)
> 读写io总和

 

默认阈值: 未知
```
# 表达式
rate(node_disk_reads_completed_total[5m]) + rate(node_disk_writes_completed_total[5m])
```
![io-write](/doc/imgs/io-all.png)
## 网络监控
### 相关指标
+ node_network_receive_bytes_total
+ node_network_transmit_bytes_total
+ node_network_receive_errs_total
+ node_network_receive_transmit_errs_total
### 指标说明
> 网络分上行(receive)和下行(transmit),即上传带宽和下载带宽,通常下行带宽是不限的
### 指标用途
> 查询上行网络带宽的瞬时变化

 

默认阈值: 未知
```
# 表达式
sum by(instance) (irate(node_network_receive_bytes_total{device!~"bond.*?|lo"}[5m]))
```
> tips: 网卡bond,即网卡绑定就是将两个或者更多的物理网卡绑定成一个虚拟网卡。通过绑定可以达到链路冗余、带宽倍增、负载均衡等目的, lo是系统虚拟的回环接口,所以这两种虚拟网卡类型不计入统计
![network-receive](/doc/imgs/network-receive.png)
> 查询下行网络带宽的瞬时变化

 

默认阈值: 未知
```
# 表达式
sum by(instance) (irate(node_network_transmit_bytes_total{device!~"bond.*?|lo"}[5m]))
```
![network-transmit](/doc/imgs/network-transmit.png)

 

> 查询node网络接收错误

 

 
```
# 表达式
increase(node_network_receive_errs_total[2m]) >10
```
> Node网络传输错误

 

 
```
# 表达式
increase(node_network_transmit_errs_total[2m]) > 10
```
0条评论
作者已关闭评论
李****召
3文章数
0粉丝数
李****召
3 文章 | 0 粉丝
李****召
3文章数
0粉丝数
李****召
3 文章 | 0 粉丝
原创

主机节点监控

2023-11-08 03:35:12
33
0
# node-exporter常用指标
 
## cpu监控
### 相关指标
+ node_cpu_seconds_total
#### 指标说明
> 指标内容如下,用于统计操作系统启动后CPU每种模式下(用户态user、内核态system、空闲idle...)所花费的时间,是一个counter类型,持续累积值
```
node_cpu_seconds_total{cpu="0",mode="nice"} 0.01 # 低优先级用户态
node_cpu_seconds_total{cpu="0",mode="softirq"} 87.99 # 软中断
node_cpu_seconds_total{cpu="0",mode="steal"} 0 # 虚拟机运行时被其他虚拟机占用CPU
node_cpu_seconds_total{cpu="0",mode="system"} 309.38 # 内核态
node_cpu_seconds_total{cpu="0",mode="user"} 79.93 # 用户态
node_cpu_seconds_total{cpu="1",mode="idle"} 13168.98 # 空闲
node_cpu_seconds_total{cpu="1",mode="iowait"} 0.27 # 等待I/O
node_cpu_seconds_total{cpu="1",mode="irq"} 0 # 硬中断

 

---------两次采集的分割线,可以看出不同mode的值是递增的---------

 

node_cpu_seconds_total{cpu="1",mode="nice"} 0
node_cpu_seconds_total{cpu="1",mode="softirq"} 74.1
node_cpu_seconds_total{cpu="1",mode="steal"} 0
node_cpu_seconds_total{cpu="1",mode="system"} 314.71
node_cpu_seconds_total{cpu="1",mode="user"} 78.83
node_cpu_seconds_total{cpu="2",mode="idle"} 13182.78
node_cpu_seconds_total{cpu="2",mode="iowait"} 0.69
node_cpu_seconds_total{cpu="2",mode="irq"} 0
```
### 指标用途
> 查询cpu使用率: ***cpu使用率是cpu除空闲(idle)状态之外的其他所有cpu状态的时间总和除以总的cpu时间***

 

 
```
# 表达式
(1 - sum(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(rate(node_cpu_seconds_total[1m])) by (instance) ) * 100>90
```
> tips:该表达式用到了rate函数计算1m内的每秒的变化速率,irate和rate都会用于计算某个指标在一定时间间隔内的变化速率。但是它们的计算方法有所不同:irate取的是在指定时间范围内的最近两个数据点来算速率,而rate会取指定时间范围内所有数据点,算出一组速率,然后取平均值作为结果。

 

> 所以官网文档说:irate适合快速变化的计数器(counter),而rate适合缓慢变化的计数器(counter)

 

> increase()和rate()对比只是它没有将最终单位转换为 “每秒”(1/s),求取的是一段范围的增量



![cpu-usage](/doc/imgs/cpu-usage.png)



## 内存监控
### 相关指标
+ node_memory_Buffers_bytes
+ node_memory_Cached_bytes
+ node_memory_MemFree_bytes
+ node_memory_MemTotal_bytes
### 指标说明
> 关于节点内存情况我们使用free命令查看如下,理想情况下可使用内存avilabel=buff+cache+free
```
[root@master ~]# free
total used free shared buff/cache available
Mem: 3782872 1670360 128216 5304 1984296 1829016
Swap: 0 0 0

 

Mem 行(第二行)是内存的使用情况
Swap 行(第三行)是交换空间的使用情况
total 列显示系统总的可用物理内存和交换空间大小(node_memory_MemTotal_bytes)
used 列显示已经被使用的物理内存和交换空间
free 列显示还有多少物理内存和交换空间可用使用(node_memory_MemFree_bytes)
shared 列显示被共享使用的物理内存大小
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小(node_memory_Buffers_byte、node_memory_Cached_bytes)
available 列显示还可以被应用程序使用的物理内存大小
```
### 指标用途
> 查询使用率:***内存使用率是可用内存除以总内存***

 

 
```
# 表达式
(1- (node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_MemFree_bytes) / node_memory_MemTotal_bytes) * 100>90
```
![mem-usage](/doc/imgs/mem-usage.png)
## 磁盘监控
### 相关指标
+ node_filesystem_avail_bytes 可用容量
+ node_filesystem_size_bytes 总容量
+ node_filesystem_files_free 可用文件数
+ node_filesystem_files 总文件数量
+ node_filesystem_readonly 文件系统只读
+ node_disk_reads_completed_total 磁盘读总量
+ node_disk_writes_completed_total 磁盘写总量
### 指标说明
> 要监控磁盘容量,需要用到 node_filesystem_* 相关的指标,比如要查询节点磁盘空间使用率,则可以同样用总的减去可用的来进行计算,磁盘可用空间使用 node_filesystem_avail_bytes 指标,但是由于会有一些我们不关心的磁盘信息,所以我们可以使用 fstype 标签过滤关心的磁盘信息,比如 ext4 或者 xfs 格式的磁盘

 

> 当node_filesystem_readonly==1表示磁盘挂载目录文件系统只读,无法写入数据,一般是因为磁盘故障或文件系统损坏,磁盘正常情况下该值应为0

 

> 读 IO 使用 node_disk_reads_completed_total指标,写 IO 使用 node_disk_writes_completed_total 指标。

 

### 指标用途
> 查询磁盘空间使用率

 

 
```
# 表达式
(1 - node_filesystem_avail_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"}) * 100>90
```

 

![disk-usage](/doc/imgs/disk-usage.png)

 

> Node文件系统即将占满

 

 
 
```
# 表达式
( node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 40 and predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```
> Node文件系统即将无空间
 
 
```
# 表达式
( node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 10 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```



> Node文件系统文件即将占满

 

 
 
```
# 表达式
( node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 40 and predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```
> Node文件系统几乎无文件

 

 
 

 

```
# 表达式
( node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 8 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 )
```
> Node文件系统只读(异常)

 

 
 

 

```
# 表达式
node_filesystem_readonly{fstype=~"(ext.|xfs)"} == 1
```

 

> 磁盘读IO监控

 

默认阈值: 未知
```
# 表达式
rate(node_disk_reads_completed_total[5m])
```
![io-read](/doc/imgs/io-read.png)
> 磁盘写IO监控

 

默认阈值: 未知
```
# 表达式
rate(node_disk_writes_completed_total[5m])
```
![io-write](/doc/imgs/io-write.png)
> 读写io总和

 

默认阈值: 未知
```
# 表达式
rate(node_disk_reads_completed_total[5m]) + rate(node_disk_writes_completed_total[5m])
```
![io-write](/doc/imgs/io-all.png)
## 网络监控
### 相关指标
+ node_network_receive_bytes_total
+ node_network_transmit_bytes_total
+ node_network_receive_errs_total
+ node_network_receive_transmit_errs_total
### 指标说明
> 网络分上行(receive)和下行(transmit),即上传带宽和下载带宽,通常下行带宽是不限的
### 指标用途
> 查询上行网络带宽的瞬时变化

 

默认阈值: 未知
```
# 表达式
sum by(instance) (irate(node_network_receive_bytes_total{device!~"bond.*?|lo"}[5m]))
```
> tips: 网卡bond,即网卡绑定就是将两个或者更多的物理网卡绑定成一个虚拟网卡。通过绑定可以达到链路冗余、带宽倍增、负载均衡等目的, lo是系统虚拟的回环接口,所以这两种虚拟网卡类型不计入统计
![network-receive](/doc/imgs/network-receive.png)
> 查询下行网络带宽的瞬时变化

 

默认阈值: 未知
```
# 表达式
sum by(instance) (irate(node_network_transmit_bytes_total{device!~"bond.*?|lo"}[5m]))
```
![network-transmit](/doc/imgs/network-transmit.png)

 

> 查询node网络接收错误

 

 
```
# 表达式
increase(node_network_receive_errs_total[2m]) >10
```
> Node网络传输错误

 

 
```
# 表达式
increase(node_network_transmit_errs_total[2m]) > 10
```
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0