1. Введение в PromQL
PromQL (язык запросов Prometheus) — это язык запросов Prometheus tsdb. Это ключевая часть отображения данных и настройки правил тревог в сочетании с графаной.
Официальная документация:https://prometheus.io/docs/prometheus/latest/querying/basics/
Counter (только увеличиваться, но не уменьшатьсяизсчитатьустройство) Индикаторы типа работают как счетчики, они только увеличиваются, а не уменьшаются. Общие индикаторы мониторинга, такие как http_requests_total、 node_cpu_seconds_total Все Counter Тип индикаторов мониторинга.
В демонстрационных данных, возвращаемых узлом-экспортером, его аннотация также содержит тип выборки. Например:
# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="cpu0",mode="idle"} 362812.7890625
#HELP
:Интерпретация текущего показателяиззначение,Вышеупомянутое указывает на существование в каждом режиме. node Узел из cpu Потратьте время на s для единицы.#TYPE
:Опишите текущий показательизтип данных,Выше указан тип счетчика.counter Это простой, но мощный инструмент,Например, мы можем существующее приложение середина записывать количество раз, когда происходят определенные события.,Сохраняя эти данные в виде временных рядов,мы можем легкоиз Понять событиеизизменение курса。PromQL Встроенные операции и функции агрегирования позволяют пользователям выполнять дальнейший анализ этих данных, например, с помощью rate() функция получить HTTP Темп роста запросов:
rate(http_requests_total[5m])
Запросите 10 самых посещаемых HTTP-запросов в текущей системе:
topk(10, http_requests_total)
и Counter
другой, Gauge
(Можно увеличить или уменьшитьиз Панель управления)типиз Метрики ориентированы на реактивные системыиз Текущий статус。Поэтому этот тип индикатораизобразец данныхМожно увеличить или уменьшить。Общие индикаторы, такие как:node_memory_MemFree_bytes
(Хост в данный момент простаиваетиз Объем памяти)、 node_memory_MemAvailable_bytes
(Доступный Объем памяти)Все Gauge
Тип индикаторов мониторинга.проходить Gauge
Индикаторы позволяют пользователям напрямую просматривать текущее состояние системы:
node_memory_MemFree_bytes
для Gauge
Тип индикатора мониторинга, через PromQL
встроенные функции delta()
Могут быть получены изменения в образцах за определенный период времени. Например, вычислить CPU Разница температур в течение двух часов:
delta(cpu_temp_celsius{host="zeus"}[2h])
Также можно использовать напрямую predict_linear()
Прогнозируйте тенденцию изменения данных. Например, прогнозирование системного дискового пространства в 4 Что осталось после закрытия:
Кроме Counter
и Gauge
Виды метрик мониторинга, кроме Prometheus также определено Histogram
и Summary
изиндекстип.Histogram
и Summary
В основном используется для статистического анализа распределения выборки.
Histogram
и Summary
Вседля смогло решить такие проблемы с существованием, путем Histogram
и Summary
типиз Мониторинг показателей,Мы можем быстро понять распределение образцов мониторинга.Например, показатели prometheus_tsdb_wal_fsync_duration_seconds
Тип индикатора Краткое содержание. он записывает Prometheus Server середина wal_fsync
время обработки, путем доступа Prometheus Server из /metrics
Адрес, вы можете получить следующие данные мониторинга:
# HELP prometheus_tsdb_wal_fsync_duration_seconds Duration of WAL fsync.
# TYPE prometheus_tsdb_wal_fsync_duration_seconds summary
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.5"} 0.012352463
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.9"} 0.014458005
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.99"} 0.017316173
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216
из образца середина выше вы можете узнать текущий Prometheus Server руководить wal_fsync
Общее количество операций для 216 раз, отнимает много времени 2,888716127000002с. Его серединасередина цифр (квантиль=0,5) взято для 0.012352463,9 Квантиль (квантиль=0,9) из затрат времени на 0.014458005s。
существовать Prometheus Server сам возвращает из выборки данных середина, мы также можем найти тип для Histogram из Мониторинг показателей prometheus_tsdb_compaction_chunk_range_seconds_bucket
:
# HELP prometheus_tsdb_compaction_chunk_range_seconds Final time range of chunks on their first compaction
# TYPE prometheus_tsdb_compaction_chunk_range_seconds histogram
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="100"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="400"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="1600"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="6400"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="25600"} 405
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="102400"} 25690
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="409600"} 71863
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="1.6384e+06"} 115928
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="6.5536e+06"} 2.5687892e+07
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="2.62144e+07"} 2.5687896e+07
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="+Inf"} 2.5687896e+07
prometheus_tsdb_compaction_chunk_range_seconds_sum 4.7728699529576e+13
prometheus_tsdb_compaction_chunk_range_seconds_count 2.5687896e+07
и Summary
Тип из индикатора сходства существует Histogram
Тип выборки также будет отражать текущий показатель записи общего количества (с _count
каксуффикс) и его значение из суммы (в _sum
каксуффикс)。другойсуществовать В Histogram
Индикатор напрямую отражает количество выборок в разных интервалах, причем интервалы представлены метками. le руководитьопределение。
Операторы запроса PromQL являются выражениями и реализуют четыре типа данных:
Вектор экземпляра (мгновенный вектор) представляет собой набор временных рядов.,Но каждый временной ряд имеет только одну недавнюю точку.,вместо линий.
Range Вектор (вектор диапазона) представляет собой временной ряд за определенный период времени. Каждый временной ряд может содержать несколько точек. 。
Скаляр (скаляр) обычно представляет собой числовое значение и может иметь только одну последовательность: вектор экземпляра, преобразованный в скаляр.
Простое строковое значение. Строки могут использовать одинарные кавычки ('')、Двойные кавычки ("") или обратные кавычки (``) для указания.
Записывайте данные об изменении состояния системы и оборудования в хронологическом порядке, и каждая информация становится образцом.
Каждый временной ряд (Время Серия) определяется именем метрики (Metrics имя) и набор меток (Label набор) назвать из.
если время одинаковое, но название индикатора или набор меток другое, то временной ряд тоже другой.
Каждую точку матрицы середина можно назвать образцом (Sample), причем образец в основном состоит из 3-х аспектной композиции.
Формат хранения временных рядов показателей (Metrics) для пары «ключ-значение».
http_request_total{status="200",method="GET"}@1434417560938=>94355
дляпример,существовать Key-Value связьсередина,94355 как Значение (то есть выборочное значение Sample Значение), фронт из http_request_total{status="200",method="GET"}@1434417560938
равномернокак Key。
Метрика Prometheus имеет две формы выражения:
Устройство соответствия действует на этикетке из,Тег соответствует фильтру позволяет фильтровать временные ряды руководить,Prometheus Полностью поддерживаетсясоответствоватьиобычныйсоответствовать Два режима:полностьюсоответствоватьиРегулярное выражение соответствует。
Сопоставитель равенства Matcher), используется для выбора и предоставления строк, идентичных и з Этикетке. В следующем примере положения середина будет использоваться фильтр соответствия равенства в соответствии с рядом условий.
node_cpu_seconds_total{instance="ydzs-master"}
Сопоставитель неравенства (отрицательное Equality Matcher), используемый для выбора и предоставленной строки, не совпадает с из Этикетка. Оно и равно соответствует прямо противоположному. Например, если вы хотите просмотреть job Не совсем HelloWorld из HTTP Для общего количества запросов вы можете использовать следующий сопоставитель неравенства.
Сопоставитель регулярных выражений (Regular Expression Matcher), используется для выбора результата, полученного после предоставления строки, руководящей регулярной операцией, чтобы она была такой же, как соответствуетиз Этикетка.Prometheus изрегулярная операция — это строгая спецификация из, например регулярное выражение a Будет соответствовать только строкам а, и не будет соответствовать ab или ba или абв. если вы не хотите указывать функцию типа «использовать», вы можете добавить «.*» перед и после регулярного выражения из. например Следующие примеры показывают, что job все основано на Hello Начало из HTTP Общее количество запросов.
node_cpu_seconds_total{instance=~"ydzs-.*", mode="idle"}
node_cpu_seconds_total
Прямой эквивалент В{__name__="node_cpu_seconds_total"}
,Последнее также возможноиспользоватьи То же, что и бывшийиз 4 добрыйсоответствоватьустройство(=,!=,=,!)
。напримерподизслучайпример Можетзначит все Hello Начало изиндекс。
{__name__="node_cpu_seconds_total",instance=~"ydzs-.*", mode="idle"}
Отрицательное сопоставление регулярного выражения (отрицательное Regular Expression Matcher), используется для выбора предоставленной строки после обычной операции. Результат не соответствует Этикетке. PromQL неправильное выражение, основанное на RE2 изграмматики, но RE2 Прямая поддержка не поддерживается.соответствоватьвыражение,так!~
из Кажется,какодиндобрый替代方случай,Реализовать функцию исключения указанных значений тегов на основе регулярных выражений. существует селектор, когда середина,Вы можете настроить таргетинг на несколько совпадений для одного и того же тега. пример из примера ниже,Поиск может быть достигнут job имя node и установитьсуществовать/prometheus каталог, но не существующий/prometheus/user извсех файловых систем в каталоге и определите их размер.
node_filesystem_size_bytes{job="node",mountpoint=~"/prometheus/.*", mountpoint!~ "/prometheus/user/.*"}
Мы можем сделать это, разместив селектор временного диапазона range vector selectors добавить к оператору запросасередина,Указывает, как долго из временного диапазона следует извлекать каждое возвращаемое значение выборки векторного интервала середина. Каждая временная метка из значения Все записывается в обратном хронологическом порядке существования временного ряда серединаиз.,Значение представляет собой соответствующее значение, полученное из временной метки из в пределах временного диапазона.
Временные диапазоны представлены числами, а единицами измерения могут быть одни из следующих единиц времени:
например node_cpu_seconds_total{instance="ydzs-master",mode="idle"}
этот оператор запроса, если он добавлен [1m]
С помощью этого селектора временного диапазона мы можем получить информацию, как показано ниже:
node_cpu_seconds_total{instance="ydzs-master",mode="idle"}[5m]
Это связано с тем, что каждый временной ряд существует и имеет несколько временных меток и несколько значений.,Так что нет возможности визуализировать,Для рисования графики это должен быть скалярный или мгновенный вектор.
Однако обычно интервальный вектор применяет функцию и становится доступным для мгновенного вектора Prometheus. середина имеет множество операций с мгновенными векторами и интервалами векториз функция,Однако для интервального вектора не так уж много часто используемых функций.,Наиболее частое использование имеет следующие функции:
rate()
: Рассчитайте средние темпы роста на каждый интервал времени векторсередина временного ряда во всем временном диапазоне.irate()
: толькоиспользоватьвременной диапазонсерединаизПоследние две точки данныхрассчитать интервалвекторсерединавременной рядиз Каждый Второйсредний темп роста, irate
Его можно использовать только для отображения быстрых изменений последовательностей, более рекомендуется использовать анализ долгосрочных тенденций или сигнализацию середина. rate
функция.increase()
: Вычисляет дельту временного ряда в пределах выбранного временного диапазона, которая по сути представляет собой скорость, умноженную на номер переключателя временного диапазона.математические операцииСимвол относительно простой,Это простое сложение, вычитание, умножение и деление.
Например: мы проходим prometheus_http_response_size_bytes_sum
Можно найти Prometheus этотприложениеиз HTTP Общее количество байт ответа. Но единицей измерения являются байты, мы хотим использовать MB показывать。Тогда мы можем установить это так:prometheus_http_response_size_bytes_sum/8/1024
。
PromQL поддерживает всю математику следующим образом:
+ (дополнение)
- (Вычитание)
* (умножение)
логическое значениеПоддержка пользователей на основевременной рядсерединаобразецизценить,Фильтровать временные ряды руководить.
Например: мы можем пройти prometheus_http_requests_total Запросите количество запросов для каждого интерфейса, но мы хотим отфильтровать количество запросов, превышающее 20 А как насчет вторичного интерфейса?
На этом этапе мы можем использовать следующее выражение PromQL:
prometheus_http_requests_total > 20
из картинасередина выше мы можем видеть это значение из значения или конкретного из числового значения. Но если мы хотим сопоставить условие данных, значение становиться 1. Не соответствует условию из данных, значения становиться 0。тогда мы сможемиспользоватьbool модификатор.
насиспользоватьподиз PromQL выражение:
prometheus_http_requests_total > bool 20
В настоящее время Prometheus поддерживает следующие логические операторы:
==
(равный)!=
(Нетравный)>
(больше чем)<
(Маленький В)>=
(большой Вили подожди В)<=
(Маленький Вили подожди В)проходить Установить операции,Можетсуществоватьдва моментавектори Мгновенныйвектормеждуруководитьсоответствующийиз Установить операции。В настоящее время Прометей Поддерживаются следующие операторы множества:
Например: у нас есть vector1 для A B C,vector2 для B C Д, тогда vector1 and vector2 из Результатдля:B C。
vector1 and vector2 руководитьодинили операции, будет создана новая коллекция. Коллекция середина содержит vector1 и vector2 Все элементы серединаиз.
Например: у нас есть vector1 для A B C,vector2 для B C Д, тогда vector1 or vector2 из Результатдля:A B C D。
vector1 and vector2 руководитьодинили операции, будет создана новая коллекция. Сначала берется набор vector1 Установить все элементы, а затем исключить все существующие vector2 серединажитьсуществоватьизэлемент。
Например: у нас есть vector1 для A B C,vector2 для B C Д, тогда vector1 unless vector2 из Результатдля:A。
существует оператор PromQL с серединой приоритета от высокого к низкому для:
^
*, /, %
+, -
==, !=, <=, <, >=, >
and, unless
or
Prometheus В наличии много других извстроенных функции,Может эффективно обрабатывать данные временных рядов. Некоторые функции имеют параметры по умолчанию.,Например:year(v=vector(time()) instant-vector)
。Чтосерединаженьшеньчисло v является мгновенным вектором, если этот параметр не указан, воляиспользовать значение по умолчанию vector(time())。instant-vector Указывает тип параметра.
abs(v instant-vector) Возвращает абсолютное значение всех выборок входного векториз.
absent(v instant-vector)
,ifpass it извекторный параметр с образцом данных,затем вернисьemptyvector;если передать параметр извектора без выборочных данных, затем вернись без названия метрики и с меткой временного ряда и значения выборки для 1。
При мониторинге показателей,если полученный образец данных пуст., использовать absent Метод очень полезен для оповещения. Например:
# Примеры данных представлены здесь
absent(http_requests_total{method="get"}) => no data
absent(sum(http_requests_total{method="get"})) => no data
# Поскольку нет метрики существования несуществующий, поэтому Возвращает временной ряд без имени метрики, с меткой из и значением выборки для1.
absent(nonexistent{job="myjob"}) => {job="myjob"} 1
# обычныйсоответствоватьиз instance Нет, как вернуть labels часть серединаиз
отсутствует(несуществующий{job="myjob",instance=~".*"}) => {job="myjob"} 1
# sum Функция возвращает временной ряд без меток и выборочных данных.
absent(sum(nonexistent{job="myjob"})) => {} 1
ceil(v instant-vector)
Воля v середина Все значения элементов выборки округляются до ближайшего целого числа. Например:
node_load5{instance="192.168.1.75:9100"} # Результатдля 2.79
ceil(node_load5{instance="192.168.1.75:9100"}) # Результатдля 3
changes(v range-vector)
Введите вектор интервала, Возвращает количество изменений каждого значения выборки данных в пределах вектора интервала (мгновенного вектора). Например:
# если значение выборочных данных не изменилось, затем вернись Результатдля 1
changes(node_load5{instance="192.168.1.75:9100"}[1m]) # Результатдля 1
clamp_max(v instant-vector, max scalar)
функция,Введите мгновенное значение вектора., если значение выборки данных больше, чем max, затем измените на для max, в остальном без изменений. Например:
node_load5{instance="192.168.1.75:9100"} # Результатдля 2.79
clamp_max(node_load5{instance="192.168.1.75:9100"}, 2) # Результатдля 2
clamp_min(v instant-vector, min scalar)
функция,Введите мгновенное векторное минимальное значение., если значение выборки данных меньше min,Затем измените его на для мин, в остальном без изменений. Например:
node_load5{instance="192.168.1.75:9100"} # Результатдля 2.79
clamp_min(node_load5{instance="192.168.1.75:9100"}, 3) # Результатдля 3
day_of_month(v=vector(time()) instant-vector)
функция, возвращает заданное UTC Время означает существование месяца из Нет. Диапазон возвращаемых значений: 1~31.
day_of_week(v=vector(time()) instant-vector)
функция, возвращает заданное UTC Время существуетнеделяиз Нет неба. Диапазон возвращаемых значений: 0~6, 0 Имеется в виду воскресенье.
days_in_month(v=vector(time()) instant-vector)
функция,Возвращает общее количество неба в текущем месяце. Диапазон возвращаемых значений: 28~31.
delta(v range-vector)
из Параметрыинтервальный вектор,возвращатьсяодин Мгновенныйвектор。он вычисляетИнтервальный вектор v из Нет Разница между одним элементом и последним элементом. Поскольку эти значения экстраполируются на весь указанный временной диапазон,Таким образом, даже если значение выборки является целым числом,Вы все равно можете получить нецелое значение.
Например, следующий пример возвращает две последние температуры разницы ЦП:
delta(cpu_temp_celsius{host="zeus"}[2h])
deriv(v range-vector)
из Параметрыинтервальный вектор, возвращает мгновенный вектор. Он использует простой вектор интервала расчета линейной регрессии. v середина каждый временной ряд из производной. Эта функция обычно использует только существование Gauge Тип из временных рядов.
exp(v instant-vector)
Функция, введите мгновенный вектор, верните каждое значение выборки из e из значения индекса, то есть e из N вторая власть. когда N Он будет возвращен, когда значение из станет достаточно большим. +Инф. Специальный случай для:
Exp(+Inf) = +Inf
Exp(NaN) = NaN
floor(v instant-vector)
Функция и ceil() Противоположная функция, Воля v середина Все значения элементов выборки округляются до ближайшего целого числа.
histogram_quantile(φ float, b instant-vector)
от bucket Тип извектор b серединавычислить φ (0 ≤ φ ≤ 1) Квантиль (процентиль из общей формы) извыборочное измаксимальное значение. (связанный φ Квантильиз Подробное описание и гистограммакартинаиндекстипизиспользовать,请женьшень阅Гистограммакартинаикраткое содержание)。вектор b серединаиз образец. каждый bucket из Количество точек отбора проб. Каждый образец из labels серединадолжен иметь le этот label представлять каждого bucket верхняя граница, нет le Образцы, помеченные из, будут игнорироваться. Тип индикатора «Гистограмма» автоматически присваивается _bucket суффиксисоответствующий Этикеткаизвременной ряд。Можетиспользовать rate() Функция для указания временного окна для расчета квантиля.
Например:один Гистограммакартинаиндексимя称для сотрудник_age_bucket_bucket, будет рассчитан в прошлом 10 в течение нескольких минут Нет. 90 процентиль, пожалуйста, обратитесь к следующему выражению:
histogram_quantile(0.9, rate(employee_age_bucket_bucket[10m]))
возвращаться:
{instance="10.0.86.71:8080",job="prometheus"} 35.714285714285715
Это означает, что недавно 10 в течение нескольких минут 90% изобразецизмаксимальное значениедля 35.714285714285715。
holt_winters(v range-vector, sf scalar, tf scalar)
функциябаза Винтервалвектор v, генерирует сглаженные значения для данных временных рядов. коэффициент сглаживания sf Чем ниже, Больше внимания уделяется старым данным. фактор тренда tf Чем выше,Чем больше вы думаете о данных и тенденциях. Это середина,0< sf, tf <=1。holt_winters относится только к Gauge
Тип из временных рядов.
hour(v=vector(time()) instant-vector)
функциявозвращатьсяданный UTC Время из текущего Нет. Несколько Час, диапазон времени: 0~23.
idelta(v range-vector)
из Параметрыинтервальный вектор, Возвращает мгновенный вектор. Он вычисляет последние из 2 Разница между выборочными значениями. Эта функция обычно использует только существование Gauge Тип из временных рядов.
increase(v range-vector)
функция получить интервал векторсерединаиз Нет.a и последний образец и вернуть величину его прироста, это будетсуществовать Когда меняется монотонность(Жую ВВызвано перезапуском цели выборкиизсчитатьустройствосложный Кусочек)автоматическийсерединаперерыв。Зависит от Вэтотценитьэкстраполируется для уточненияизвесьвременной диапазон,Таким образом, даже если значение выборки является целым числом,Вы все равно можете получить нецелое значение.
Например:нижевыражениевозвращатьсяинтервалвекторсередина Каждыйиндивидуальныйвременной рядпрошлое 5 в течение нескольких минут HTTP Количество запросов и рост:
increase(http_requests_total{job="apiserver"}[5m])
increase из Тип возвращаемого значения может быть только типом вычисления. Его основная функция — повысить читаемость диаграммы и данных. использовать rate Функция записывает правило изиспользовать ставку, чтобы постоянно отслеживать изменения значений выборки данных из.
irate(v range-vector)
Функция используется для расчета скорости роста интервала векториз, но отражает, что из — это мгновенная скорость роста. разгневанный Функция заключается в вычислении скорости роста интервала векторсередина по двум последним данным интервала векторсередина. Она автоматически прерывается при изменении монотонности (например, при сбросе изсчета из-за перезапуска цели выборки). Таким образом, вы можете избежать существования в пределах временного окна «проблемы». с длинным хвостом», и лучше проявил чувствительность, irate Рисунок и значки функций могут лучше отражать мгновенные изменения в выборочных данных.
Например:нижевыражениевозвращатьсяинтервалвекторсередина Каждыйиндивидуальныйвременной рядпрошлое 5 в течение нескольких минуты Последние две выборки данныхиз HTTP Количество запросов и темп роста:
irate(http_requests_total{job="api-server"}[5m])
label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)
функция Может Волявременной ряд v середина Несколько тегов src_label из значения, пройти separator как коннектор написать новый из тега dst_label середина. Может быть несколько src_label Этикетка.
Например:нижевыражениевозвращатьсяизвременной ряд Болееодин foo тег, значение тега для etcd,etcd-k8s:
up{endpoint="api",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"}
=> up{endpoint="api",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"} 1
label_join(up{endpoint="api",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"}, "foo", ",", "job", "service")
=> up{endpoint="api",foo="etcd,etcd-k8s",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"} 1
для может сделать иконку клиента более читабельной с помощью label_replace Функция для временных рядов добавляет дополнительную из Этикетка.label_replace Конкретные параметры следующие:
label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)
Эта функция будет последовательно v серединаиз Каждый временной ряд руководить обрабатывается через regex соответствовать src_label изстоимость, и Волясоответствовать часть relacement написать dst_label Теги середина. Как показано ниже:
label_replace(up, "host", "$1", "instance", "(.*):.*")
После обработки функции временной ряд Воля содержит host тег, хост Тег изValue для Exporter Примеры IP адрес:
up{host="localhost",instance="localhost:8080",job="cadvisor"} 1
up{host="localhost",instance="localhost:9090",job="prometheus"} 1
up{host="localhost",instance="localhost:9100",job="node"} 1
ln(v Instant-vector) Вычислить мгновенный вектор v серединавсе выборочные данные представляют собой натуральные логарифмы. Особые обстоятельства:
log2(v instant-vector)
функция Вычислить мгновенный вектор v середина Все выборочные данные из двоичных логарифмов. То же самое для особых обстоятельств.
log10(v instant-vector)
Вычислить мгновенный вектор v середина Все выборочные данные представляют собой десятичный логарифм. То же самое для особых обстоятельств.
minute(v=vector(time()) instant-vector)
функциявозвращатьсяданный UTC Текущее время Часиз Нет Сколько минут. Диапазон результатов: 0~59.
month(v=vector(time()) instant-vector)
функциявозвращатьсяданный UTC В настоящее время время принадлежит Нет. Месяцев, диапазон результатов: 0~12.
predict_linear(v range-vector, t scalar)
функция Можетпредсказыватьвременной ряд v существовать t Второйназадизценить。этобаза Впростая линейная регрессияиз Способ,Статистика по выборочным данным во временном окне,оти Можетверновременной рядиз Делайте прогнозы об изменении тенденций。Должен Функция извозвращаться结果Нет带有мераиндекс,Только список тегов.
Например, на основе 2 Часиз выборочных данных, чтобы предсказать, существует ли доступное дисковое пространство хоста. 4 Когда время закончится, вы можете обратиться к следующему:
predict_linear(node_filesystem_free{job="node"}[2h], 4 * 3600) < 0
rate(v range-vector)
Функция может напрямую вычислять вектор интервала. v существуют средние темпы роста во временном окне,это будетсуществовать Когда меняется монотонность(Жую ВВызвано перезапуском цели выборкиизсчитатьустройствосложный Кусочек)автоматическийсерединаперерыв。Должен Функция извозвращаться结果Нет带有мераиндекс,Только список тегов.
Например,нижевыражениевозвращатьсяинтервалвекторсередина Каждыйиндивидуальныйвременной рядпрошлое 5 в течение нескольких минут HTTP Темп роста количества запросов по странам:
rate(http_requests_total[5m])
результат:
{code="200",handler="label_values",instance="120.77.65.193:9090",job="prometheus",method="get"} 0
{code="200",handler="query_range",instance="120.77.65.193:9090",job="prometheus",method="get"} 0
{code="200",handler="prometheus",instance="120.77.65.193:9090",job="prometheus",method="get"} 0.2
...
Тип возвращаемого значения функцииrate() может использоваться только в том случае, если разработчик использует долгосрочный анализ тенденций или сигнал тревоги, поэтому следует использовать рекомендацию этой функции.
Уведомление:
когда Воля rate() Функция и оператор агрегации (например, sum()) или функция агрегирования по времени (все, что начинается с _over_time Окончание функции) вместе с использованием должно быть выполнено первым. rate функцию, затем руководить Операцией агрегирования, в противном случае при перезапуске целевого объекта выборки rate() Невозможно определить, был ли счетчик сброшен.
resets(v range-vector)
из Параметрыинтервальный вектор. для каждого временного ряда он возвращает определенное количество сбросов. Уменьшение значения между двумя последовательными выборками считается сбросом процессора.
этотфункцияодин般只用существоватьсчитатьустройство Тип из временных рядов.
round(v instant-vector, to_nearest=1 scalar)
Функция и ceil и floor Функция аналогична и возвращает ближайшее целое число для всех выборочных значений векторсередина. до_ближайшего Параметр не является обязательным, значение по умолчанию — для 1, что указывает на то, что образец, возвращенный из, является ближайшим 1 из Целое кратное из значения. Вы также можете указать любое значение для для этого параметра (оно также может быть десятичным), указывая, что возвращаемый образец является ближайшим целым числом, кратным его значению.
scalar(v instant-vector)
Функция из Параметрыодинодинэлементиз Мгновенныйвектор,этовозвращаться Что唯одинизвременной рядизценитькакодинскаляр。еслимераиндексизобразецчисло量большой В 1 или равно 0, затем вернись NaN。
sort(v instant-vector)
функцияверновекторв соответствии сэлементизценитьруководить Сортировать по возрастанию,возвращатьсярезультат:key: value = Метрика: выборочное значение [в порядке возрастания].
sort(v instant-vector)
функцияверновекторв соответствии сэлементизценитьруководить Сортировать по убыванию,возвращатьсярезультат:key: value = Метрика: выборочное значение [в порядке убывания].
sqrt(v instant-vector)
вектор вычисления функции v серединавсе элементы из квадратных корней.
time()
функциявозвращатьсяот 1970-01-01 До настоящего времени существуетиз Второй номер. Уведомление: Возвращает не текущее время напрямую, а временную метку.
timestamp(v instant-vector)
функция возвращает вектор v серединаиз каждого образца по временной метке (от 1970-01-01 Мы присутствуем Второйчисло)。
Долженфункцияот Prometheus 2.0 версия начала внедряться.
vector(s scalar)
функция Воляскаляр s как Нет Этикеткаизвекторвозвращаться,Прямо сейчасвозвращаться Результатдля:key: value= {}, s。
year(v=vector(time()) instant-vector)
функциявозвращатьсяданный UTC Время из Текущего месяца.
Следующий список функций позволяет передавать интервальный вектор,Они агрегируют каждый временной ряд из диапазона,и возвращает мгновенный вектор:
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) : Общее стандартное отклонение каждого показателя в пределах интервала.
12345678
Уведомление:
Даже если распределение значений из внутри интервального вектора неравномерно, веса из при их агрегировании остаются одинаковыми.
Prometheus Также предоставлено Операцией агрегированиясимвол,Эти операторы действуют на мгновенный вектор. Может ли воля возвратить переходное выражение из выборки данных руководить агрегацией?,Сформируйте новый временной ряд. В настоящее время поддерживаются следующие агрегатные функции:
Используется для поиска записи по значению руководить.
Например:sum(prometheus_http_requests_total)
Показывает статистику всех HTTP Количество запросов.
sum(prometheus_http_requests_total)
Вернуть все записи из минимального значения.
Например:min(prometheus_http_requests_total)
Представляет собой получение набора данных серединаиз минимального значение。
min(prometheus_http_requests_total)
Вернуть все записи максимального значения.
Например: maxmetheus_http_requests_total)` Представляет собой получение сбора данных серединаизмаксимального значение。
max(prometheus_http_requests_total)
avg Функция возвращает все записи изсредне значение。
Например:avg(metheus_http_requests_total)
Представляет собой получение сбора данных серединаизсреднее. значение。
avg(prometheus_http_requests_total)
Стандартное отклонение (Standartno Deviation) часто используется для описания размера колебаний данных.
Колебания количества HTTP-запросов. Например: Статистика различных HTTP-запросов.
stddev(prometheus_http_requests_total)
Функция count возвращает все записи.
Например:count(prometheus_http_requests_total)
Показывает статистику всех HTTP Количество запросов.
count(prometheus_http_requests_total)
bottomk Используется для сортировки значений выборки руководить после возврата текущего значения выборки. N Бит из временного ряда.
Например: получить HTTP После объема запроса 5 Бит запроса,Можетиспользоватьвыражение:
bottomk(5, prometheus_http_requests_total)
topk Используется для сортировки значений выборки и возврата текущего значения выборки перед N Бит из временного ряда.
Например: получить HTTP до объема запроса 5 Бит запроса,Можетиспользоватьвыражение:
topk(5, prometheus_http_requests_total)
Из-за всего из PromQL Выражение должно содержать хотя бы одно имя индикатора, иначе хотя бы одно не будет соответствовать пустой строке из фильтра меток, поэтому объедините Prometheus Из официальных документов можно выделить следующие незаконные примеры.
{job=~".*"} # незаконно! .* представляет любой символ, включая пустые строки и имена индикаторов без имен.
{job=""} # незаконно!
{job!=""} # незаконно!
Напротив, следующее выражение является законным из.
{job=~".+"} # законно! .+ означает хотя бы один символ
{job=~".*",method="get"} # законно! .* представляет любой символ
{job="",метод="post"} # Законно! Сохранить непустое соответствие
{job=~".+",method="post"} # законный!житьсуществоватьодин Не пустойсоответствовать
о На этом объяснение Prometheus PromQL заканчивается.,На самом деле, официальный сайт президентиз предельно ясен.,Тоже не сложно,Это легко освоить, если вы используете больше,Если у вас есть какие-либо вопросы, пожалуйста, оставьте мне сообщение,Мы продолжим обновлять статьи [Cloud Native + Big Data] и з в будущем.,Пожалуйста, подождите терпеливо, друзья~