Приложение 1. Справочные комментарии
Обозначение
Типы данных
Zabbix API поддерживает следующие типы данных в качестве входных данных:
| Type | Description |
|---|---|
| ID | Уникальный идентификатор, используемый для ссылки на сущность. |
| boolean | Булево значение (либо true, либо false). |
| flag | Значение, которое считается true, если оно передано и не равно null; в противном случае значение считается false. |
| integer | Целое число. |
| float | Число с плавающей точкой. |
| string | Текстовая строка. |
| text | Более длинная текстовая строка. |
| timestamp | Метка времени Unix. |
| array | Упорядоченная последовательность значений (обычный массив). |
| object | Ассоциативный массив. |
| query | Значение, определяющее, какие данные должны быть возвращены. Значение может быть задано как массив имен свойств (чтобы вернуть только определенные свойства) или как одно из предопределенных значений:extend - возвращает все свойства объекта;count - возвращает количество полученных записей, поддерживается только некоторыми вложенными выборками. |
Zabbix API всегда возвращает значения только в виде строк или массивов.
Поведение свойства
Некоторые свойства объектов помечены короткими метками, описывающими их поведение. Используются следующие обозначения:
- только для чтения - значение свойства задаётся автоматически и не может быть определено или изменено пользователем, даже в особых случаях (например, только для чтения для наследуемых или обнаруженных объектов);
- только для записи - значение свойства можно установить, но нельзя прочитать после;
- постоянное -значение свойства можно задать при создании объекта, но нельзя изменить позже;
- поддерживаемое - значение свойства не обязательно к установке, но может быть задано при определённых условиях (например, поддерживаемое, если
typeустановлен в "Simple check", "External check", "SSH agent", "TELNET agent" или "HTTP agent"). Однако даже поддерживаемое свойства могут автоматически принимать значения по умолчанию независимо от условий; - обязательное значение свойства обязательно для указания при всех операциях (кроме get) или при определённых условиях (например, обязательное при создании объекта; обязательное, если
operationtypeимеет значение "global script", аopcommand_hstне задан).
Для операций обновления свойство считается "установленным", если его значение задаётся в процессе выполнения операции обновления.
Свойства, не отмеченные метками, являются необязательными.
Поведение параметров
Некоторые параметры операций помечены короткими метками, описывающими их поведение для операции. Используются следующие метки:
- read-only - значение параметра задается автоматически и не может быть определено или изменено пользователем, даже при некоторых особых условиях (например, read-only для унаследованных объектов или обнаруженных объектов);
- write-only - значение параметра можно задать, но после этого к нему нельзя получить доступ;
- supported - значение параметра не требуется задавать, но его можно задать при некоторых особых условиях (например, supported, если
operating_modeобъекта Proxy установлен в "passive proxy"); однако следует отметить, что параметры supported по-прежнему могут быть установлены в значения по умолчанию независимо от условий; - required - значение параметра обязательно должно быть задано.
Параметры, не помеченные метками, являются необязательными.
Зарезервированное значение ID равное "0"
Зарезервированное значение ID "0" можно использовать для фильтрации элементов и удаления связанных объектов. Например, для удаления ссылки на прокси с узла сети, proxytid необходимо задать значением 0 ("proxyid": "0") или для фильтрации узлов сети наблюдаемых сервером, опция proxyids должна быть задана значением 0 ("proxyids": "0").
Общие параметры метода get
Следующие параметры поддерживаются всеми методами get:
| Parameter | Type | Description |
|---|---|---|
| countOutput | boolean | Возвращать количество записей в результате вместо фактических данных. |
| editable | boolean | Если установлено значение true, возвращать только те объекты, на которые у пользователя есть права на запись.По умолчанию: false. |
| excludeSearch | boolean | Возвращать результаты, которые не соответствуют критериям, заданным в параметре search. |
| filter | object | Возвращать только те результаты, которые в точности соответствуют заданному фильтру. Принимает объект, где ключи — это имена свойств (например, свойства объекта Host в host.get, свойства объекта Item в item.get и т. д.), а значения — либо одно значение, либо массив значений, с которыми выполняется сравнение.Не поддерживает свойства с типом данных text.Обратите внимание, что некоторые методы имеют специальную функциональность для этого параметра, которая описана на странице метода (например, параметр filter в host.get также поддерживает свойства интерфейса узла сети). |
| limit | integer | Ограничить количество возвращаемых записей. |
| output | query | Свойства объекта, которые нужно вернуть. Обратите внимание, что идентификатор объекта (то есть hostid, itemid и т. д.) всегда включается в ответ, даже если он не указан в параметре output.По умолчанию: extend. |
| preservekeys | boolean | Использовать идентификаторы в качестве ключей в результирующем массиве. |
| search | object | Возвращать результаты, которые соответствуют заданному шаблону (без учета регистра). Принимает объект, где ключи — это имена свойств (например, свойства объекта Host в host.get, свойства объекта Item в item.get и т. д.), а значения — строки для поиска. Если дополнительные параметры не заданы, будет выполнен поиск LIKE "%…%".Поддерживает только свойства с типом данных string и text.Обратите внимание, что некоторые методы имеют специальную функциональность для этого параметра, которая описана на странице метода (например, параметр search в host.get также поддерживает свойства интерфейса узла сети). |
| searchByAny | boolean | Если установлено значение true, возвращать результаты, которые соответствуют любому из критериев, заданных в параметре filter или search, а не всем сразу.По умолчанию: false. |
| searchWildcardsEnabled | boolean | Если установлено значение true, позволяет использовать * в качестве символа подстановки в параметре search.По умолчанию: false. |
| sortfield | string/array | Сортировать результат по заданным свойствам. См. описание конкретного метода API get для списка свойств, которые можно использовать для сортировки. Макросы не раскрываются перед сортировкой.Если значение не указано, данные будут возвращены без сортировки. |
| sortorder | string/array | Порядок сортировки. Если передан массив, каждое значение будет сопоставлено соответствующему свойству, указанному в параметре sortfield.Возможные значения: ASC - (по умолчанию) по возрастанию;DESC - по убыванию. |
| startSearch | boolean | Параметр search будет сравнивать начало полей, то есть вместо этого выполнять поиск LIKE "…%".Игнорируется, если searchWildcardsEnabled установлено в true. |
Флаги происхождения сущности
Методы получения возвращают свойство flags для сущностей, связанных с низкоуровневым обнаружением (LLD-правило/прототип LLD-правила, элемент данных/прототип элемента данных и т. д.). Это свойство полезно для обозначения того, была ли сущность обнаружена или нет, поскольку возможности редактирования для обнаруженных сущностей ограничены.
Свойство flags возвращает результат на основе комбинации (операция "+") следующих значений:
| Value | Description |
|---|---|
| 0 | Базовая сущность (элемент данных, триггер, график, узел сети) |
| 1 | Правило низкоуровневого обнаружения |
| 2 | Любой прототип (прототип элемента данных, прототип триггера, прототип LLD-правила и т. д.) |
| 4 | Обнаруженная сущность (обнаруженный элемент данных, триггер, график, узел сети, LLD-правило) |
Комбинированное значение, возвращаемое свойством flags, может быть следующим:
| Value | Combination of | Description |
|---|---|---|
| 0 | 0 | Обычная сущность (элемент данных, триггер, график, узел сети). |
| 2 | 2 | Прототип сущности (прототип элемента данных, прототип триггера и т. д.). |
| 6 | 2+4 | Обнаруженный элемент данных, триггер, график, узел сети (преобразован из прототипа). |
| 1 | 1 | Правило низкоуровневого обнаружения. |
| 3 | 1+2 | Прототип правила низкоуровневого обнаружения. |
| 5 | 1+4 | Обнаруженное правило низкоуровневого обнаружения (преобразовано из прототипа). |
| 7 | 1+2+4 | Обнаруженный прототип правила низкоуровневого обнаружения. |
Примеры
Проверка прав пользователя
Имеет ли пользователь разрешение на запись на хосты, имена которых начинаются с "MySQL" или "Linux"?
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"countOutput": true,
"search": {
"host": ["MySQL", "Linux"]
},
"editable": true,
"startSearch": true,
"searchByAny": true
},
"id": 1
}
Ответ:
{
"jsonrpc": "2.0",
"result": "0",
"id": 1
}
Нулевой результат означает отсутствие хостов с разрешениями на чтение/запись.
Подсчет несоответствий
Подсчитать количество хостов, имена которых не содержат подстроку "ubuntu"
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"countOutput": true,
"search": {
"host": "ubuntu"
},
"excludeSearch": true
},
"id": 1
}
Ответ:
{
"jsonrpc": "2.0",
"result": "44",
"id": 1
}
Поиск хостов по подстановочным знакам
Найти хосты, имя которых содержит слово «server» и имеют интерфейсные порты «10050» или «10071». Отсортировать результат по имени хоста в порядке убывания и ограничьте его до 5 хостов.
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid", "host"],
"selectInterfaces": ["port"],
"filter": {
"port": ["10050", "10071"]
},
"search": {
"host": "*server*"
},
"searchWildcardsEnabled": true,
"searchByAny": true,
"sortfield": "host",
"sortorder": "DESC",
"limit": 5
},
"id": 1
}
Ответ:
{
"jsonrpc": "2.0",
"result": [
{
"hostid": "50003",
"host": "WebServer-Tomcat02",
"interfaces": [
{
"port": "10071"
}
]
},
{
"hostid": "50005",
"host": "WebServer-Tomcat01",
"interfaces": [
{
"port": "10071"
}
]
},
{
"hostid": "50004",
"host": "WebServer-Nginx",
"interfaces": [
{
"port": "10071"
}
]
},
{
"hostid": "99032",
"host": "MySQL server 01",
"interfaces": [
{
"port": "10050"
}
]
},
{
"hostid": "99061",
"host": "Linux server 01",
"interfaces": [
{
"port": "10050"
}
]
}
],
"id": 1
}
Поиск хостов с использованием подстановочных знаков с «preservekeys»
Если к предыдущему запросу добавить параметр «preservekeys», то результат возвращается в виде ассоциативного массива, где ключами являются id объектов.
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid", "host"],
"selectInterfaces": ["port"],
"filter": {
"port": ["10050", "10071"]
},
"search": {
"host": "*server*"
},
"searchWildcardsEnabled": true,
"searchByAny": true,
"sortfield": "host",
"sortorder": "DESC",
"limit": 5,
"preservekeys": true
},
"id": 1
}
Ответ:
{
"jsonrpc": "2.0",
"result": {
"50003": {
"hostid": "50003",
"host": "WebServer-Tomcat02",
"interfaces": [
{
"port": "10071"
}
]
},
"50005": {
"hostid": "50005",
"host": "WebServer-Tomcat01",
"interfaces": [
{
"port": "10071"
}
]
},
"50004": {
"hostid": "50004",
"host": "WebServer-Nginx",
"interfaces": [
{
"port": "10071"
}
]
},
"99032": {
"hostid": "99032",
"host": "MySQL server 01",
"interfaces": [
{
"port": "10050"
}
]
},
"99061": {
"hostid": "99061",
"host": "Linux server 01",
"interfaces": [
{
"port": "10050"
}
]
}
},
"id": 1
}