Додатак 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 подешен на "Једноставна провера", "Спољна провера", "SSH agent", "TELNET agent", или "HTTP agent");
  • обавезно - потребно је да вредност својства буде подешена за све операције (осим get операција) или у неким специфичним условима (нпр. обавезно за операције креирања; обавезно ако је operationtype подешен на "глобални скрипт" и opcommand_hst није подешен).

За операције ажурирања својство се сматра "постављеним" када се поставља током операције ажурирања.

Својства која нису означена ознакама су опциона.

Понашање параметара

Неки од параметара операције су означени кратким ознакама како би описали њихово понашање за операцију. Користе се следеће ознаке:

  • само за читање - вредност параметра се поставља аутоматски и корисник не може да је дефинише или промени, чак ни у неким специфичним условима (нпр. само за читање за наслеђене објекте или откривене објекте);
  • само за писање - вредност параметра се може подесити, али јој се не може приступити након;
  • подржано - вредност параметра није потребна за подешавање, али је дозвољено да се подеси у неким специфичним условима (нпр. подржано ако је operating_mode прокси објекта подешен на "пасивни прокси");
  • обавезно - потребно је подесити вредност параметра.

Параметри који нису означени ознакама су опциони.

Резервисана вредност ID-ија "0"

Резервисана вредност ID-ијa "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 Врати само оне резултате који се тачно подударају са датим филтером.

Прихвата објекат, где су кључеви имена својстава, а вредности су или једна вредност или низ вредности за подударање.

Не подржава својства text тdata type.
limit integer Ограничи број враћених записа.
output query Својства објекта која се враћају.

Подразумевано: extend.
preservekeys boolean Користите ID-ијеве као кључеве у резултујућем низу.
search object Врати резултате који се поклапају са датим обрасцем (без обзира на велика и мала слова).

Прихвата објекат, где су кључеви имена својстава, а вредности низови за претраживање. Ако нису дате додатне опције, извршиће се претрага LIKE "%…%".

Подржава само својства string и text data type.
searchByAny boolean Ако је подешено на true враћа резултате који одговарају било ком од критеријума датим у параметру filter или search уместо свих њих.

Подразумевано: false.
searchWildcardsEnabled boolean Ако је постављено на true омогућава употребу "*" као џокер знака у параметру search.

Подразумевано: false.
sortfield string/array Сортира резултат према датим својствима. Погледајте опис методе за добијање одређеног API-ја за листу својстава која се могу користити за сортирање. Макрои се не проширују пре сортирања.

Ако није наведена вредност, подаци ће бити враћени несортирани.
sortfield string/array Ред сортирања. Ако је низ прослеђен, свака вредност ће се подударати са одговарајућим својством датим у параметру sortfield.

Могуће вредности:
ASC - (подразумевано) растуће;
DESC - опадајуће.
startSearch boolean Параметар search ће упоређивати почетак поља, то јест, извршиће претрагу LIKE "…%".

Игнорише се ако је searchWildcardsEnabled подешен на true.

Примери

Провера корисничке дозволе

Да ли корисник има дозволу да пише домаћинима, чија имена започињу са "MySQL" или "Linux"?

Request:

{
           "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"

Request:

{
           "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 домаћина.

Request:

{
           "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-ијеви објеката.

Request:

{
           "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
       }