promql学习总结

一、promql是什么?

promql是prometheus的查询语法,在这里简单描述下自己用过的语句语法。

二、语法实践

概念对比

名词prometheusmysql
表格metricstable
字段labelName【标签】field
labelValuevalue

操作实践

1. 查询表所有数据

sql:
select * from action_statistics
prometheus:
action_statistics

2. 条件查询

操作符作用
=选择与提供的字符串完全相等的标签。
!=选择不等于提供的字符串的标签。
=~选择与提供的字符串进行正则表达式匹配的标签。
!~选择与提供的字符串不匹配的标签。
==值等于
!=值不等于
‘>’值大于
<值小于
‘>=’值大于或等于
<=值小于或等于
标签等于用法

查询张三看了哪些活动,时间点与次数。
sql:
select * from action_statistics where user_name='张三' and action_type='查看活动'
prometheus:
action_statistics{user_name='张三',action_type='查看活动'}

标签正则表达式用法

查询姓张的看了哪些活动,时间点与次数。
sql:
select * from action_statistics where user_name like '张%' and action_type='查看活动'
prometheus:
action_statistics{user_name=~'张.*',action_type='查看活动'}

查询时的and与or

查询姓张或者姓李的用户
sql:
select * from user where user_name like '张%' or user_name like '李%'
prometheus:
user{user_name=~'张.*'} or user{user_name=~'李.*'}

查询距现在某时长内增加数量

查询1天内开业活动页面有哪些人点击
action_statistics{action_type="查看活动",action_context="开业活动"}[1d]

[1d] 表示一天内,下面是支持的单位,但是该用法不支持用来统计数量
ms- 毫秒
s- 秒
m- 分钟
h- 小时
d- 天 - 假设一天总是24h
w- 周 - 假设一周总是7d
y- 年 - 假设一年总是365d

查询10分钟前的1天内开业活动页面有哪些人点击
action_statistics{action_type="查看活动",action_context="开业活动"}[1d] offset 10m

offset 将时间点往前偏移一段时间

查询范围的值

查询查看活动大于10次的用户
sql:
select sum(action_num) num,user_name from action_statistics where action_type='查看活动' group by action_user_id having num>10
prometheus:
sum(action_statistics{action_type='查看活动'}) by (action_user_id) >10

sum:将值累加
by:同步标签进行分组
count:统计数量

查询某个时间段的增长值

查询查看活动功能6月11号,不同用户使用过了多少次,并且降序排序,取前10个用户
sql:
select sum(action_num) num from action_statistics where action_type='查看活动' and time between 1654876800 and 1654963199 group by action_user_id order by num desc limit 10
prometheus:
topk(10,sort_desc(sum(action_statistics {action_type='查看活动"} @1654963199) by (action_user_id) -sum(action_statistics {action_type="查看活动"} @1654876800) by (action_user_id)))

topk:取前几位
sort_desc:降序排序
sort:升序排序
@:指定某个时间点  promehteus是将值一直累加的,所以需要将结束时间点的值减去开始时间点的值 得出时间段内的值

prometheus支持的聚合函数列表
sum(计算尺寸总和)
min(选择最小尺寸)
max(选择最大尺寸)
avg(计算尺寸的平均值)
group(结果向量中的所有值均为 1)
stddev(计算尺寸上的总体标准差)
stdvar(计算维度上的总体标准方差)
count(计算矢量中的元素数)
count_values(计算具有相同值的元素数)
bottomk(按样本值计算的最小 k 个元素)
topk(按样本值计算的最大 k 个元素)
quantile(计算φ分位数 (0 ≤ φ ≤ 1)

官方文档:链接

总结

目前有用过的查询语句就这些了,基本上够用了,其他的高级用法后续用到再总结。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值