/api/query/last
Этот конечный пункт (2.1 и выше) обеспечивает поддержку доступа к последнему значению отдельных временных рядов. Он предоставляет оптимизацию по сравнению с обычным запросом, когда требуется только последняя точка данных. Поиск последней точки может быть выполнен с помощью временной метки метаданных счетчика или путем обратного сканирования от текущего системного времени.
Примечание
Для работы этого конечного пункта с запросами по строкам метрик путем сканирования соответствующих временных рядов, таблица метаданных должна существовать и быть заполнена счетчиками или объектами TSMeta с использованием одного из методов, указанных в Метаданные. Вы должны установить либо tsd.core.meta.enable_tsuid_tracking , либо tsd.core.meta.enable_realtime_ts. Запросы с параметром обратного сканирования пропустят таблицу метаданных.
Аналогично стандартному конечному пункту запроса, существуют два метода для выбора временных рядов, которые должны возвращать данные:
- Запрос метрики - Подобно обычному запросу метрики, вы можете отправить имя метрики и, по желанию, набор пар тегов. Если включена реальная метаданные, TSD будет сканировать таблицу метаданных, чтобы увидеть, соответствуют ли какие-либо временные ряды запросу. Для каждого соответствующего временного ряда он будет сканировать последнюю точку данных и возвращать её. Однако, если метаданные отключены, тогда TSD попытается выполнить поиск по точному набору метрики и тегов, при условии, что задано значение обратного сканирования (с версии 2.1.1).
- Запрос TSUID - Если вы знаете TSUIDs временных рядов, для которых вы хотите получить данные, просто предоставьте список TSUIDs.
Кроме того, существуют два способа найти последнюю точку данных для каждого найденного временного ряда:
- Метод счетчика - Если не задано значение обратного сканирования и метаданные включены, по умолчанию выполняется поиск счетчика точки данных в таблице метаданных для каждого временного ряда. Этот счетчик записывает время, когда последняя точка данных была записана TSD. Конечный пункт ищет временную метку и получает соответствующую строку данных, извлекая последнюю точку в строке. Это будет работать в большинстве случаев, однако имейте в виду, что если вы загружаете более старые данные (через импорт или просто добавление точки данных со старой временной меткой), временная метка столбца счетчика может быть неточной. Этот метод лучше всего подходит для непрерывно обновляемых данных.
- Обратное сканирование - В качестве альтернативы, вы можете указать количество часов для обратного сканирования, начиная с текущего системного времени TSD, где выполняется запрос. Например, если вы укажете время обратного сканирования 24 часа, TSD сначала будет искать данные в строке текущего часа. Если эта строка пустая, он будет искать данные за час до этого. Он будет продолжать это до тех пор, пока не найдёт точку данных или не превысит лимит часов. Этот метод полезен, если вы часто записываете точки данных в порядке, отличном от хронологического. Также обратите внимание, что чем больше значение обратного сканирования, тем дольше могут занимать запросы, так как они могут сканировать более старые данные.
Все запросы будут возвращать результаты только для временных рядов, которые соответствовали запросу и для которых была найдена точка данных. Результаты представляют собой список отдельных точек данных для каждого временного ряда. Агрегация не может быть выполнена над отдельными точками данных, так как временные метки могут не совпадать, и TSD вернёт только одну точку, поэтому интерполяция невозможна.
Глаголы
- GET
- POST
Запросы
Общие параметры включают:
| Имя | Тип данных | Обязательно | Описание | По умолчанию | QS | RW | Пример |
|---|---|---|---|---|---|---|---|
| запросы | Массив | Обязательно | Список одного или нескольких запросов, используемых для определения временных рядов, для которых необходимо получить последнюю точку данных. | временные_ряды | tsuids | |||
| resolveNames | Булево | Необязательно | Нужно ли разрешать TSUIDs результатов до их имен метрик и тегов. | false | resolve | true | |
| backScan | Целое число | Необязательно | Количество часов для поиска данных в прошлом. Если установлено значение 0, используется временная метка счетчика метаданных для временного ряда. | 0 | back_scan | 24 |
Обратите внимание, что вы можете смешивать несколько запросов метрик и TSUID в одном запросе.
Формат строки запроса метрики
Полная спецификация подзапроса строки запроса метрики приведена ниже:
timeseries=<metric_name>[{<tag_name1>=<tag_value1>[,...<tag_nameN>=<tag_valueN>]}]
Он похож на обычный запрос метрики, но не допускает агрегаций, скоростей, понижения выборки или операторов группировки. Обратите внимание, что если вы предоставите значение обратного сканирования, чтобы избежать таблицы метаданных, вам необходимо предоставить все теги и значения для соответствия точному временному ряду, который вы ищете. Обратное сканирование в настоящее время не фильтрует по заданным метрике и тегам, но будет искать конкретный ряд.
Формат строки запроса TSUID
Запросы TSUID проще, чем запросы метрик. Просто передайте список одного или нескольких шестнадцатерично закодированных TSUIDs, разделенных запятыми:
tsuids=<tsuid1>[,...<tsuidN>]
Примеры запросов со строками
http://localhost:4242/api/query/last?timeseries=proc.stat.cpu{host=foo,type=idle}×eries=proc.stat.mem{host=foo,type=idle}
http://localhost:4242/api/query/last?tsuids=000001000002000003,000001000002000004&back_scan=24&resolve=true
Пример запроса содержимого
{
"queries": [
{
"metric": "sys.cpu.0",
"tags": {
"host": "web01",
"dc": "lga"
}
},
{
"tsuids": [
"000001000002000042",
"000001000002000043"
]
}
}
],
"resolveNames":true,
"backScan":24
}
Ответ
Вывод будет массивом из 0 или более точек данных, в зависимости от найденных данных. Если точка данных для конкретного временного ряда не была найдена в указанное время, она не будет отображаться в выводе. Поля вывода зависят от того, был ли установлен флаг resolve.
| Имя | Описание |
|---|---|
| метрика | Имя метрики для временного ряда. Возвращается только если resolve был установлен в значение true. |
| теги | Список тегов для временного ряда. Возвращается только если resolve был установлен в значение true. |
| временная_метка | Временная метка эпохи Unix в миллисекундах, когда была записана точка данных |
| значение | Значение точки данных, заключенное в кавычки в виде строки |
| tsuid | Шестнадцатеричный TSUID для временного ряда |
Если с запросом не возникло ошибок, вы обычно получите статус 200 со содержимым. Однако, если ваш запрос не смог найти данные, он вернет пустой набор результатов. В случае JSON-сериализатора результатом будет пустой массив:
[]
Примеры ответов
[
{
"timestamp": 1377118201000,
"value": "1976558550",
"tsuid": "0023E3000002000008000006000001"
},
{
"timestamp": 1377118201000,
"value": "1654587485",
"tsuid": "0023E3000002000008000006001656"
}
]
[
{
"metric": "tsd.hbase.rpcs",
"timestamp": 1377186301000,
"value": "2723265185",
"tags": {
"type": "put",
"host": "tsd1"
},
"tsuid": "0023E3000002000008000006000001"
},
{
"metric": "tsd.hbase.rpcs",
"timestamp": 1377186301000,
"value": "580720",
"tags": {
"type": "put",
"host": "tsd2"
},
"tsuid": "0023E3000002000008000006017438"
}
]
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/api_http/query/last.html