Приложение 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"); однако обратите внимание, что свойства с меткой поддерживается все равно могут быть установлены в значения по умолчанию независимо от условий;
  • обязательное - значение свойства обязательно должно быть задано для всех операций (кроме операций получения) или в некоторых особых условиях (например, обязательное для операций создания; обязательное, если operationtype установлено в "global script" и opcommand_hst не задано).

Для операций обновления свойство считается "заданным", если оно задается в ходе операции обновления.

Свойства, не помеченные метками, являются необязательными.

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

Некоторые параметры операции помечены короткими метками, описывающими их поведение для операции. Используются следующие метки:

  • только для чтения - значение параметра устанавливается автоматически и не может быть задано или изменено пользователем, даже в некоторых особых условиях (например, только для чтения для унаследованных объектов или обнаруженных объектов);
  • только для записи - значение параметра можно задать, но после этого к нему нельзя получить доступ;
  • поддерживается - значение параметра не требуется задавать, но его можно задавать в некоторых особых условиях (например, поддерживается, если operating_mode объекта прокси установлен в "passive proxy"); однако обратите внимание, что параметры со статусом поддерживается всё равно могут быть установлены в значения по умолчанию независимо от условий;
  • обязательный - значение параметра должно быть задано.

Параметры, не помеченные метками, являются необязательными.

Зарезервированное значение ID равное "0"

Зарезервированное значение ID "0" можно использовать для фильтрации элементов и удаления связанных объектов. Например, для удаления ссылки на прокси с узла сети, proxytid необходимо задать значением 0 ("proxyid": "0") или для фильтрации узлов сети наблюдаемых сервером, опция proxyids должна быть задана значением 0 ("proxyids": "0").

Общие параметры методов "get"

Следующие параметры поддерживаются всеми методами get:

Параметр Тип Описание
countOutput boolean Возвращать количество записей в результате вместо фактических данных.
editable boolean Если установлено значение true, возвращать только объекты, на которые у пользователя есть права на запись.

По умолчанию: false.
excludeSearch boolean Возвращать результаты, которые не соответствуют критериям, заданным в параметре search.
filter object Возвращать только те результаты, которые точно соответствуют заданному фильтру.

Принимает объект, где ключами являются имена свойств (например, свойства объекта Host в host.get, свойства объекта Item в item.get и т. д.), а значениями — либо одно значение, либо массив значений для сопоставления.

Не поддерживает свойства типа данных text data type.

Обратите внимание, что некоторые методы имеют специальную функциональность для этого параметра, которая описана на странице метода (например, параметр filter в host.get также поддерживает свойства интерфейса узла сети).
limit integer Ограничить количество возвращаемых записей.
output query Свойства объекта, которые должны быть возвращены.

Обратите внимание, что ID объекта (то есть hostid, itemid и т. д.) всегда включается в ответ, даже если он не указан в параметре output.

По умолчанию: extend.
preservekeys boolean Использовать ID в качестве ключей в результирующем массиве.
search object Возвращать результаты, соответствующие заданному шаблону (без учета регистра).

Принимает объект, где ключами являются имена свойств (например, свойства объекта Host в host.get, свойства объекта Item в item.get и т. д.), а значениями — строки для поиска. Если дополнительные параметры не заданы, будет выполнен поиск LIKE "%…%".

Поддерживает только свойства типов данных string и text data type.

Обратите внимание, что некоторые методы имеют специальную функциональность для этого параметра, которая описана на странице метода (например, параметр 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
}