本文共 1658 字,大约阅读时间需要 5 分钟。
Prometheus是一种基于Go语言开发的开源监控工具,专注于基础监控,并默认保留15天的监控数据。这量级的数据足以支持运维人员进行日常排查和分析。Prometheus的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支持两种主要的指标类型:
标签用于唯一标识一个指标的具体信息,支持多个标签,且标签可以使用正则表达式进行匹配。例如:
node_cpu_seconds_total{mode="idle"iowait}
表示在"mode"和"iowait"标签下"node_cpu_seconds_total"指标的值。
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
比较两个指标的值是否满足条件。
数据集操作:支持and
、or
和unless
等逻辑运算符,用于联合查询。例如:
node_cpu_seconds_total and node_mem_bytes
获取同时满足两个指标的值。
PQL提供多种高级函数,用于数据分析和处理,包括:
sum
、min
、max
、avg
和count
,用于对数据进行汇总和统计。topk
和bottomk
,用于对指标值进行排序和筛选。abs
、absent
、ceil
、floor
等,提供数据变换和检测功能。通过实际案例来练习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/