Функции для работы с метриками
Агрегационные функции
| Функция в запросе | Функция в интерфейсе | Подсказка/Описание | Значение по умолчанию | Дополнительные параметры | Пример |
|---|---|---|---|---|---|
| avg | Avg | Вычисляет среднее арифметическое значение метрики в каждый момент времени | - | - | avg(<expr>) |
| count | Count | Подсчитывает количество временных рядов, имеющих непустое значение в каждый момент времени | - | - | count(<expr>) |
| group | Group | Возвращает 1 для каждой группы, содержащей хотя бы одно непустое значение в каждый момент времени | - | - | group(<expr>) |
| max | Max | Вычисляет максимальное значение среди всех временных рядов в каждый момент времени | - | - | max(<expr>) |
| min | Min | Вычисляет минимальное значение среди всех временных рядов в каждый момент времени | - | - | max(<expr>) |
| sum | Sum | Вычисляет накопленную сумму значений метрики в каждый момент времени | - | - | sum(<expr>) |
| bottomk | Bottomk | Возвращает k наименьших значений из всех временных рядов | 1 | k (обязательный) — количество временных рядов с наибольшими/наименьшими значениями | bottomk(1, <expr>) |
| topk | Topk | Возвращает k наибольших значений из всех временных рядов | 1 | k (обязательный) — количество временных рядов с наибольшими/наименьшими значениями | topk(1, <expr>) |
| count_values | Count values | Подсчитывает количество временных рядов, которые в заданный момент времени имеют указанное значение | "count" | output_label (необязательный) — имя новой метки для значения счётчика. Может быть пустым | count_values("count", <expr>) |
| quantile | Quantile | Вычисляет значение, ниже которого лежит определенный процент всех данных (указанный квантиль) по всем временным рядам в заданный момент времени | 1 (максимум) | q (обязательный) — квантиль в диапазоне 0 ≤ q ≤ 1 | quantile(1, <expr>) |
Агрегационные функции: общие параметры
Для функций avg, min, max, count, group, topk, bottomk, quantile и count_values поддерживаются следующие параметры агрегации по меткам:
| Параметр | Описание |
|---|---|
| Режим агрегации | По умолчанию без учета меток. С учетом только выбранных и с исключением выбранных меток |
| Выбор меток | Множественный выбор из списка меток соответствующей метрики.Ууказание пользовательского имени метки |
| Режим агрегации | Поддерживается (например, по двум меткам одновременно) |
Диапазоны
| Функция в запросе | Функция в интерфейсе | Подсказка/Описание | Пример |
|---|---|---|---|
| rate | Rate | Вычисляет среднюю скорость прироста метрики типа counter (счетчика) за указанный диапазон времени. Она автоматически обрабатывает сбросы счетчика и экстраполяцию, делая расчёты устойчивыми. Результат возвращается в единицах "значение в секунду" | rate(<expr>[$__rate_interval]) |
| increase | Increase | Вычисляет абсолютный прирост значения метрики типа counter (счетчика) за указанный диапазон времени. Она специально предназначена для счетчиков, корректно обрабатывая их сбросы. Результат показывает, на сколько именно увеличилось значение за период | increase(<expr>[$__rate_interval]) |
| changes | Changes | Вычисляет количество изменений значения метрики за указанный промежуток времени | changes(<expr>[$__interval]) |
| irate | Irate | Вычисляет мгновенную скорость роста по последним двум точкам в диапазоне | irate(<expr>[$__interval]) |
| idelta | Idelta | Вычисляет разницу между двумя последними значениями метрики в диапазоне | idelta(<expr>[$__interval]) |
| delta | Delta | Вычисляет разницу между первым и последним значением метрики за указанный промежуток времени | delta(<expr>[$__interval]) |
| double_exponential_smoothing/holt_winters | Double exponential smoothing/Holt winters | Вычисляет сглаженное значение для временных рядов на основе диапазона. Чем ниже коэффициент сглаживания, тем большее значение придается старым данным. Чем выше коэффициент тренда, тем больше трендов учитывается в данных. Коэффициент сглаживания и коэффициент тренда должны быть в диапазоне от 0 до 1 | - |
| predict_linear | Predict linear | Прогнозирует будущее значение временного ряда через t секунд на основе линейной регрессии за указанный период | predict_linear(<expr>[$__interval], 60) |
| quantile_over_time | Quantile over time | Вычисляет φ-квантиль ((0 ≤ φ ≤ 1)) значений метрики за указанный промежуток времени | quantile_over_time(0.5, <expr>[$__interval]) |
| deriv | Deriv | Вычисляет мгновенную скорость изменения метрики (производную) за заданный диапазон времени на основе линейной регрессии, возвращая результат в единицах изменения метрики в секунду | deriv(<expr>[$__interval]) |
| resets | Resets | Для каждого временного ряда функция возвращает количество сбросов счетчика в указанном временном диапазоне в виде вектора. Любое уменьшение значения между двумя последовательными выборками интерпретируется как сброс счетчика | resets(<expr>[$__interval]) |
| avg_over_time | Avg over time | Вычисляет среднее значение всех точек в указанном интервале для каждого временного ряда | avg_over_time(<expr>[$__interval]) |
| min_over_time | Min over time | Вычисляет минимальное значение среди всех точек в указанном интервале для каждого временного ряда | min_over_time(<expr>[$__interval]) |
| max_over_time | Max over time | Вычисляет максимальное значение среди всех точек в указанном интервале для каждого временного ряда | max_over_time(<expr>[$__interval]) |
| sum_over_time | Sum over time | Вычисляет суммарное значение всех точек в указанном интервале для каждого временного ряда | sum_over_time(<expr>[$__interval]) |
| count_over_time | Count over time | Вычисляет количество всех значений в указанном интервале для каждого временного ряда | count_over_time(<expr>[$__interval]) |
| last_over_time | Last over time | Возвращает последнее значение точки за указанный интервал для каждого временного ряда | last_over_time(<expr>[$__interval]) |
| present_over_time | Present over time | Определяет наличие точек временного ряда в указанном временном интервале. Возвращает 1 для временных рядов, которые имеют хотя бы одно значение в заданном диапазоне времени | present_over_time(<expr>[$__interval]) |
| absent_over_time | Absent over time | Возвращает пустой вектор, если временной ряд имеет данные в заданном диапазоне, и единичный вектор (или вектор из 1 элемента со значением 1), если временной ряд не содержит элементов в заданном диапазоне | absent_over_time(<expr>[$__interval]) |
| stddev_over_time | Stddev over time | Вычисляет стандартное отклонение значений метрики в указанном интервале | stddev_over_time(<expr>[$__interval]) |
Параметр диапазона (Range)
Параметр Range - временной диапазон для функций. Обязателен, при явном указании, не может быть пустым. Значение по умолчанию — $_interval (интервал шага запроса).
Доступные предустановленные диапазоны:
1m, 5m, 1h, 24h, $_interval
Можно выбрать один из списка или ввести произвольный в формате число + m/h/d.
Доступен выбор одного диапазона из списка или задание вручную. Расчет:
rate(metric[interval]) = (value_last - value_first) / (time_last - time_first)increase(metric[interval]) = (value_last - value_first)irate(metric[interval]) = (value_last - value_prev) / (time_last - time_prev)idelta(metric[interval]) = value_last — value_prevdelta(metric[interval]) = value_last — value_first
Анализ
| Функция в запросе | Функция в интерфейсе | Подсказка/Описание | Пример |
|---|---|---|---|
| histogram_quantile | Histogram quantile | Вычисляет φ-квантиль (0 ≤ φ ≤ 1) из данных гистограммы, используя её заранее настроенные интервалы. Она анализирует временные ряды с суффиксом _bucket, где каждый ряд соответствует одному интервалу и имеет метку, которая обозначает верхнюю границу («меньше или равно») этого интервала. Для корректного расчёта функция требует предварительного преобразования сырых счётчиков в скорость (например, с помощью rate()), чтобы получить актуальное распределение наблюдений за окно времени | histogram_quantile(0.9, <expr>) |
| histogram_avg | Histogram avg | Возвращает среднее арифметическое значений из исходной гистограммы. Выборки, которые не являются исходными гистограммами, игнорируются и не отображаются в возвращаемом векторе | histogram_avg(<expr>) |
| histogram_count | Histogram count | Возвращает общее количество наблюдений в гистограмме за указанный период | histogram_count(<expr>) |
| histogram_sum | Histogram sum | Возвращает сумму всех наблюдений в гистограмме за указанный период | histogram_sum(<expr>) |
| histogram_stddev | Histogram stddev | Возвращает стандартное отклонение наблюдений в гистограмме, основанное на среднем геометрическом значении групп, в которых находятся наблюдения | histogram_stddev(<expr>) |
| histogram_stdvar | Histogram stdvar | Возвращает дисперсию наблюдений в виде гистограммы | histogram_stdvar(<expr>) |
| label_replace | Label replace | Для каждого временного ряда функция сопоставляет регулярное выражение regex с меткой src_label. Если оно совпадает, то временные ряды возвращаются с меткой dst_label, замененной расширением replacement. $1 заменяется на первую соответствующую подгруппу, $2 - на вторую и т.д. Если регулярное выражение не совпадает, то временные ряды возвращаются без изменений | label_replace(<expr>, "", "$1", "", "(.*)") |
| ln | Ln | Вычисляет натуральный логарифм для всех элементов вектора. Особыми случаями являются: ln(+Inf) = +Inf; ln(0) = -Inf; ln(x<0) = Nan; ln(Nan) = Nan | ln(<expr>) |
| abs | Abs | Возвращает вектор со всеми выборочными значениями, преобразованными в их абсолютное значение | abs(<expr>) |
| absent | Absent | Возвращает пустой вектор, если переданный вектор имеет какие-либо элементы, иначе возвращает 1. Полезно для проверки существования метрики в момент времени | absent(<expr>) |
| ceil | Ceil | Округляет выборочные значения всех элементов вектора до ближайшего большего целого числа | ceil(<expr>) |
| clamp | Clamp | Ограничивает значения вектора заданным диапазоном, заменяя значения меньше Minimum scalar на Minimum scalar, а значения больше Maximum scalar на Maximum scalar | clamp(<expr>, 1, 1) |
| clamp_max | Clamp max | Устанавливает верхний предел для всех значений вектора, заменяя те, которые больше Maximum scalar, на значение Maximum scalar | clamp_max(<expr>, 1) |
| clamp_min | Clamp min | Устанавливает нижний предел для всех значений вектора, заменяя те, которые меньше Minimum scalar, на значение Minimum scalar | clamp_min(<expr>, 1) |
| deg | Deg | Преобразует радианы в градусы для всех элементов вектора | deg(<expr>) |
| exp | Exp | Вычисляет экспоненциальную функцию для всех элементов вектора. Особыми случаями являются: Exp(+Inf)=+Inf; Exp(Nan)=Nan | exp(<expr>) |
| floor | Floor | Округляет значения всех элементов вектора до ближайшего меньшего целого числа | floor(<expr>) |
| hour | Hour | Возвращает час суток для каждого из заданных значений времени в UTC. Возвращаемые значения - от 0 до 23 | hour(<expr>) |
| label_join | Label join | Для каждого временного ряда функция объединяет значения всех указанных исходных меток (src_labels) через разделитель и возвращает временной ряд с новой меткой dst_label, содержащей полученное объединённое значение. В этой функции может быть любое количество исходных меток | label_join(<expr>, "", ",", "") |
| log10 | Log10 | Возвращает логарифм по основанию 10 для всех элементов вектора | log10(<expr>) |
| log2 | Log2 | Возвращает логарифм по основанию 2 для всех элементов вектора | log2(<expr>) |
| minute | Minute | Возвращает минуту часа для каждого из заданных значений времени в UTC. Возвращаемые значения - от 0 до 59 | minute(<expr>) |
| month | Month | Возвращает номер месяца (от 1 до 12) для каждого из заданных моментов времени в UTC. 1 соответствует январю, 2 — февралю, …, 12 — декабрю. | month(<expr>) |
| pi | Pi | Возвращает математическую константу π (пи) (3.14159…) | pi() |
| rad | Rad | Преобразует градусы в радианы для всех элементов вектора | rad(<expr>) |
| round | Round | Округляет значения элементов вектора, используя стандартные правила математического округления. По умолчанию округление производится до ближайшего целого числа. Необязательный аргумент to_nearest позволяет задать шаг (кратность), до которого следует округлять значения. | round(<expr>, 1) |
| scalar | Scalar | Преобразует вектор с одним элементом в скаляр, удаляя все его метки, для использования в операциях, требующих обычного числа (не вектора). Если входной вектор не содержит ровно одного элемента, функция scalar возвращает NaN | scalar(<expr>) |
| sgn | Sgn | Возвращает вектор с каждым из значений, преобразованным в его знак: 1 для положительных, -1 для отрицательных и 0 для нуля. | sgn(<expr>) |
| sort | Sort | Возвращает элементы временного ряда, отсортированные по значениям в порядке убывания | sort_desc(<expr>) |
| sqrt | Sqrt | Вычисляет квадратный корень для каждого элемента временного ряда | sqrt(<expr>) |
| stddev | Stddev | Вычисляет популяционное отклонение значений среди всех временных рядов в заданный момент времени | stddev(<expr>) |
| time | Time | Возвращает количество секунд, прошедших с 1 января 1970 года (UTC). Функция возвращает время, в которое должно быть вычислено выражение | time() |
| timestamp | Timestamp | Возвращает для каждой точки данных временного ряда её метку времени — количество секунд, прошедших с 1 января 1970 года (UTC) | timestamp(<expr>) |
| vector | Vector | Преобразует скаляр в одноэлементный мгновенный вектор без меток | vector(1) |
| year | Year | Возвращает год для каждого из заданных значений времени в UTC | year(<expr>) |
histogram_quantile
Вычисляет квантиль (процентиль) из гистограммы по bucket-метрикам.
Синтаксис: histogram_quantile(<квантиль>, <выражение_с_bucket>)
Параметр квантиль обязательный и ипринимает значения от 0.0 до 1.0. Доступные значения (выбор одного): 0.25, 0.5, 0.75, 0.9 (по умолчанию), 0.95, 0.99
Требования к входным данным:
- метрики должны иметь суффикс
_bucketи меткуle(верхняя граница бакета) - второй аргумент — обычно
rate()илиirate()от bucket-метрик
Пример: histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[$__interval])) → 0.234 (означает: 90% запросов выполняются быстрее 0.234 секунд).
histogram_avg
Вычисляет среднее значение из гистограммы на основе bucket-метрик.
Синтаксис: histogram_avg(<выражение_с_bucket>)
Параметр histogram_avg - это выражение, возвращающее bucket-метрики (обычно с rate() или irate())
Требования к входным данным:
- метрики должны иметь суффикс
_bucketи меткуle(верхняя граница бакета) - второй аргумент — обычно
rate()илиirate()от bucket-метрик
Пример: histogram_avg(rate(http_request_duration_seconds_bucket[5m])) → среднее время запроса за последние 5 минут.
histogram_stddev
Вычисляет стандартное отклонение наблюдений из гистограммы на основе bucket-метрик.
Синтаксис: histogram_stddev(<выражение_с_bucket>)
Параметр histogram_stddev - это выражение, возвращающее bucket-метрики (обычно с rate() или irate())
Требования к входным данным:
- метрики должны иметь суффикс
_bucketи меткуle(верхняя граница бакета)
Пример: histogram_stddev(rate(http_request_duration_seconds_bucket[5m])) → стандартное отклонение времени запроса за последние 5 минут.
histogram_stdvar
Вычисляет дисперсию наблюдений из гистограммы на основе bucket-метрик.
Синтаксис: histogram_stdvar(<выражение_с_bucket>)
Параметр histogram_stdvar - это выражение, возвращающее bucket-метрики (обычно с rate() или irate())
Требования к входным данным:
- Метрики должны иметь суффикс
_bucketи меткуle(верхняя граница бакета)
Пример: histogram_stdvar(rate(http_request_duration_seconds_bucket[5m])) → дисперсия времени запроса за последние 5 минут.
label_replace
Создаёт новую метку, извлекая часть значения существующей метки через регулярное выражение.
Синтаксис: label_replace(<expr>, "<новая_метка>", "<замена>", "<исходная_метка>", "<регулярное_выражение>")
Параметры:
новая_метка(необязательный) — имя создаваемой метки. Выбор из существующих или ручной вводзамена(по умолч.$1) — строка с группами захвата ($1,$2…)исходная_метка(необязательный, можно несколько) — метка, из которой извлекается значение (несуществующая игнорируется)регулярное_выражение(по умолч.(.*)) — шаблон для извлечения
Пример: label_replace(metric{instance="server-01.prod.example.com:9100"}, "hostname", "$1", "instance", "([a-zA-Z0-9-]+)\\..*") → metric{instance="...", hostname="server-01"}
clamp, clamp_min, clamp_max
Ограничивают значения вектора сверху, снизу или с обеих сторон.
Синтаксис:
clamp(<expr>, <min>, <max>)clamp_max(<expr>, <max>)clamp_min(<expr>, <min>)
Параметры:
min(обязательный, по умолч.1) — нижняя границаmax(обязательный, по умолч.1) — верхняя граница- для
clamp:min<max
Примеры:
clamp(metric, 0, 100)→ значения ограничены от 0 до 100clamp_max(metric, 100)→ значения > 100 становятся 100clamp_min(metric, 0)→ значения < 0 становятся 0
label_join
Объединяет значения нескольких существующих меток в одну новую метку через указанный разделитель.
Синтаксис: label_join(<expr>, "<новая_метка>", "<разделитель>", "<исходная_метка1>", "<исходная_метка2>", ...)
Параметры:
новая_метка(необязательный) — имя создаваемой меткиразделитель(по умолч.",") — строка между значениямиисходная_метка1,исходная_метка2, … — метки, значения которых объединяются (можно несколько, несуществующие игнорируются)
Пример: label_join(metric{job="api",env="production",instance="10.0.0.1:9090"}, "full_name", "/", "job", "env", "instance") → metric{..., full_name="api/production/10.0.0.1:9090"}
round, vector
round — округляет значения вектора до ближайшего числа, кратного заданному шагу. vector — создаёт вектор-константу (скаляр) из одного числового значения.
Синтаксис:
round(<expr>, <кратно>)vector(<значение>)
Параметры:
- round:
- кратно (необязательный, по умолч. 1) — шаг округления (любое положительное число)
- vector:
- значение (обязательный, по умолч. 1) — числовое значение для создания вектора
Пример: label_join(metric{job="api",env="production",instance="10.0.0.1:9090"}, "full_name", "/", "job", "env", "instance") → metric{..., full_name="api/production/10.0.0.1:9090"}
Бинарные операции
| Функция в запросе | Функция в интерфейсе | Подсказка/Описание | Пример |
|---|---|---|---|
+ | Add scalar | Прибавляет скаляр к каждому элементу вектора | <expr> + 2 |
- | Subtract scalar | Вычитает скаляр из каждого элемента вектора | <expr> - 2 |
* | Multiply by scalar | Умножает скаляр на каждый элемент вектора | <expr> * 2 |
/ | Divide by scalar | Делит каждое значение вектора на скаляр | <expr> / 2 |
% | Modulo by scalar | Вычисляет остаток от деления каждого элемента вектора на скаляр | <expr> % 2 |
^ | Exponent | Возводит каждый элемент вектора в степень, указанную скаляром | <expr> ^ 2 |
== | Equal to | Возвращает элементы вектора, значение которых равно скаляру. В режиме булевого сравнения возвращает для каждого элемента 1, если элемент равен скаляру, и 0 в противном случае | <expr> == 2, <expr> == bool 2 |
!= | Not equal to | Возвращает элементы вектора, значение которых не равно скаляру. В режиме булевого сравнения возвращает для каждого элемента 1, если элемент равен скаляру, и 0 в противном случае | <expr> != 2, <expr> != bool 2 |
> | Greater than | Возвращает элементы вектора, значение которых больше скаляра. В режиме булевого сравнения возвращает для каждого элемента 1, если элемент равен скаляру, и 0 в противном случае | <expr> > 2, <expr> > bool 2 |
< | Less than | Возвращает элементы вектора, значение которых меньше скаляра. В режиме булевого сравнения возвращает для каждого элемента 1, если элемент равен скаляру, и 0 в противном случае | <expr> < 2, <expr> < bool 2 |
>= | Greater or equal to | Возвращает элементы вектора, значение которых больше или равно скаляру. В режиме булевого сравнения возвращает для каждого элемента 1, если элемент равен скаляру, и 0 в противном случае | <expr> >= 2, <expr> >= bool 2 |
<= | Less or equal to | Возвращает только те элементы вектора, значение которых меньше или равно скаляру. В режиме булевого сравнения возвращает для каждого элемента 1, если элемент равен скаляру, и 0 в противном случае | <expr> <= 2, <expr> <= bool 2 |
- | Binary operation with query | Выполнение бинарных операций между двумя векторами при помощи сопоставления элементов по совпадающим наборам меток и применения оператора к каждой соответствующей паре | - |
+ Сложение со скаляром
Прибавляет скаляр к каждому элементу вектора.
Синтаксис: <expr> + <значение>
Параметры: значение (обязательный, по умолч. 2) — любое число.
Пример: metric + 2 → каждый элемент увеличивается на 2
== Равенство
Сравнивает каждый элемент вектора со скаляром (или два вектора поэлементно). Результат — фильтрация (оставляются только равные элементы) или булевы значения в зависимости от флага bool.
Синтаксис: <expr> == <значение> или с флагом: <expr> == bool <значение>
Параметры:
значение(обязательный, по умолч.2) — число для сравненияbool(необязательный, по умолч.0) — если1, возвращает1(истина) или0(ложь) вместо фильтрации
Примеры:
metric == 2→ оставляет только элементы, равные 2 (фильтрация)metric == bool 2→ возвращает1для равных,0для неравных (без фильтрации)
Тригонометрические функции
| Функция в запросе | Функция в интерфейсе | Подсказка/Описание | Пример |
|---|---|---|---|
| acos | Acos | Вычисляет арккосинус всех элементов вектора | acos(<expr>) |
| acosh | Acosh | Вычисляет обратный гиперболический косинус всех элементов вектора | acosh(<expr>) |
| asin | Asin | Вычисляет арксинус всех элементов вектора | asin(<expr>) |
| asinh | Asinh | Вычисляет обратный гиперболический синус всех элементов вектора | asinh(<expr>) |
| atan | Atan | Вычисляет арктангенс всех элементов вектора | atan(<expr>) |
| atanh | Atanh | Вычисляет обратный гиперболический тангенс всех элементов вектора | atanh(<expr>) |
| cos | Cos | Вычисляет косинус всех элементов вектора | cos(<expr>) |
| cosh | Cosh | Вычисляет гиперболический косинус всех элементов вектора | cosh(<expr>) |
| sin | Sin | Вычисляет синус всех элементов вектора | sin(<expr>) |
| sinh | Sin | Вычисляет синус всех элементов вектора | sin(<expr>) |
| tan | Tan | Вычисляет тангенс всех элементов вектора | tan(<expr>) |
| tanh | Tanh | Вычисляет гиперболический тангенс всех элементов вектора | tanh(<expr>) |
Функции времени
| Функция в запросе | Функция в интерфейсе | Подсказка/Описание | Пример |
|---|---|---|---|
| day_of_month | Day of month | Возвращает день месяца (число от 1 до 31) для каждого из указанных моментов времени, интерпретируя их в UTC | day_of_month(<expr>) |
| day_of_week | Day of week | Возвращает день недели (число от 0 до 6, где 0 - воскресенье) для каждого из указанных моментов времени, интерпретируя их в UTC | day_of_week(<expr>) |
| day_of_year | Day of year | Возвращает день года (число от 1 до 365 для невисокосного года и от 1 до 366 для високосного года) для каждого из указанных моментов времени, интерпретируя их в UTC | day_of_year(<expr>) |
| days_in_month | Day in month | Возвращает количество дней в месяце (число от 28 до 31) для каждого из указанных моментов времени, интерпретируя их в UTC | days_in_month(<expr>) |
Операции над временными рядами (при выборе Binary operation with query)
Арифметические операции между векторами
| Оператор | Описание | Пример для двух временных рядов | Результат |
|---|---|---|---|
+ | Поэлементное сложение | Ряд A: [10, 20, 30]; Ряд B: [5, 10, 15]. Запрос: A + B | [15, 30, 45] |
- | Расчет дельт между рядами | Ряд A: [100, 90, 80]; Ряд B: [95, 100, 70]. Запрос: A - B | [5, -10, 10] |
* | Поэлементное умножение | Ряд A: [50, 60, 70]; Ряд B: [2, 1.5, 1]. Запрос: A * B | [100, 90, 70] |
/ | Расчет соотношения (B ≠ 0) | Ряд A: [30, 50, 70]; Ряд B: [40, 40, 60]. Запрос: A / B | [0.75, 1.25, 1.17] |
% | Вычисление остатка от деления | Ряд A: [9, 10, 11]; Ряд B: [5, 5, 5]. Запрос: A % B | [4, 0, 1] |
^ | Возведение в степень | Ряд A: [2, 3, 4]; Ряд B: [0, 1, 2]. Запрос: A ^ B | [1, 3, 16] |
Операторы сравнения
| Оператор | Описание | Пример для двух временных рядов | Результат |
|---|---|---|---|
== | Поэлементное сравнение на равенство. true, если значения равны, иначе false | Ряд A: [10, 20, 30]; Ряд B: [10, 25, 30]. Запрос: A == B | [10, 30] |
!= | Поэлементное сравнение на неравенство. true, если значения не равны, иначе false | Ряд A: [10, 20, 30]; Ряд B: [10, 25, 30]. Запрос: A != B | [20] |
> | Поэлементное сравнение «больше». true, если значение A строго больше значения B, иначе false | Ряд A: [50, 60, 70]; Ряд B: [2, 1.5, 1]. Запрос: A * B | [100, 90, 70] |
>= | Поэлементное сравнение «больше или равно». true, если значение A больше или равно значению B, иначе false | Ряд A: [100, 100, 100]; Ряд B: [95, 100, 105]. Запрос: A >= B | [100, 100] |
< | Поэлементное сравнение «меньше». true, если значение A строго меньше значения B, иначе false | Ряд A: [50, 60, 70]; Ряд B: [45, 55, 65]. Запрос: A < B | [] |
<= | Поэлементное сравнение «меньше или равно». true, если значение A меньше или равно значению B, иначе false | Ряд A: [10, 20, 30]; Ряд B: [15, 20, 25]. Запрос: A <= B | [10, 20] |
Операторы сравнения для метрик и значений в конструкторе
| Название оператора | Обозначение оператора | Пример | Результат |
|---|---|---|---|
| Равно (по умолчанию) | = | job="api-server" | Выбирает все временные ряды, у которых метка job имеет точное значение "api-server" |
| Не равно | != | status!="200" | Выбирает все ряды, у которых метка status имеет любое значение, кроме "200". Не выбирает ряды, у которых отсутствует указанная метка |
| Содержит | =~ | instance=~"web" | Выбирает ряды, у которых значение метки соответствует regex (web) |
| Не содержит | !~ | pod!~"test" | Выбирает ряды, у которых значение метки НЕ соответствует regex (test) |
Основные элементы regex
| Синтаксис | Описание | Пример | Результат |
|---|---|---|---|
. | Любой символ (кроме \n) | vm.sd | vmksd, vm.sd, vmpsd и прочее |
.* | Любое количество любых символов | vm.*.cpu | vm.agent.cpu, vm.server.cpu |
.+ | Один или более любых символов | vm.+.cpu | vm.agent.cpu, но не vm..cpu |
? | Ноль или одно вхождение | vm.?cpu | vm.cpu, vm.xcpu |
a|b | ИЛИ (альтернатива) | cpu|memory | cpu или memory |
[...] | Класс символов | vm[123] | vm1, vm2, vm3 |
[^...] | Отрицание класса символов | vm[^abc] | vm1, vmx, но не vma, vmb, vmc |
[a-z] | Диапазон символов | [a-z]pu | cpu, apu, zpu |
^ | Начало строки | ^vm | vm.cpu, но не agent.vm |
$ | Конец строки | cpu$ | vm.cpu, но не cpu.usage |
* | Повтор 0 или более раз | a*b | b, ab, aab |
+ | Повтор 1 или более раз | a+b | ab, aab, но не b |
? | Повтор 0 или 1 раз | a?b | b, ab |
{n} | Повтор точно n раз | a{2} | aa |
{n,} | Повтор n или более раз | a{2,} | aa, aaa |
{n,m} | Повтор jт n до m раз | a{2,3} | aa, aaa |