Выполняет Prometheus-запрос по данным из таблицы TimeSeries.
Синтаксис
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
Селекторы
Мгновенные селекторы, селекторы диапазона, сопоставители меток (=, !=, =~, !~), модификаторы offset, модификаторы временной метки @ и подзапросы.
Функции
| Категория | Функции |
|---|---|
| Диапазон | 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 |
Note: 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())