Приложение 1. Справочные комментарии
Обозначение
Типы данных
API Zabbix поддерживает следующие типы данных в качестве входных данных:
| Type | Description |
|---|---|
| ID | Уникальный идентификатор, используемый для ссылки на сущность. |
| boolean | Логическое значение (либо true, либо false). |
| flag | Значение, которое считается true, если оно передано и не равно null; в противном случае значение считается false. |
| integer | Целое число. |
| float | Число с плавающей точкой. |
| string | Текстовая строка. |
| text | Более длинная текстовая строка. |
| timestamp | Метка времени Unix. |
| array | Упорядоченная последовательность значений (обычный массив). |
| object | Ассоциативный массив. |
| query | Значение, определяющее, какие данные будут возвращены. Значение может быть задано как массив имен свойств (чтобы вернуть только определенные свойства) или как одно из предопределенных значений:extend - возвращает все свойства объекта;count - возвращает количество полученных записей, поддерживается только некоторыми подзапросами. |
API Zabbix всегда возвращает значения только в виде строк или массивов.
Поведение свойства
Некоторые свойства объектов помечены короткими метками, описывающими их поведение. Используются следующие обозначения:
- только для чтения - значение свойства задаётся автоматически и не может быть определено или изменено пользователем, даже в особых случаях (например, только для чтения для наследуемых или обнаруженных объектов);
- только для записи - значение свойства можно установить, но нельзя прочитать после;
- постоянное -значение свойства можно задать при создании объекта, но нельзя изменить позже;
- поддерживаемое - значение свойства не обязательно к установке, но может быть задано при определённых условиях (например, поддерживаемое, если
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
}