文章目录
Prometheus PromQL
- PromQL 是一种为时间序列数据设计的表达式语言,能够灵活地从监控指标数据中筛选、聚合、计算和提取信息。
PromQL 基本语法
-
指标名称和标签选择器:
- 指标名称指向特定类型的数据,标签选择器用于筛选符合条件的数据子集。
- 示例:
prometheus_http_requests_total{code="200", handler="/targets"}
获取状态码为 200 且访问/targets
的 HTTP 请求总数。
-
时间范围选择:
- 通过指定时间范围(如
5m
表示过去 5 分钟)获取特定时间段内的数据。
- 通过指定时间范围(如
-
函数和操作符:
- 提供丰富的函数(如
sum()
、avg()
、rate()
等)和操作符(如+
、-
、*
、/
)用于数据聚合和计算。
- 提供丰富的函数(如
数据类型与指标
- 瞬时向量(Instant Vector):特定时间点上的一组数据样本。
- 区间向量(Range Vector):一段时间范围内的数据样本。
- 标量(Scalar):单个数值,通常作为函数计算结果返回。
样本数据格式
- 每个时间序列数据样本由两部分组成:
- 毫秒精度的时间戳
- 浮点型的样本值
- 示例:
prometheus_http_requests_total{code="200", handler="/targets"} @1434317560885 28
时间序列操作
-
瞬时向量选择器(Instant Vector Selectors):
- 返回特定时间点上的样本数据。
- 示例:
prometheus_http_requests_total{code="200", handler="/targets"}
-
区间向量选择器(Range Vector Selectors):
- 返回一段时间范围内的样本数据。
- 示例:
prometheus_http_requests_total[5m]
-
偏移向量选择器:
- 调整基准时间,使其往前偏移一段时间。
- 示例:
prometheus_http_requests_total offset 5m
PromQL 的指标类型
-
Counter:单调递增的计数器,适用于请求数、错误数等。
- 常用函数:
rate()
、irate()
、increase()
- 常用函数:
-
Gauge:可增可减的仪表盘,适用于内存使用率、CPU 使用率等。
- 常用函数:
delta()
、predict_linear()
- 常用函数:
-
Histogram:累积直方图,用于分析数据分布。
- 常用函数:
histogram_quantile()
- 常用函数:
-
Summary:直接存储百分位数的摘要,适用于延迟时间、响应大小等。
聚合操作
-
内置聚合函数:
sum()
、min()
、max()
、avg()
、<