/api/tree/rule
Каждая запись правила в дереве — это отдельный объект в хранилище, поэтому конечная точка /api/tree/rule позволяет легко изменить отдельное правило в наборе. Правила адресовываются по их tree ID, level и order, и все запросы требуют эти три параметра.
Примечание
Если где-то выполняется ручная синхронизация дерева или создается или редактируется большое количество объектов TSMeta, правило дерева может кэшироваться, и изменения в наборе правил дерева могут некоторое время не распространяться. Если вы внесли какие-либо изменения в набор правил, кроме метаинформации, такой как description и notes, возможно, вам потребуется очистить данные дерева и выполнить ручную синхронизацию, чтобы ветви и листья отражали новые правила.
Глаголы
- GET - Получить одно или несколько правил
- POST - Создать или изменить правило
- PUT - Создать или заменить правило
- DELETE - Удалить правило
Запросы
Следующие поля могут использоваться для всех запросов к конечной точке правил:
| Имя | Тип данных | Обязательно | Описание | Значение по умолчанию | QS | RW | Пример |
|---|---|---|---|---|---|---|---|
| treeId | Целое число | Обязательно | Дерево, к которому относится запрашиваемое правило | treeid | RO | 1 | |
| level | Целое число | Обязательно | Уровень в иерархии правил, где находится правило. Должно быть 0 или больше. | 0 | level | RW | 2 |
| order | Целое число | Обязательно | Порядок внутри уровня, где находится правило. Должно быть 0 или больше. | 0 | order | RW | 1 |
| description | Строка | Необязательно | Краткое описание цели правила | description | RW | Разделить метрику по точке | |
| notes | Строка | Необязательно | Подробные заметки о правиле | notes | RW | ||
| type | Строка | Обязательно* | Тип представленного правила. См. Деревья. *Необходимо при создании нового правила. | type | RW | METRIC | |
| field | Строка | Необязательно | Имя поля, для которого работает правило | field | RW | host | |
| customField | Строка | Необязательно | Имя TSMeta пользовательского поля, для которого работает правило. Обратите внимание, что значение field также должно быть настроено, иначе будет возбуждено исключение. | custom_field | RW | owner | |
| regex | Строка | Необязательно | Шаблон регулярного выражения для обработки связанного поля или значения пользовательского поля. | regex | RW | ^.*\.([a-zA-Z]{3,4})[0-9]{0,1}\..*\..*$ | |
| separator | Строка | Необязательно | Если значение поля необходимо разделить на несколько ветвей, укажите разделительный символ. | separator | RW | \. | |
| regexGroupIdx | Целое число | Необязательно | Индекс группы для извлечения части шаблона из заданного шаблона регулярного выражения. Должно быть 0 или больше. | 0 | regex_group_idx | RW | 1 |
| displayFormat | Строка | Необязательно | Строка формата отображения для изменения display_name значения результирующей ветви или листа. См. Деревья
| display_format | RW | Порт: {ovalue} |
Примечание
При предоставлении значения separator или значения regex, необходимо предоставить правильное регулярное выражение. Для разделителей наиболее распространенным применением является разделение метрик с точками на ветви. Например, вы можете разделить "sys.cpu.0.user" на ветви "sys", "cpu", "0" и "user". Нельзя указать только "." в качестве значения разделителя, так как это не будет соответствовать правильно. Вместо этого, экранируйте точку с помощью "\.". Обратите внимание, что если вы предоставляете JSON через запрос POST, вы также должны экранировать обратную косую черту и указать "\.". В ответах на запросы GET все обратные косые черты будут экранированы.
Ответ
Успешный ответ на запрос GET, POST или PUT вернет весь объект правила с необязательными запрошенными изменениями. Успешные вызовы DELETE вернут код состояния 204 и не будут содержать тела. При изменении данных, если изменений не было, т.е. вызов не предоставил данных для сохранения, ответом будет 304 без тела. Если запрошенного дерева или правила не было в системе, будет возвращен 404 с сообщением об ошибке. Если были предоставлены неверные данные, будет возвращена ошибка 400.
GET
Запрос GET требует определенного идентификатора дерева, уровня правила и порядка. В противном случае будет возвращен 400. Чтобы получить все правила для дерева, используйте конечную точку /api/tree со значением ``treeId'.
Пример запроса GET
http://localhost:4242/api/tree/rule?treeId=1&level=0&order=0
Пример ответа
{
"type": "METRIC",
"field": "",
"regex": "",
"separator": "\\.",
"description": "Split the metric on periods",
"notes": "",
"level": 1,
"order": 0,
"treeId": 1,
"customField": "",
"regexGroupIdx": 0,
"displayFormat": ""
}
POST/PUT
Используя методы POST или PUT, вы можете создать новое правило или изменить существующее. Для новых правил требуется значение type. Для существующих деревьев требуется действительный идентификатор treeId и любые поля, требующие изменения. Успешный запрос вернет измененный объект правила. Обратите внимание, что если правило существует на заданном уровне и в заданном порядке, любые изменения будут объединены или перезапишут существующее правило.
Пример запроса с параметрами
http://localhost:4242/api/tree/rule?treeId=1&level=0&order=0&type=METRIC&separator=\.&method_override=post
Пример запроса с телом
{
"type": "METRIC",
"separator": "\\.",
"description": "Split the metric on periods",
"level": 1,
"order": 0,
"treeId": 1
}
Пример ответа
{
"type": "METRIC",
"field": "",
"regex": "",
"separator": "\\.",
"description": "Split the metric on periods",
"notes": "",
"level": 1,
"order": 0,
"treeId": 1,
"customField": "",
"regexGroupIdx": 0,
"displayFormat": ""
}
DELETE
Использование метода DELETE удалит правило из дерева. Успешное удаление вернет код состояния 204 и не будет содержать тела. Если правило не существует, будет возвращена ошибка 404.
Предупреждение
Этот метод нельзя отменить.
Пример запроса DELETE
http://localhost:4242/api/tree/rule?treeId=1&level=0&order=0&method_override=delete
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/api_http/tree/rule.html