PromQL语法 搭建监控系统十一(进阶篇)

PromQL 基本使用PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它。在页面 http://localhost:9090/graph 中,输入下面的查询语句,查看结果,例如:http_requests_total{code="200"}字符串和数字字符串: 在查询语句中,字符串往往作为查询条件 labels 的值,和 Gola
摘要由CSDN通过智能技术生成

PromQL 基本使用

  • PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它。

在页面 http://localhost:9090/graph 中,输入下面的查询语句,查看结果,例如:

http_requests_total{code="200"}

字符串和数字

  • 字符串: 在查询语句中,字符串往往作为查询条件 labels 的值,和 Golang 字符串语法一致,可以使用 “”, ‘’, 或者 `` , 格式如:
- "this is a string"
- 'these are unescaped: \n \\ \t'
- `these are not unescaped: \n ' " \t`

查询结果类型

PromQL 查询结果主要有 3 种类型:

  • 瞬时数据 (Instant vector): 包含一组时序,每个时序只有一个点,例如:http_requests_total
  • 区间数据 (Range vector): 包含一组时序,每个时序有多个点,例如:http_requests_total[5m]
  • 纯量数据 (Scalar): 纯量只有一个数字,没有时序,例如:count(http_requests_total)

查询条件

Prometheus 存储的是时序数据,而它的时序是由名字和一组标签构成的,其实名字也可以写出标签的形式,例如 http_requests_total 等价于 {name=“http_requests_total”}。

  • 一个简单的查询相当于是对各种标签的筛选,例如:
http_requests_total{code="200"}      # 表示查询名字为 http_requests_total,code 为 "200" 的数据
  • 查询条件支持正则匹配,例如:
http_requests_total{code!="200"}     # 表示查询 code 不为 "200" 的数据
http_requests_total{code=~"2.."}    # 表示查询 code 为 "2xx" 的数据
http_requests_total{code!~"2.."}    # 表示查询 code 不为 "2xx" 的数据

操作符

Prometheus 查询语句中,支持常见的各种表达式操作符,例如:

  • 算术运算符:
支持的算术运算符有 +,-,*,/,%,^, 例如 http_requests_total * 2 表示将 http_requests_total 所有数据 double 一倍。
  • 比较运算符:
支持的比较运算符有 ==,!=,>,<,>=,<=, 例如 http_requests_total > 100 表示 http_requests_total 结果中大于 100 的数据。
  • 逻辑运算符:
支持的逻辑运算符有 and,or,unless, 例如 http_requests_total == 5 or http_requests_total == 2 表示 http_requests_total 结果中等于 5 或者 2 的数据。
  • 聚合运算符:
支持的聚合运算符有 sum,min,max,avg,stddev,stdvar,count,count_values,bottomk,topk,quantile,, 例如 max(http_requests_total) 表示 http_requests_to
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PromQLPrometheus的查询语言,用于查询监控数据。以下是PromQL语法的大全: 1. 基本查询 - metric_name:指标名称,如node_cpu_seconds_total - time_range:时间范围,如5m、1h等 - 示例:metric_name{label_selector}[time_range] 2. 范围查询 - range vector selector:范围向量选择器,用于选择一段时间范围内的数据,如node_cpu_seconds_total{job="node-exporter"}[5m] - offset modifier:偏移量修饰符,用于从当前时间向前或向后偏移一段时间,如node_cpu_seconds_total{job="node-exporter"}[5m] offset 1h 3. 聚合查询 - sum():求和函数 - avg():求平均值函数 - max():求最大值函数 - min():求最小值函数 - count():统计样本数函数 - topk():取出前k个样本函数 - bottomk():取出后k个样本函数 - 示例:sum(metric_name{label_selector}) by (label_name) 4. 算术运算 - +:加法运算 - -:减法运算 - *:乘法运算 - /:除法运算 - %:取模运算 5. 逻辑运算 - and:逻辑与运算 - or:逻辑或运算 - unless:逻辑非运算 6. 布尔表达式 - ==:判断是否相等 - !=:判断是否不相等 - >、>=、<、<=:比较运算符 7. 函数操作符 - rate():计算速率函数 - irate():计算瞬时速率函数 - deriv():计算导数函数 - predict_linear():线性预测函数 - holt_winters():Holt-Winters函数 8. 子查询 - 子查询可以在大括号中嵌套另一个查询语句,如sum(rate(node_cpu_seconds_total{job="node-exporter"}[5m])) by (instance) 以上就是PromQL语法的大全,你可以根据需要选择相应的语法来进行查询。如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值