Prometheus Learning Series (21) Функции PromQL

монитор

Некоторые функции имеют параметры по умолчанию, например:year(v=vector(time()) instant-vector). значит есть параметрvявляется мгновенным вектором, если он не указан, по умолчанию используется выражениеvector(time())значение .

1. абс ()

abs(v instant-vector)Возвращает входной вектор со всеми выборочными значениями, преобразованными в их абсолютные значения.

2. абстракция()

absent(v instant-vector)Если переданный ему вектор имеет какие-либо элементы, он возвращает пустой вектор; если переданный ему вектор не имеет элементов, он возвращает одноэлементный вектор со значением 1.

Это полезно для оповещения, когда для данной комбинации имени метрики и метки не существует временного ряда.

absent(nonexistent{job="myjob"})  
# => {job="myjob"}
absent(nonexistent{job="myjob", instance=~".*"}) 
# => {job="myjob"}
absent(sum(nonexistent{job="myjob"})) 
# => {}

Во втором примереabsent()Попытка получить метки для одноэлементного выходного вектора из входного вектора.

3. потолок()

ceil(v instant-vector)будетvВыборочные значения всех элементов округляются до ближайшего целого числа.

4. изменения()

Для каждого входного временного рядаchanges(v range-vector)Возвращает количество раз, когда его значение менялось в течение указанного диапазона времени в виде мгновенного вектора.

5. зажим_макс()

clamp_max(v instant-vector, max scalar)Зажимvвыборочные значения для всех элементов в , чтобы он был ограниченmax.

6. зажим_мин()

clamp_min(v instant-vector, min scalar)Зажимvвыборочные значения для всех элементов в , делая их нижние границыmin.

Семь, день_месяца()

day_of_month(v=vector(time()) instant-vector)Возвращает день месяца для каждого заданного времени в формате UTC. Возвращаемое значение: от 1 до 31.

Восемь, day_of_week()

day_of_week(v=vector(time()) instant-vector)Возвращает день недели для каждого заданного времени в формате UTC. Возвращаемое значение — от 0 до 6, где 0 означает воскресенье и т. д.

Девять, дней_в_месяце()

days_in_month(v=vector(time()) instant-vector)Возвращает количество дней в месяце для каждого заданного времени в формате UTC. Возвращаемое значение — от 28 до 31.

10. дельта()

delta(v range-vector)вычислить вектор диапазонаvРазница между первым и последним значением для каждого элемента временного ряда в возвращает мгновенный вектор с заданным приращением и эквивалентной меткой.deltaЭкстраполировано, чтобы покрыть полный диапазон времени, указанный в селекторе вектора диапазона, поэтому вы можете получить нецелочисленные результаты, даже если все значения выборки являются целыми числами.

Следующий пример выражения возвращает разницу в температуре процессора между текущим и 2 часа назад:

delta(cpu_temp_celsius{host="zeus"}[2h])

deltaДолжен использоваться только для счетчиков.

Одиннадцать, производное()

deriv(v range-vector)функция, которая вычисляет вторую производную каждого временного ряда в векторе диапазона v, используяПростая линейная регрессия derivДолжен использоваться только для счетчиков.

12. ехр()

exp(v instant-vector)рассчитатьvЭкспоненциальная функция всех элементов в . Особые случаи:

  • Exp(+inf) = +Inf
  • Exp(NaN) = NaN
Тринадцать, этаж()

floor(v instant-vector)будетvВыборочные значения всех элементов округляются до ближайшего целого числа. .

14. гистограмма_квантиль ()

histogram_quatile(φ float, b instant-vector)рассчитатьbφ-гистограмма векторов (0 ≤ φ ≤ 1) . (Для подробного объяснения фи-квантилей и использования типов метрик гистограмм см.Гистограммы и сводки. )bОбразцы — это количество наблюдений в каждом сегменте. Каждый образец должен иметь этикеткуle, где значение метки представляет защитный колпачок ведра. (Выборки без таких меток игнорируются.) Тип метрики гистограммы автоматически предоставляется с_bucketВременные ряды суффиксов и соответствующих меток.

использоватьrate()Функция задает временное окно для расчета квантиля.

Пример: метрика гистограммы называетсяhttp_request_duration_seconds. Чтобы вычислить 90-й процентиль продолжительности запроса за последние 10 минут, используйте следующее выражение:

histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m]))

существуетhttp_request_duration_secondsКвантиль рассчитывается для каждой комбинации меток в . Совокупно, вrate()использовать вокруг функцийsum()Агрегатор. потому чтоhistogram_quantile()нужноleтег, поэтому он должен быть включен вbyв оговорке. Следующее выражение объединяет 90-й процентиль по работе:

histogram_quantile(0.9, sum(rate(http_request_duration_seconds_bucket[10m])) by (job, le))

Чтобы агрегировать все, укажите толькоleЭтикетка:

histogram_quantile(0.9, sum(rate(http_request_duration_seconds_bucket[10m])) by (le))

