Bijlage 1. Referentie commentaar

Notatie

Gegevenstypen

De Zabbix API ondersteunt de volgende gegevenstypen als invoer:

Type Omschrijving
boolean Een boolean waarde, accepteert true of false.
flag De waarde wordt beschouwd als true als deze wordt doorgegeven en niet gelijk is aan null; anders wordt het beschouwd als false.
integer Een geheel getal.
float Een kommagetal.
string Een tekstreeks.
text Een langere tekstreeks.
timestamp Een Unix-tijdstempel.
array Een geordende reeks waarden, dat wil zeggen een gewone array.
object Een associatieve array.
query Een waarde die bepaalt welke gegevens moeten worden geretourneerd.

Kan worden gedefinieerd als een array van eigenschapsnamen om alleen specifieke eigenschappen terug te geven, of als een van de vooraf gedefinieerde waarden:
extend - retourneert alle objecteigenschappen;
count - retourneert het aantal opgehaalde records, alleen ondersteund door bepaalde subselects.

De Zabbix API retourneert altijd waarden als strings of alleen arrays.

Eigenschapslabels

Sommige eigenschappen van objecten zijn gemarkeerd met korte labels om te beschrijven hun gedrag. De volgende labels worden gebruikt:

  • readonly - de waarde van de eigenschap wordt automatisch ingesteld en kan niet worden gedefinieerd of gewijzigd door de client;
  • constant - de waarde van de eigenschap kan worden ingesteld bij het maken van een object, maar kan daarna niet worden gewijzigd.

Gereserveerde ID-waarde "0"

Gereserveerde ID-waarde "0" kan worden gebruikt om elementen te filteren en om objecten waarnaar wordt verwezen te verwijderen. Om bijvoorbeeld een proxy waarnaar wordt verwezen te verwijderen uit een host, moet proxy_hostid worden ingesteld op 0 ("proxy_hostid": "0") of op hosts te filteren die door de server bewaakt worden, moet de optie proxy-id's ingesteld worden op 0 ("proxyids": "0").

Algemene parameters voor de "get" methode

De volgende parameters worden ondersteund door alle get methoden:

Parameter Type Omschrijving
countOutput boolean Retourneert het aantal records in het resultaat in plaats van de daadwerkelijke gegevens.
editable boolean Indien ingesteld op true, retourneert alleen objecten waarvoor de gebruiker schrijfrechten heeft.

Standaard: false.
excludeSearch boolean Retourneert resultaten die niet overeenkomen met de criteria die zijn opgegeven in de search parameter.
filter object Retourneert alleen resultaten die exact overeenkomen met de opgegeven filter.

Accepteert een array, waarbij de sleutels eigenschapsnamen zijn en de waarden ofwel een enkele waarde zijn of een array van waarden om tegenover te stellen.

Ondersteunt geen velden van het gegevenstype text.
limit integer Beperkt het aantal geretourneerde records.
output query Objecteigenschappen die moeten worden geretourneerd.

Standaard: extend.
preservekeys boolean Gebruik ID's als sleutels in de resulterende array.
search object Retourneert resultaten die overeenkomen met het opgegeven patroon (hoofdletteronafhankelijk).

Accepteert een array, waarbij de sleutels eigenschapsnamen zijn en de waarden strings om naar te zoeken. Als er geen aanvullende opties worden opgegeven, zal dit een LIKE "%…%" zoekopdracht uitvoeren.

Ondersteunt alleen velden van gegevenstype string en text.
searchByAny boolean Indien ingesteld op true, retourneert resultaten die overeenkomen met een van de criteria die zijn opgegeven in de filter of search parameter in plaats van met allemaal.

Standaard: false.
searchWildcardsEnabled boolean Indien ingesteld op true, maakt het gebruik van "*" mogelijk als een wildcard-teken in de search parameter.

Standaard: false.
sortfield string/array Sorteer het resultaat op de opgegeven eigenschappen. Raadpleeg de beschrijving van een specifieke API get methode voor een lijst van eigenschappen die kunnen worden gebruikt voor het sorteren. Macro's worden niet uitgebreid vóór het sorteren.

Als er geen waarde wordt opgegeven, worden de gegevens ongesorteerd geretourneerd.
sortorder string/array Sorteervolgorde. Als een array wordt doorgegeven, wordt elke waarde gekoppeld aan de overeenkomstige eigenschap die is opgegeven in de sortfield parameter.

Mogelijke waarden zijn:
ASC - (standaard) oplopend;
DESC - aflopend.
startSearch boolean De search parameter zal het begin van velden vergelijken, dat wil zeggen een LIKE "…%" zoekopdracht uitvoeren.

Genegeerd als searchWildcardsEnabled is ingesteld op true.

Voorbeelden

Controle gebruikersrechten

Heeft de gebruiker rechten om te schrijven naar host waarvan de namen beginnen met "MySQL" of "Linux" ?

Verzoek:

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

Antwoord:

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

Geen resultaat betekend dat er geen hosts met lezen/schrijven rechten zijn

Tellen van niet-matches

Tellen van het aantal hosts waarin het woord "ubuntu" niet in voor komt.

VCerzoek:

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

Antwoord:

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

Zoeken van hosts met jokertekens

Vind hosts waarin "server" in de naam voor komt en interface poorten "10050" of "10071" hebben. Sorteer het resultaat per hostname in aflopende volgorde en beperk de resultaten tot 5 hosts.

Verzoek:

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

Antwoord:

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

Zoeken naar hosts met jokertekens met "preservekeys"

Als u de parameter "preservekeys" toevoegt aan het vorige verzoek, wordt de resultaat wordt geretourneerd als een associatieve array, waarbij de sleutels de id zijn van de objecten.

Verzoek:

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

Antwoord:

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