博客
关于我
prometheus 语法初探
阅读量:619 次
发布时间:2019-03-13

本文共 1658 字,大约阅读时间需要 5 分钟。

Prometheus是一种基于Go语言开发的开源监控工具,专注于基础监控,并默认保留15天的监控数据。这量级的数据足以支持运维人员进行日常排查和分析。Prometheus的PQL语言提供了强大的查询功能,能够对采集的指标进行多维度分析和高度定制化。这对从入门到进阶学习PQL来说是一个非常重要的工具。

PQL的重要概念

Prometheus的PQL语言具有以下关键概念:

即时向量

即时向量是一个时间点上某指标的值,例如:

node_cpu_seconds_total{mode="idle"}

表示在"mode"标签为" idle "的情况下,该指标的当前值。

区间向量

区间向量则表示某段时间内某指标的取值,每个时间点都包含一系列值。例如:

node_cpu_seconds_total{mode="idle"}[5m]

表示过去5分钟内的"node_cpu_seconds_total"指标的值。

指标类型

Prometheus支持两种主要的指标类型:

  • Gauge:用于度量变化的指标,例如CPU使用率。
  • Counter:用于累计值,例如系统运行时间。
  • 标签

    标签用于唯一标识一个指标的具体信息,支持多个标签,且标签可以使用正则表达式进行匹配。例如:

    node_cpu_seconds_total{mode="idle"iowait}

    表示在"mode"和"iowait"标签下"node_cpu_seconds_total"指标的值。

    PQL的高级功能

    PQL功能强大,支持以下操作:

    • 标签过滤:使用where语句过滤标签值。例如:

      node_cpu_seconds_total{mode="idle"}

      过滤出"mode"为" idle "的指标。

    • 正则表达式匹配:使用~=来进行正则表达式匹配。例如:

      node_cpu_seconds_total{mode=\~"idle|iowait"}

      匹配"mode"为" idle "或" iowait "的值。

    • 数据偏移:使用offset关键字获取相对于当前时间点之前的数据。例如:

      node_cpu_seconds_total offset 5m

      获取过去5分钟的指标数据。

    • 注释:使用#对代码进行注释,便于阅读和理解。

    复杂查询

    PQL支持复杂的查询操作,包括:

    • 数学运算:支持加法、减法、乘法和除法运算。例如:

      node_cpu_seconds_total + node_mem_bytes

      将CPU秒和内存字节相加。

    • 逻辑比较:支持多种逻辑运算符,如==!=>=<=><。例如:

      node_cpu_seconds_total > cpu_load

      比较两个指标的值是否满足条件。

    • 数据集操作:支持andorunless等逻辑运算符,用于联合查询。例如:

      node_cpu_seconds_total and node_mem_bytes

      获取同时满足两个指标的值。

    高级函数

    PQL提供多种高级函数,用于数据分析和处理,包括:

    • 聚合函数:如summinmaxavgcount,用于对数据进行汇总和统计。
    • 排序函数:如topkbottomk,用于对指标值进行排序和筛选。
    • 数学和统计函数:如absabsentceilfloor等,提供数据变换和检测功能。

    实战练习

    通过实际案例来练习PQL查询,例如监控服务器的CPU使用率和内存使用情况:

    group by (instance) (  sum by (mode) (    node_cpu_seconds_total{mode != "idle"}  ))

    这个查询按实例和模式分组,聚合出非" idle "模式下的CPU使用率总和。

    总结

    从以上内容可以看出,Prometheus的PQL语言功能强大,适合进行基础监控和高级分析。熟练掌握PQL,可以显著提高监控数据的分析效率。建议从基础概念出发,逐步学习和实践PQL的高级功能,以充分发挥Prometheus的威力。

    转载地址:http://pvoaz.baihongyu.com/

    你可能感兴趣的文章
    输出对象的值——踩坑
    查看>>
    在苹果Mac上如何更改AirDrop名称?
    查看>>
    1110 Complete Binary Tree (25 point(s))
    查看>>
    541【毕设课设】基于单片机电阻电感电容RLC测量仪系统
    查看>>
    基于8086交通灯系统仿真设计(微机原理设计资料)
    查看>>
    解读域名管理之:域名注册机构介绍
    查看>>
    找中位数
    查看>>
    自动化测试——UI自动化测试的痛点
    查看>>
    如何将萌推商品主图、属性图、详情图批量保存到电脑的方法
    查看>>
    2021年N1叉车司机模拟考试及N1叉车司机考试软件
    查看>>
    【奇淫巧技】Java动态代理(JDK和cglib)
    查看>>
    2021-05-11 现代操作系统 《现代操作系统 第4版》第3章 内存管理——总结(分段,分页,段页)(转载)
    查看>>
    【Stimulsoft Reports.Net教程】使用DesignerFx
    查看>>
    攻防世界 Pwn 新手
    查看>>
    mybtis-plus 出现 Wrong namespace
    查看>>
    升级java11后,maven命令打包报错
    查看>>
    springboot redis key乱码
    查看>>
    Win10禁用自带的笔记本键盘
    查看>>
    写时复制集合 —— CopyOnWriteArrayList
    查看>>
    什么是redis的缓存雪崩, 穿透, 击穿?
    查看>>