zoukankan      html  css  js  c++  java
  • Prometheus PromQL 简单用法

    说明

    基于上一篇文章的基础,这里做一些关于 CPU、内存、磁盘的一些基础查询语句。

    CPU

    通过查询 metric值为 node_cpu_seconds_total 来获取当前CPU 的所有信息

    直接通过此参数参数,会查到的数据是当前CPU的所有相关的收集到的数据。

    此时就需要使用 irate 函数,用于计算距离向量中的实际序列的每秒顺势增长率。

    再根据标签筛选来查询如下:

    irate(node_cpu_seconds_total{job="node"}[5m])
    

    使用avg聚合查询到的数据后,再使用by 来区分实例,这样就能做到分实例查询各自的数据。

    avg(irate(node_cpu_seconds_total{job="node_srv"}[5m])) by (instance)
    

    上面的语句查询到的CPU数据,是包含CPU的所有数据,而我们要查询的是CPU的5分钟负载

    思路就可以这样:查询出CPU的空闲值mode='idle',乘以 一百得出空闲百分比后,在用100减去空闲百分比就得出CPU使用的百分比

    如下:

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


    内存

    关于内存的metric值有下面几个:

    • node_memory_MemTotal_bytes 主机上的内存总量
    • node_memory_MemFree_bytes 主机上的空闲内存
    • node_memory_Buffers_bytes 内存缓冲区大小
    • node_memory_Cached_bytes 内存缓存区大小

    那么基于上面的度量值,可以做出很多的查询。

    计算使用内存的百分比:

    思路就是用总内存减去空闲内存、缓冲区和缓存区的大小后,再除以总内存

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

    最后乘以一百是为了得出百分比
    结果如下:


    磁盘监控

    对于磁盘的监控,主要分为三种:

    1. 空间大小监控
    2. 磁盘IO读写监控
    3. 预计饱和度监控,意思是说以当前状态的磁盘写入速度,预计多长时间磁盘就会被写满

    磁盘空间利用率百分比

    根据标签筛选,查询某一个分区的空间利用率

    原理是:相同的分区,用总空间减去剩余空间得到使用空间,除以总空间得到利用率百分比

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

    预计饱和

    这里涉及到一些算法,直接列出公式。

    此公式得出的值,当磁盘在未来某个时间段的条件内会写满后,得到的数值会是个负数。

    predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h], 4*3600) < 0
    
  • 相关阅读:
    jmeter对数据库进行简单的压测
    数据库语言sql
    (二)变量的概念与分类
    (一)Java关键字与标识符
    socket之远程执行命令
    python文件操作
    UDP基础server与client
    TCP基础server与client
    Python 之 杂谈(迭代器iter)、偏函数
    python 之解决socket 粘包
  • 原文地址:https://www.cnblogs.com/winstom/p/11936929.html
Copyright © 2011-2022 走看看