histogram_quantile()Функция интерполирует квантильные значения, предполагая линейное распределение внутри сегментов. Самое высокое ведро должно иметь+Infверхний предел . (В противном случае вернитесьNaN. ), если квантиль находится в самой высокой корзине, возвращает верхнюю границу второй по величине корзины. Если верхняя граница корзины больше 0, предполагается, что нижняя граница нижней корзины равна 0. В этом случае в пределах корзины применяется обычная линейная интерполяция. В противном случае для квантилей, лежащих в самой нижней корзине, вернуть верхнюю границу самой нижней корзины.

еслиbсодержит менее двух сегментов, возвращаетNaN. заφ<0,возвращение-Inf. заφ> 1,возвращение+Inf.

15. холт_винтерс ()

holt_winters(v range-vector, sf scalar, tf scalar)согласно сvДиапазон в производит сглаженные значения для временного ряда. коэффициент сглаживанияsfЧем он ниже, тем важнее старые данные. фактор трендаtfЧем выше значение, тем больше трендов данных учитывается.sfа такжеtfОба должны быть между 0 и 1.

holt_wintersТолько для счетчика.

16. час()

hour(v=vector(time()) instant-vector)Возвращает час дня для каждого заданного времени в формате UTC. Возвращаемое значение: от 0 до 23.

Семнадцать, дельта ()

idelta(v range-vector)вычислить вектор диапазонаvРазница между двумя последними выборками в , возвращающая мгновенный вектор с заданной дельтой и эквивалентными метками.

ideltaТолько для счетчика.

Восемнадцать, увеличить ()

increase(v range-vector)Вычислите добавление временного ряда в вектор диапазона. Монотонные прерывания (такие как сброс счетчика из-за перезапуска цели) корректируются автоматически. Экстраполяция увеличена, чтобы покрыть полный диапазон времени, указанный в селекторе вектора диапазона, поэтому вы можете получить нецелочисленные результаты, даже если счетчик увеличивается только на целочисленные приращения.

Следующий пример выражения возвращает количество запросов HTTP, измеренных за последние 5 минут для каждого временного ряда в векторе диапазона:

increase(http_requests_total{job="api-server"}[5m])

increaseследует использовать только сcountersиспользовать вместе. этоrate(v)Синтаксический сахар для умножения секунд в указанном окне временного диапазона следует использовать в основном для удобочитаемости. Использование в правилах записиrate, так что приращения последовательно отслеживаются каждую секунду.

Девятнадцать, разгневанный

irate(v range-vector)Вычисляет немедленную скорость роста в секунду для временного ряда в векторе диапазона. Это основано на последних двух точках данных. Монотонные прерывания (такие как сброс счетчика из-за перезапуска цели) корректируются автоматически.

В следующем примере выражение возвращает скорость HTTP-запросов в секунду за период до 5 минут для двух самых последних точек данных для каждого временного ряда в векторе диапазона:

irate(http_requests_total{job="api-server"}[5m])

Следует использовать только при отрисовке изменчивых быстро движущихся фишек.irate. Использование сигналов тревоги и медленно движущихся счетчиков, так как кратковременные изменения скорости могут быть сброшеныFORпункт, и трудно читать график, состоящий только из редких пиков.

Обратите внимание, что когдаirate()с операторами агрегации, такими какsum()) или функция, агрегированная с течением времени (все, что начинается с_over_timeфункция в конце), всегда берите первуюirate(), а затем суммировать. В противном случае, когда цель перезапустится,irate()Не удалось обнаружить сброс счетчика.

20. label_join()

заvДля каждого временного ряда в ,label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)использоватьseparatorподключить всеsrc_labelsвсе значения и вернуть метку, содержащую соединениеdst_labelзначение временного ряда. Может быть любое количествоsrc_labels.

Этот пример вернет вектор, по одному для каждого временного ряда.fooэтикетка с добавленной стоимостьюa,b,c:

label_join(up{job="api-server",src1="a",src2="b",src3="c"}, "foo", ",", "src1", "src2", "src3")

Двадцать один, label_replace()

заvДля каждого временного ряда в ,label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)Сочетание регулярного выражения регулярного выражения с тегамиsrc_labelсовпадение. Если есть совпадение, вернуть временной ряд, меткиdst_labelЗаменить расширением «Заменить».$1заменить первой совпавшей подгруппой,$2Заменить вторым и т.д. Если регулярное выражение не совпадает, временной ряд возвращается без изменений.

Этот пример вернет вектор, по одному для каждого временного ряда.fooметка, значение которойa:

label_replace(up{job="api-server",service="a:c"}, "foo", "$1", "service", "(.):.")

Двадцать два, ln()

ln(v instance-vector)рассчитатьvНатуральный логарифм всех элементов в . Особые случаи:

ln(+Inf) = +Inf ln(0) = -Inf ln(x<0) = NaN ln(NaN) = NaN

Двадцать три, log2()

log2(v instant-vector)рассчитатьvДвоичный логарифм всех элементов в . Частный случай эквивалентенlnчастные случаи в.

Двадцать четыре, log10()

log10(v instant-vector)рассчитатьvДесятичный логарифм всех элементов в . Частный случай эквивалентенlnчастные случаи в.

