Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

prometheusQuery

使用 TimeSeries 表中的数据计算 Prometheus 查询结果。

语法

prometheusQuery('db_name', 'time_series_table', 'promql_query', evaluation_time)
prometheusQuery(db_name.time_series_table, 'promql_query', evaluation_time)
prometheusQuery('time_series_table', 'promql_query', evaluation_time)

参数

  • db_name - TimeSeries 表所在的数据库名称。
  • time_series_table - TimeSeries 表的名称。
  • promql_query - 使用 PromQL 语法 编写的查询。
  • evaluation_time - 求值时间戳。要在当前时间对查询进行求值,请使用 now()作为evaluation_time`。

返回值

该函数会根据传给参数 promql_query 的查询结果类型,返回不同的列:

结果类型 结果列 示例
vector tags Array(Tuple(String, String)), timestamp TimestampType, value ValueType prometheusQuery(mytable, 'up')
matrix tags Array(Tuple(String, String)), time_series Array(Tuple(TimestampType, ValueType)) prometheusQuery(mytable, 'up[1m]')
scalar scalar ValueType prometheusQuery(mytable, '1h30m')
string string String prometheusQuery(mytable, '"abc"')

支持的 PromQL 特性

选择器

即时选择器、范围选择器、标签匹配器 (=、!=、=~、!~) 、偏移修饰符、@ 时间戳修饰符以及子查询。

函数

类别 函数
范围 rate, irate, delta, idelta, increase, last_over_time, deriv, changes, resets
数学 abs, sgn, floor, ceil, sqrt, exp, ln, log2, log10, rad, deg, round, clamp, clamp_min, clamp_max
三角 sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh
日期时间 day_of_week, day_of_month, days_in_month, day_of_year, minute, hour, month, year
标签 label_replace, label_join
类型 scalar, vector
直方图 histogram_quantile
其他 time, pi

注意:histogram_quantile 在经典直方图桶 (由 le 标签标识) 上使用线性插值。原生直方图不受支持。phi (分位数级别) 参数必须是常量标量。像 histogram_quantile(time() / 1000, ...) 这样每个时间步都会变化的表达式会因 NOT_IMPLEMENTED 异常而被拒绝。

运算符

算术 (+、-、*、/、%、^、atan2) 和比较 (==、!=、<、>、<=、>=,可选 bool) 二元运算符,以及 on()/ignoring() 和 group_left()/group_right() 修饰符。

逻辑集合运算符 and、or 和 unless,以及 on()/ignoring() 修饰符。

一元运算符 + 和 -。

聚合运算符

sum、avg、min、max、count、stddev、stdvar、group、quantile、topk、bottomk、limitk —— 可选使用 by() 或 without() 修饰符。

尚未支持

  • 聚合运算符 count_values
  • 范围函数 predict_linear、avg_over_time、min_over_time、max_over_time、sum_over_time、count_over_time、quantile_over_time、stddev_over_time、stdvar_over_time、present_over_time、absent_over_time、mad_over_time、first_over_time、ts_of_min_over_time、ts_of_max_over_time、ts_of_last_over_time、ts_of_first_over_time
  • 函数 absent

示例

SELECT * FROM prometheusQuery(mytable, 'rate(http_requests{job="prometheus"}[10m])[1h:10m]', now())
Navigation