Prometheus相关的主机监控指标

一、CPU监控

  • CPU负载指标

node_load1

node_load5

node_load15

以上三个指标为主机CPU平均负载,分别对应一分钟、五分钟和十五分钟的时间间隔。CPU负载是指某段时间内占用CPU时间的进程和等待CPU时间的进程数之和。一般来说,cpu负载数/cpu核数如果超过0.7,应该开始关注机器性能情况 ,如果超过1的话,运维人员应该介入处理。

  • CPU使用率

node_cpu_seconds_total

该指标包括了多个标签,分别标记每种处理模式使用的CPU时间,该指标为counter类型。这个指标不适合直接拿来使用,可通过前面学习的PromQL,将其转化成CPU使用率的指标

Prometheus相关的主机监控指标_第1张图片

mode="idle"代表CPU 的空闲时间,所以我们只需要算出空闲的时间占比,再以总数减去该值 ,便可知道CPU的使用率,此处使用irate方法。由于现有的服务器一般为多核,所以加上avg求出所有cpu的平均值,才是CPU的使用率情况 。

例:100 -avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)* 100

二、内存监控

  • 物理内存使用率

对于内存,我们一般会关注内存的使用率,但node-exporter并不直接进行计算,我们需要根据node-exporet返回的内存指标自己写计算公式:

例:

node_memory_MemTotal_bytes #总内存大小

node_memory_MemFree_bytes #空闲内存大小

node_memory_Buffers_bytes #缓冲缓存大小

node_memory_Cached_bytes #页面缓存大小

计算的公式为:(总内存 -(空闲内存 + 缓冲缓存 + 页面缓存))/ 总内存 * 100

(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes+node_memory_Cached_bytes ))/node_memory_MemTotal_bytes * 100

  • swap内存使用率

Swap为交换内存分区,它使用磁盘上的部分空间来充当服务器内存,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务。而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

例:

node_memory_SwapTotal_bytes #swap内存总大小

node_memory_SwapFree_bytes #swap空闲内存大小

计算的公式:

(node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes)/node_memory_SwapTotal_bytes * 100

三、磁盘监控

  • 磁盘分区使用率

分区使用率的指标可以通过分区空间总容器和分区空闲容量计算出来

node_filesystem_size_bytes #分区空间总容量

node_filesystem_free_bytes # 分区空闲容量

由于主机一般会有多个分区 ,需要通过指标的标签mountpoint 进行区分 ,如 获取 / 分区磁盘使用率可使用公式:

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"})/node_filesystem_size_bytes{mountpoint="/"} * 100

  • 磁盘吞吐量

node_disk_read_bytes_total #分区读总字节数

node_disk_written_bytes_total #分区写总字节数

指标分别对应了分区读写的总字节数,指标为counter类型。前面文章讲过,counter类型会不断的累加,该指标直接使用对于监控没有意义,但可通过下面公式转化为磁盘的每秒读写速率。device代表对应的磁盘分区。

irate(node_disk_read_bytes_total{device="vda"}[5m])

irate(node_disk_written_bytes_total{device="vda"}[5m])

  • 磁盘IOPS

IOPS表示每秒对磁盘的读写次数,它与吞吐量都是衡量磁盘的重要指标。对于IOPS的监控,可通过下面两个指标算得出

node_disk_reads_completed_total #分区读总次数

node_disk_writes_completed_total #分区写总次数

计算公式,使用我们熟悉的irate或rate函数来处理

irate(node_disk_reads_completed_total{device="vda"}[5m])

irate(node_disk_writes_completed_total{device="vda"}[5m])

四、网络监控

  • 网卡流量

网卡流量一般分为上传和下载流量,下面两个指标分别为总的字节数,可通过这两个指标计算出来网卡每秒流量

node_network_receive_bytes_total #下载流量总字节数

node_network_transmit_bytes_total #上传流量总字节数

计算公式如下,此处排除Loopback 网卡

irate(node_network_receive_bytes_total{device != "lo"}[1m]

  • 可用性监控

除了监控主机的性能参数外,我们还需要关注实例的可用性情况,比如是否关机、exporter是否正常运行等。在exporter返回的指标,有一个up指标,可用来实现这类监控需求。

up{job="node-exporter"}

主机监控是基础架构监控中较底层的一类,虽然基础但是非常重要,node-exporter自身还提供不少有用的指标,包括支持textfile的自定义指标。在生产环境中,需要根据实际情况进行调试。

博客可能不能及时回复问题,技术问题欢迎加入交流。

具有丰富的模板开发及项目落地、管理经验分享欢迎加入交流

微信号:king_songax

你可能感兴趣的:(Prometheus技术文档,prometheus,运维,分布式,监控类,开源)