Двадцать пять, минута ()

minute(v=vector(time()) instant-vector)Возвращает минуты каждого заданного времени в формате UTC. Возвращаемое значение: от 0 до 59.

Двадцать шесть, месяц ()

month(v=vector(time()) instant-vector)Возвращает месяц года для каждого заданного времени в формате UTC. Возвращаемое значение — от 1 до 12, где 1 означает январь и т. д.

Двадцать семь, pred_linear()

predict_linear(v range-vector, t scalar)по вектору дальностиvИспользуйте линейную регрессию для прогнозирования значений временных рядов через t секунд.

predict_linearДолжен использоваться только со счетчиком.

Двадцать восемь, скорость ()

rate(v range-vector)Вычисляет среднюю скорость роста в секунду для временного ряда в векторе диапазона. Монотонные прерывания (такие как сброс счетчика из-за перезапуска цели) корректируются автоматически. Кроме того, вычисление экстраполируется до конца временного диапазона, позволяя пропустить царапины или неполное согласование цикла царапин с периодом времени диапазона.

Следующий пример выражения возвращает частоту запросов HTTP в секунду, измеренную за последние 5 минут для каждого временного ряда в векторе диапазона:

rate(http_requests_total{job="api-server"}[5m])

rateДолжен использоваться только для счетчиков. Его лучше всего использовать для графиков предупреждений и медленных счетчиков.

Обратите внимание, что когдаrate()с операторами агрегации, такими какsum()) или функция, агрегированная с течением времени (все, что начинается с_over_timeфункция в конце), всегда берите первуюrate(), а затем суммировать. В противном случае, когда цель перезапустится,rate()Не удалось обнаружить сброс счетчика.

Двадцать девять, сбрасывает ()

Для данных каждого временного рядаresets()Возвращает количество сбросов счетчика в виде мгновенного вектора в указанном временном диапазоне. Любое уменьшение значения между двумя последовательными выборками интерпретируется как сброс счетчика.

resets()Следует использовать только с счетчиками.

Тридцать, раунд()

round(v instant-vector, to_nearest 1= scalar)будетvВыборочные значения всех элементов округляются до ближайшего целого числа. Решите отношения путем округления. необязательныйto_nearestПараметр позволяет указать ближайший кратный округлению значения выборки. Это кратное также может быть дробью.

Тридцать один, скаляр()

Учитывая одноэлементный входной вектор,scalar(v instant-vector)Возвращает выборочное значение этого отдельного элемента в виде скаляра. Если входной вектор не имеет ровно одного элемента, тоscalarвернусьNaN.

Тридцать два, сортировка ()

sort(v instant-vector)Возвращает элементы вектора, отсортированные по их выборочным значениям в порядке возрастания.

Тридцать три, sort_desc()

sort(v instant-vectorа такжеsortТо же, но в порядке убывания.

Тридцать четыре, sqrt()

sqrt(v instant-vector)рассчитатьvКвадратный корень из всех элементов в .

Тридцать пять, время ()

time()Возвращает количество секунд с 1 января 1970 года по всемирному координированному времени. Обратите внимание, что на самом деле это возвращает не текущее время, а время, когда выражение было вычислено.

Тридцать шесть,timestamp()

timestamp(v instant-vector)Возвращает отметку времени каждой выборки заданного вектора в виде количества секунд с 1 января 1970 года по Гринвичу.

Эта функция была добавлена ​​в Prometheus 2.0.

Тридцать семь, вектор()

vector(s scalar)скалярsВозвращается как вектор без меток.

Тридцать восемь, год ()

year(v=vector(time()) instant-vector)Возвращает год для каждого заданного времени в формате UTC.

Тридцать девять, _over_time()

Следующая функция позволяет агрегировать каждую серию заданного вектора диапазона с течением времени и возвращает мгновенный вектор с агрегированными результатами для каждой серии:

  • avg_over_time(range-vector): среднее значение каждой метрики в векторе диапазона.
  • min_over_time(range-vector): минимальное значение каждой метрики в векторе диапазона.
  • max_over_time(range-vector): максимальное значение каждой метрики в векторе диапазона.
  • sum_over_time(range-vector): Суммарное значение каждой метрики в векторе диапазона.
  • count_over_time(range-vector): количество выборочных данных для каждой метрики в векторе диапазона.
  • quantile_over_time(scalar, range-vector): квантиль значений выборочных данных для каждой метрики в векторе диапазона, φ-квантиль (0 ≤ φ ≤ 1)
  • stddev_over_time(range-vector): Стандартное отклонение совокупности каждой метрики в пределах вектора диапазона.
  • `stdvar_over_time(range-vector): Стандартное отклонение совокупности каждой метрики в векторе диапазона.

Обратите внимание, что все значения в пределах указанного временного интервала имеют одинаковый вес в агрегировании, даже если значения неравномерно распределены по временному интервалу.

сорок, ссылка

Адрес официального сайта Прометея:prometheus.io/Мой гитхаб:GitHub.com/хорошо это/лжец…