Prometheus 企业级实际使用

  • 一、企业CPU监控真实案例
  • 1.节点CPU每分钟使用率监控
  • 2.节点CPU每分钟iowait%使用率监控
  • 3.节点CPU每分钟user%使用率监控
  • 二、企业内存监控真实案例
  • centos 6算法:
  • centos 7算法:
  • 1、节点内存使用率
  • 三、企业硬盘监控
  • 1、统计磁盘 根分区利用率
  • 2、统计磁盘 1分钟每秒 读写 I/O ,Mb/S
  • 3、判断硬盘剩余空间百分比
  • predict_linear() 函数
  • 四、网络传输
  • 1、网络传输每秒钟速率
  • 2、网络接收总字节数
  • 五、文件描述符
  • 文件描述符使用率监控




一、企业CPU监控真实案例

用户态的CPU 使用率,是跟应用程序(或者说软件) 的运行密切相关

当软件启动大量进程并行处理任务时,当进程之间频繁上下业务切换时,对用户态的CPU 消耗最大。

IOWAIT CPU等待时间,当服务器硬盘 IO占用过大时,CPU会等待IO的返回,进入 interuptable 类型的CPU等待时间,所以对于 IOWAT CPU的监控是很有必要的。

报警阈值设置:设置成80.90不符合实际生产环境

prometheus中通过接口获取CPU指标数据 prometheus占用cpu较高_文件描述符

最好CPU综合利用率在 95左右,最为合适。


1.节点CPU每分钟使用率监控

采集方式:Node_exporter

公式:(1- ((sum(increase(node_cpu_seconds_total{mode=“idle”}[1m]))by(instance)) / (sum(increase(node_cpu_seconds_total[1m]))by(instance)))) * 100


2.节点CPU每分钟iowait%使用率监控

采集方式:Node_exporter

公式:(sum(increase(node_cpu_seconds_total{mode=“iowait”}[1m])) by (instance)) / (sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100

3.节点CPU每分钟user%使用率监控

采集方式:Node_exporter

公式:(sum(increase(node_cpu_seconds_total{mode=“user”}[1m])) by (instance)) / (sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100


二、企业内存监控真实案例

free -m 6 / 7 版本的内存计算方式

centos 6算法:

prometheus中通过接口获取CPU指标数据 prometheus占用cpu较高_centos_02

可用内存 = free+buffers+cached

使用率 = 实际可用内存 / 总内存(total)


centos 7算法:

prometheus中通过接口获取CPU指标数据 prometheus占用cpu较高_Prometheus_03

可用内存 = available

使用率 = 实际可用内存 / 总内存


1、节点内存使用率

采集方式:Node_exporter

公式centos7:(1- node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

公式2centos6:(1- ((node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_MemFree_bytes) / node_memory_MemTotal_bytes)) * 100


三、企业硬盘监控

文件系统空闲空间(以字节为单位):node_filesystem_free_bytes{fstype=“xfs”}

文件系统大小(单位为字节)。:node_filesystem_size_bytes{fstype=“xfs”}

空闲利用率:空闲空间 / 总空间

非空闲利用率:(1- (空闲利用率 / 总空间) * 100

成功读取的字节数。:node_disk_read_bytes_total{device=“sda”}

成功写入的总字节数。:node_disk_written_bytes_total{device=“sda”}


1、统计磁盘 根分区利用率

采集方式:Node_exporter

公式:(1- (sum(node_filesystem_free_bytes{fstype=“xfs”})by(instance) / sum(node_filesystem_size_bytes{fstype=“xfs”})by(instance))) * 100


2、统计磁盘 1分钟每秒 读写 I/O ,Mb/S

采集方式:Node_exporter

公式:( rate(node_disk_read_bytes_total{device=“sda”}[1m]) + rate(node_disk_written_bytes_total{device=“sda”}[1m])) /1024 /1024

3、判断硬盘剩余空间百分比

采集方式:Node_exporter

公式:( (sum(node_filesystem_free_bytes{fstype=“xfs”})by(instance)) / (sum(node_filesystem_size_bytes{fstype=“xfs”}) by(instance)) ) * 100


predict_linear() 函数

预测硬盘百分比报警使用 predict_linear() 函数。

predict_linear() 可以起到对曲线变化速率的计算,以及在一段时间内 加速度的预测。

它可以实时监测 硬盘使用率曲线的 变化情况,假如在一个很小的时间段中,发现硬盘使用率急速下降(跟之前平缓期相比较)。
会对这种下降的速度 进行一个未来一段时间的预测。比如发现 未来5分钟内,按照这个下降速度,硬盘利用率会到达100%。
那么在当前硬盘还剩余 20% 的时候就会报警。


四、网络传输

node_network_transmit_bytes_total{device=“ens33”} 网络设备传输总字节数

node_network_receive_bytes_total{device=“ens33”} 网络设备接收总字节

1、网络传输每秒钟速率

公式:rate(node_network_transmit_bytes_total{device=“ens33”}[1m])


2、网络接收总字节数

公式:node_network_receive_bytes_total{device=“ens33”}


五、文件描述符

文件描述符 是 linux/unix 操作系统中特有的概念。相当于 windows系统中的句柄。

linux 系统中,每当进程打开一个文件时,其系统就会为其分配一个唯一的文件描述符,用来标识这个文件。

标准C中每个进程默认打开的有三个文件,标准输入,标准输出,标准错误,分别用一个FILE结构的指针来表示,即 stdin,stout,sterr,这三个结构分别对应着三个文件描述符 0,1,2

文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和 socket。第一个打开的文件是 0,第二个是 1。依次类推,linux操作系统通常对每个进程能打开的文件数都一个限制,默认最大打开的文件描述符是 1024。


修改文件描述符:

软限制文件数:soft nofile 655360 >> /etc/security/limits.conf

硬限制文件数:hard nofile 655360 >> /etc/security/limits.conf

软限制用户可用进程:soft nproc 2048 >> /etc/security/limits.conf

硬限制用户可用进程:hard nproc 4096 >> /etc/security/limits.conf

文件描述符使用率监控

采集方式:Node_exporter

公式:(node_filefd_allocated / node_filefd_maximum ) * 100