Spec-Zone.ru › OpenTSDB

/api/put

Этот конечный пункт позволяет хранить данные в OpenTSDB по протоколу HTTP как альтернативу интерфейсу Telnet. Запросы PUT могут выполняться только с содержимым, связанным с методом POST. Формат содержимого зависит от выбранного сериализатора. Однако есть некоторые общие параметры и ответы, как документировано ниже.

Для экономии пропускной способности API put позволяет клиентам хранить несколько точек данных в одном запросе. Точки данных не обязательно должны быть связаны каким-либо образом. Каждая точка данных обрабатывается индивидуально, и ошибка с одной точкой данных не повлияет на хранение корректных данных. Это означает, что если ваш запрос содержит 100 точек данных, а одна из них имеет ошибку, 99 точек данных все равно будут записаны, а одна будет отклонена. Подробности определения точки данных, которая не была сохранена, см. в разделе «Ответ» ниже.

Примечание

Если содержимое, которое вы предоставляете с запросом, невозможно разобрать, например, JSON-содержимое, в котором отсутствует кавычка или фигурная скобка, то все точки данных будут отклонены. API вернет ошибку с деталями о том, что пошло не так.

Хотя API поддерживает несколько точек данных на запрос, API не вернет ответ, пока не обработает каждую из них. Это означает, что имена/значения метрик и тегов должны быть проверены, значение обработано, а данные помещены в очередь на хранение. Если ваш запрос PUT содержит большое количество точек данных, API может долго отвечать, особенно если OpenTSDB должен назначить идентификаторы (UID) именам или значениям тегов. Поэтому рекомендуется ограничить максимальное количество точек данных в запросе; 50 точек на запрос — хорошее начальное значение.

Еще одна рекомендация — включить keep-alives в вашем HTTP-клиенте, чтобы вы могли повторно использовать ваше подключение к серверу каждый раз при отправке данных.

Примечание

При использовании HTTP для PUT-запросов вам может потребоваться включить поддержку фрагментов, если ваш HTTP-клиент автоматически разбивает большие запросы на меньшие пакеты. Например, CURL будет разбивать сообщения, большие чем 2 или 3 точки данных, а по умолчанию OpenTSDB отключает поддержку фрагментов. Включите её, установив tsd.http.request.enable_chunked в значение true в файле конфигурации.

Примечание

Если tsd.mode установлено на значение ro, конечный пункт /api/put будет недоступен, и все вызовы вернут ошибку 404.

Глаголы

  • POST

Запросы

Можно передавать некоторые параметры строки запроса, которые изменяют ответ на запрос PUT:

Имя Тип данных Обязательно Описание По умолчанию QS Чтение/запись Пример
summary Присутствует Необязательно Возвращать ли сводную информацию false summary /api/put?summary
details Присутствует Необязательно Возвращать ли подробную информацию false details /api/put?details
sync Булево Необязательно Дождаться ли сброса данных в хранилище перед возвратом результатов. false sync /api/put?sync
sync_timeout Целое число Необязательно Таймаут (в миллисекундах) ожидания сброса данных в хранилище перед возвратом ошибки. При таймауте использование флага details укажет, сколько точек данных завершилось ошибкой, а сколько — успешно. Также необходимо задать sync. Значение 0 означает, что запись не будет иметь таймаут. 0 sync_timeout /api/put/?sync&sync_timeout=60000

Если оба detailed и summary присутствуют в строке запроса, API вернет информацию detailed.

Поля и примеры ниже относятся к сериализатору JSON по умолчанию.

Имя Тип данных Обязательно Описание По умолчанию QS Чтение/запись Пример
metric Строка Обязательно Имя метрики, которую вы сохраняете З sys.cpu.nice
timestamp Целое число Обязательно Маркер времени в стиле Unix-эпохи в секундах или миллисекундах. Маркер времени не должен содержать нецифровых символов. З 1365465600
value Целое число, число с плавающей запятой, строка Обязательно Значение для записи для этой точки данных. Оно может быть с кавычками или без них и должно соответствовать правилам значений OpenTSDB: ../../user_guide/writing З 42.5
tags Карта Обязательно Карта пар имя/значение тега. Должна быть указана хотя бы одна пара. З {"host":"web01"}

Пример отправки одной точки данных

Вы можете предоставить одну точку данных в запросе:

{
  "metric": "sys.cpu.nice",
  "timestamp": 1346846400,
  "value": 18,
  "tags": {
     "host": "web01",
     "dc": "lga"
  }
}

Пример отправки нескольких точек данных

Несколько точек данных должны быть заключены в массив:

[
  {
    "metric": "sys.cpu.nice",
    "timestamp": 1346846400,
    "value": 18,
    "tags": {
       "host": "web01",
       "dc": "lga"
    }
  },
  {
    "metric": "sys.cpu.nice",
    "timestamp": 1346846400,
    "value": 9,
    "tags": {
       "host": "web02",
       "dc": "lga"
    }
  }
]

Ответ

По умолчанию конечный пункт PUT вернет код HTTP 204 и пустое содержимое, если все точки данных были успешно сохранены. Если одна или несколько точек данных содержали ошибку, API вернет код 400 с сообщением об ошибке в содержимом.

Для отладки вы можете запросить включение в ответ сводной информации о количестве успешно и неудачно сохраненных точек данных или получить детали о точках данных, которые не были сохранены, и причинах, чтобы вы могли исправить свой код клиента. Также ошибки с точкой данных будут записаны в журнале TSD, поэтому вы можете там найти проблемы.

Поля, присутствующие в ответах summary или detailed, включают:

Имя Тип данных Описание
success Целое число Количество точек данных, которые были успешно помещены в очередь для хранения
failed Целое число Количество точек данных, которые не смогли быть помещены в очередь для хранения
errors Массив Список точек данных, которые не смогли быть помещены в очередь, и причины. Присутствует только в ответе details

Пример ответа со сводной информацией

{
  "failed": 1,
  "success": 0
}

Пример ответа с подробностями

{
  "errors": [
    {
      "datapoint": {
        "metric": "sys.cpu.nice",
        "timestamp": 1365465600,
        "value": "NaN",
        "tags": {
          "host": "web01"
        }
      },
      "error": "Unable to parse value to a number"
    }
  ],
  "failed": 1,
  "success": 0
}

© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/api_http/put.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API