Bijlage 1. Referentie commentaar

Notatie

Gegevenstypen

De Zabbix API ondersteunt de volgende gegevenstypen als invoer:

Type Beschrijving
boolean Een booleaanse waarde, accepteert true of false.
flag De waarde wordt als true beschouwd als deze wordt doorgegeven en anders niet gelijk aan null en false.
integer Een geheel getal.
float Een getal met drijvende komma.
string Een tekststring.
text Een langere tekenreeks.
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 eigenschaps namen om alleen specifieke eigenschappen te retourneren, of als een van de vooraf gedefinieerde waarden:
extend - geeft alle objecteigenschappen terug;
count - retourneert het aantal opgehaalde records, alleen ondersteund door bepaalde sub selects.

Zabbix API retourneert altijd waarden als tekenreeksen 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 "get" methode parameters

De volgende parameters worden ondersteund door alle get-methoden:

Parameter Type Beschrijving
countOutput boolean Retourneert het aantal records in het resultaat in plaats van de werkelijke gegevens.
editable boolean Indien ingesteld op true, worden alleen objecten geretourneerd 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 die resultaten die exact overeenkomen met het opgegeven filter.

Accepteert een array, waarbij de sleutels eigenschaps namen zijn en de waarden een enkele waarde zijn of een array van waarden om mee te vergelijken.

Werkt niet voor tekst-velden.
limit integer Beperk het aantal geretourneerde records.
output query Te retourneren objecteigenschappen.

Standaard: extend.
preservekeys boolean Gebruik ID's als sleutels in de resulterende array.
search object Retourneert resultaten die overeenkomen met de opgegeven zoekopdracht met joker tekens (niet hoofdlettergevoelig).

Accepteert een array, waarbij de sleutels eigenschapnamen zijn en de waarden tekenreeksen zijn waarnaar moet worden gezocht. Als er geen extra opties worden gegeven, zal dit een LIKE "%…%" zoekactie uitvoeren.

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

Standaard: false.
searchWildcardsEnabled boolean Indien ingesteld op true, wordt het gebruik van "*" als joker teken in de parameter search ingeschakeld.

Standaard: false.
sortfield string/array Sorteer het resultaat op de gegeven eigenschappen. Raadpleeg een specifieke API get-methode beschrijving voor een lijst met eigenschappen die kunnen worden gebruikt om te sorteren. Macro's worden niet uitgevouwen voordat ze worden gesorteerd.

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

Mogelijke waarden zijn:
ASC - (standaard) oplopend;
DESC - aflopend.
startSearch boolean De search parameter vergelijkt het begin van velden, dat wil zeggen, voer in plaats daarvan een LIKE "…%" zoekopdracht uit.

Negeert 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
       }