赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 时序存储
  6. 最佳实践
  7. PromQL与SQL查询时序库常用案例

PromQL与SQL查询时序库常用案例

  • 最佳实践
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文介绍利用PromQL或SQL查询时序数据库的常见应用场景。

PromQL基础使用案例

查询单指标数据

process_resident_memory_bytes表示常驻内存,使用下面的PromQL可直接查看进程各时间的指标数据。

process_resident_memory_bytes

按Label筛选指标数据

PromQL语句支持在指标后面添加特定Label的筛选条件,以过滤出预期的指标数据,例如下面这个query筛选出了指定cluster下的数据。

process_resident_memory_bytes{cluster="sls-mall"}/1024/1024

Label筛选使用正则匹配

Label的筛选条件支持使用正则语法,例如下面的query筛选了cluster为sls-mall或者sls-demo的指标数据。

process_resident_memory_bytes{cluster=~"sls-mall|sls-demo"}

计算某指标各时间点最大值

查询各cluster中堆内存使用的最大值(max算子)。

max by (cluster) (go_memstats_heap_inuse_bytes) / 1024 / 1024

计算某指标时间线个数

查询某个指标的时间线条数(count算子)。

count(apiserver_request_total{cluster="sls-mall"})

计算指标随时间的变化率

rate函数用于计算指标在区间内的变化率,常用于计算CPU使用率。

rate(process_cpu_seconds_total[1m])

计算指标相较前n分钟的差值

查询指标各时刻相较于一分钟的增量值。

delta(go_goroutines[1m])

多算子、函数嵌套使用

多算子/函数嵌套查询,例如下面的例子首先计算各resource和cluster维度下的最大值,再取top3的数值。

topk(3, max by (cluster, resource)(apiserver_request_total))

多数值间计算

PromQL支持纯数值之间的计算,包括+、-、*、/、%等运算。

1 + 2

指标与数值间计算

PromQL支持指标与数值间计算,例如下面的query表示将内存指标的byte单位转换为MB。

process_resident_memory_bytes / 1024 / 1024

多指标间二元计算

PromQL支持在多指标间的计算,例如下面两个指标相除。

kube_daemonset_status_number_ready{job="kube-state-metrics"} 
/ 
kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"}

如何正确使用Subquery

rate、delta、increase、{agg}_over_time等函数仅支持在原指标上进行操作,不支持在算子或函数的结果集上进行计算,例如:

  • 支持以下形式。

    max_over_time(go_goroutines[1m]), 表示计算各时间线前一分钟指标内的最大值
  • 不支持以下形式。

    max_over_time(max(go_goroutines)[1m]), 此表达式意图先计算各时间线间的最大值,再从中选取前一分钟内的最大值。
  • 正确使用。

    # prometheus提供了Subquery以支持上述需求,PromQL语句需改成以下形式:
    max_over_time(max(go_goroutines)[1m:10s])
    # Subquery中[a:b]的两个参数分别表示range和step。

使用SQL查询时序库案例

查询指标下的所有原始数据

查询process_resident_memory_bytes指标在指定时间区间内的所有原始时序数据。(调试)

 *| SELECT * FROM "metrics_store_name.prom" WHERE __name__ = 'process_resident_memory_bytes'

查询指标中instance为待定值的原始数据

查询指定指标为process_resident_memory_bytes、instance为172.20.0.143:8084的所有指标数据。(调试)

*| SELECT * FROM "metrics_store_name.prom" WHERE __name__ = 'process_resident_memory_bytes' and element_at(__labels__, 'instance')='172.20.0.143:8084' limit all

使用SQL对时序数据做聚合计算创建定时SQL任务

将时间对齐到每分钟做一次MAX聚合计算,使用SQL计算不同instance下的指标最大值。(调试)

*| SELECT __time_nano__ FROM "metrics_store_name.prom" WHERE __name__ = 'process_resident_memory_bytes' and element_at(__labels__, 'instance')='x-abcd'
相关文章

使用Prometheus采集Kubernetes监控数据 2025-04-22 10:58

本文介绍如何在Kubernetes上部署Prometheus,将监控数据采集到日志服务MetricStore中,并将日志服务MetricStore对接到Grafana实现监控数据可视化展示。 前提条件 <

MetricStore HTTP API详情 2025-04-22 10:58

日志服务提供多个用于查询时序指标或写入指标数据到MetricStore的API,这些API兼容Prometheus开源协议。本文介绍这些API的使用详情。 概述 Prometheus所提供的接口都在/api/v1目录下,MetricStore相关的API同样遵循此规则,其完整的URL为https:/

函数计算场景中使用Prometheus SDK上报时序数据 2025-04-22 10:58

SLS SDK支持写入时序数据,但手动维护一系列自定义指标的方式较为繁琐。Prometheus能自动生成多种维度的监控指标并内置维护标签信息,然而,它通常要求对外暴露一个HTTP接口,通过第三方采集器以Pull模式拉取时序数据。在函数计算场景中,由于计算服务无法直接提供此类HTTP接口,无法通过前述

PromQL与SQL查询时序库常用案例 2025-04-22 10:58

本文介绍利用PromQL或SQL查询时序数据库的常见应用场景。 PromQL基础使用案例 查询单指标数据 process_resident_memory_bytes表示常驻内存,使用下面的PromQL可直接查看进程各时间的指标数据。

PromQL函数使用示例 2025-04-22 10:58

日志服务提供PromQL函数对时序库中的指标进行处理。本文介绍PromQL函数常用示例。 abs() abs()函数会计算时序数据中所有点的绝对值,使用方式如下。

为时序库创建告警 2025-04-22 10:58

日志服务支持PromQL、SQL以及PromQL+SQL三种时序数据查询与分析语法,允许您根据特定的查询需求设定告警规则,实现对关键指标的精准监控与即时告警通知。本文向您介绍为时序库创建告警规则的一些常见案例。 使用PromQL语句查询分析并创建告警 在时序库查询界面,参考下图,使用PromQL语法

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号