Dodatek 1. Komentarz referencyjny

Notacja

Typy danych

API Zabbix obsługuje następujące typy danych jako dane wejściowe:

Typ Opis
boolean Wartość logiczna, przyjmuje true lub false.
flag Wartość jest uważana za true jeżeli została przekazana i nie jest równanull, w przeciwnym razie false.
integer Liczba całkowita.
float Liczba zmiennoprzecinkowa.
string Ciąg znaków.
text Dłuższy ciąg znaków.
timestamp Unixowy znacznik czasu.
array Uporządkowana sekwencja wartości, czyli zwykła tablica.
object Tablica asocjacyjna.
query Wartość określająca, jakie dane mają zostać zwrócone.

Może być zdefiniowana jako tablica nazw właściwości, aby zwrócić tylko określone właściwości, lub jako jedna z predefiniowanych wartości:
extend - zwraca wszystkie właściwości obiektu;
count - zwraca liczbę otrzymanych rekordów, obsługiwaną tylko przez niektóre podzapytania.

Zabbix API zawsze zwraca wartości tylko jako łańcuchy znaków lub tablice.

Etykiety właściwości

Niektóre z właściwości obiektów są oznaczone którkimi etykietami opisującymi ich zachowania. Zastosowane są następujące etykiety:

  • readonly - wartość właściwości jest ustawiana automatyczne i nie może być definiowana i zmieniana przez klienta;
  • constant - wartośc właściciwości można ustawić podczac tworzenia obiektu, ale nie można jej potem zmienić.

Zarezerwowana wartość ID "0"

Zarezerwowana wartośc "0" może być użyta do filtrowania elementów i do usuwania obiektów powiązanych. Na przykład, by usunąć powiązane proxy z hosta, proxy_hostid należy ustawić na 0 ("proxy_hostid": "0") lub aby filtrować hosty monitorowane przez serwer, opcja proxyids powinna być ustawiona na 0 ("proxyids": "0").

Typowe parametry metody "get"

Następujące parametry są obsługiwane przez wszystkie metody get:

Parametr Typ Opis
countOutput boolean Zwraca liczbę rekordów w wyniku zamiast rzeczywistych danych.
editable boolean Jeżeli ustawiono na true zwraca tylko obiekty, do których użytkownik ma prawa zapisu.

Domyślnie: false.
excludeSearch boolean Zwraca tylko te wyniki, które nie pasują do kryteriów podanych w parametrze search.
filter object Zwraca tylko te wyniki, króre dokładnie pasują do podanego filtra.

Akceptuje tablice, gdzie klucze są nazwami właściwości, a wartości są albo pojedynczą wartością lub tablicą wartości do dopasowania.

Nie działa dla pól typu
text.
limit integer Ograniczenie liczby zwracanych rekordów.
output query Właściwość obiektu do zwrócenia.

Domyślnie: extend.
preservekeys boolean Użyj identyfikatorów ID jako kluczy w wyjściowej tablicy.
search object Zwraca wyniki pasujące do po podanego wyszukiwania typu wildcard (wielkość liter nie jest rozróżnialna).

Akceptuje tablicę, której klicze to nazwy właściwości, a wartości to ciągni znaków do wyszukania. Jeżeli nie zostaną podane żadne dodatkowe opcje, zostanie wykonane wyszukiwanie typu LIKE "%…%".

Działa tylko dla pól typu string i text.
searchByAny boolean Jeśli ustawiono na true, zwraca wynik który pasuje do krótegokolwiek z kryteriów podanych w parametrze filter lub search zamiast wszystkich z nich.

Domyślnie: false.
searchWildcardsEnabled boolean Jeśli ustawiono na true, umożliwia użycie "*" jako symbolu wildcard w parametrze search.

Domyślnie: false.
sortfield string/array Sortuj wynik według podanych właściwości. Zapoznaj się z opisem określinej metody get interfejsu API, aby uzyskać listę właściwości, których można użyć do sortowania. Makra nie są ustawiane przed sortowaniem.

Jeżeli nie zostanie określona żadna wartość, dane zostaną zwrócone nieposortowane.
sortorder string/array Kolejnność sortowania. Jeżeli tablica zostanie przekazana, każda wartośc zostanie dopasowana do odpowiedniej właściwości określonej w parametrze sortfield.

Możliwe wartości to:
ASC - (domyślnie) rosnąco;
DESC - malejąco.
startSearch boolean Parametr search będzie porównywał początek pól, czyli przeprowadzi wyszukiwanie typu LIKE "…%".

Ignorowane, gdy searchWildcardsEnabled jest ustawione na true.

Przykłady

Sprawdzenie uprawnień użytkownika

Czy użytkownik ma uprawnienia zapisu do hostów, których nazwy zaczynają się od "MySQL" lub "Linux" ?

Zapytanie:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "countOutput": true,
               "search": {
                   "host": ["MySQL", "Linux"]
               },
               "editable": true,
               "startSearch": true,
               "searchByAny": true
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Odpowiedź:

{
           "jsonrpc": "2.0",
           "result": "0",
           "id": 1
       }

Wynik zero oznacza brak hostów z uprawnieniami
odczytu/zapisu.

Liczenie niezgodności

Policz liczzbę hostów,, których nazwa nie zawiera podłańcucha "ubuntu"

Zapytanie:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "countOutput": true,
               "search": {
                   "host": "ubuntu"
               },
               "excludeSearch": true
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Odpowiedź:

{
           "jsonrpc": "2.0",
           "result": "44",
           "id": 1
       }

Wyszukiwanie hostów za pomocą wildcard

Znajdź hosty, których nazwa zawiera słowo "server" i mają porty interfejsu "10050" lub "10071". Posortuj wynik według nazwy hosta w kolejności malejącej i ogranicz to do 5 hostów.

Zapytanie:

{
           "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
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Odpowiedź:

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

Wyszukiwanie hostów za pomocą wildcard z "preservekeys"

Jeżeli dodasz parametr "preservekeys" do poprzedniego zapytania, odpowiedź jest zwracana jako tablica asocjacyjna, gdzie klucze są identyfikatorami obiektów.

Zapytanie:

{
           "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
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Odpowiedź:

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