/api/query/gexp
Graphite — это отличная система хранения временных рядов данных с множеством встроенных функций для их обработки. Для поддержки перехода от Graphite к OpenTSDB, конечная точка /api/query/gexp поддерживает запросы URI, похожие, но не идентичные выражениям Graphite. Функции Graphite обычно форматируются как func(<series>[, param1][, paramN]) с возможностью вложенных функций. Реализация TSD следует той же схеме, но использует запросы в формате m (например, sum:proc.stat.cpu{host=foo,type=idle}) вместо <series>. Вложенные функции поддерживаются.
TSDB реализует подмножество функций Graphite, хотя мы надеемся добавить больше в будущем. Список функций Graphite и их описания см. в документации. Поддерживаемые функции TSD приведены ниже.
Примечание
Поддерживается начиная с версии 2.3
Глаголы
- GET
Запросы
В настоящее время запросы могут выполняться только через GET с использованием URI. (В будущем конечная точка /api/query/exp будет поддерживать большую гибкость.) Это расширение основной конечной точки /api/query, поэтому параметры в таблице запроса также поддерживаются здесь. Дополнительные параметры включают:
| Имя | Тип данных | Обязательно | Описание | Пример |
|---|---|---|---|---|
| exp | Строка | Обязательно | Выражение в стиле Graphite для выполнения. Первый параметр функции должен быть либо другой функцией, либо URI, отформатированный как **Подзапрос** | scale(sum:if.bytes_in{host=*},1024) |
Примеры запросов строки запроса
http://localhost:4242/api/query/gexp?start=1h-ago&exp=scale(sum:if.bytes_in{host=*},1024)
Ответ
Вывод идентичен /api/query.
Функции
Функции, принимающие один метрический запрос, будут работать по каждому результату временного ряда. Например, если запрос включает группировку по хосту, например scale(sum:if.bytes_in{host=*},1024), и существуют несколько хостов с этой метрикой, тогда будет выпущен ряд для каждого хоста, и функция будет применена. Для функций, принимающих несколько метрик, выполняется объединение по каждой метрике, и функция выполняется по каждому результирующему ряду с соответствующими тегами. Например, при запросе sum(sum:if.bytes_in{host=*},sum:if.bytes_out{host=*}), предположим, что существуют два хоста, web01 и web02. В этом случае выход будет if.bytes_in{host=web01} + if.bytes_out{host=web01} и if.bytes_in{host=web02} + if.bytes_out{host=web02}. Отсутствующие ряды в любом наборе результатов метрики будут заполнены значением по умолчанию функции.
В настоящее время поддерживаемые выражения включают:
absolute(<метрика>)
Выводит результаты как абсолютные значения, преобразуя отрицательные значения в положительные.
diffSeries(<метрика>[,<метрикаN>])
Возвращает разницу всех рядов в списке. Выполняет объединение по тегам в каждом наборе результатов метрики, по умолчанию используя заполнение нулем. В настоящее время поддерживается максимум 26 рядов.
divideSeries(<метрика>[,<метрикаN>])
Возвращает частное всех рядов в списке. Выполняет объединение по тегам в каждом наборе результатов метрики, по умолчанию используя заполнение нулем. В настоящее время поддерживается максимум 26 рядов.
highestCurrent(<метрика>,<n>)
Сортирует все результирующие временные ряды по их последнему значению и выводит n количество рядов с наибольшими значениями. n должно быть положительным целым числом.
highestMax(<метрика>,<n>)
Сортирует все результирующие временные ряды по максимальному значению за период и выводит n количество рядов с наибольшими значениями. n должно быть положительным целым числом.
movingAverage(<метрика>,<окно>)
Выводит скользящее среднее значение окна для каждой точки данных и ряда в метрике. Параметр window может быть положительным целым числом, отражающим количество точек данных для поддержания в окне (не временные) или временным интервалом, заданным целым числом, за которым следует единица измерения времени, например `60s` или `60m` или `24h`. Временные окна должны быть в одинарных кавычках.
multiplySeries(<метрика>[,<метрикаN>])
Возвращает произведение всех рядов в списке. Выполняет объединение по тегам в каждом наборе результатов метрики, по умолчанию используя заполнение нулем. В настоящее время поддерживается максимум 26 рядов.
scale(<метрика>,<коэффициент>)
Умножает каждый ряд на коэффициент, где коэффициент может быть положительным или отрицательным значением с плавающей точкой или целым числом.
sumSeries(<метрика>[,<метрикаN>])
Возвращает сумму всех рядов в списке. Выполняет объединение по тегам в каждом наборе результатов метрики, по умолчанию используя заполнение нулем. В настоящее время поддерживается максимум 26 рядов.
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/api_http/query/gexp.html