Anhang 1. Referenzkommentar

Notation

Datentypen

Die Zabbix-API unterstützt die folgenden Datentypen als Eingabe:

Typ Beschreibung
ID Eine eindeutige Kennung, mit der auf eine Entität verwiesen wird.
Boolean Ein Boolescher Wert (entweder true oder false).
Flag Ein Wert, der als true betrachtet wird, wenn er übergeben wird, und ungleich null ist; andernfalls wird der Wert als false betrachtet.
Integer Eine ganze Zahl.
Float Eine Gleitkommazahl.
String Eine Textzeichenfolge.
Text Eine längere Textzeichenfolge.
Timestamp Ein Unix-Zeitstempel.
Array Eine geordnete Wertefolge (ein einfaches Array).
Object Ein assoziatives Array.
Query Ein Wert, der die zurückzugebenden Daten definiert. Der Wert kann als Array von Eigenschaftsnamen (um nur bestimmte Eigenschaften zurückzugeben) oder als einer der vordefinierten Werte definiert werden:
extend – gibt alle Objekteigenschaften zurück;
count – gibt die Anzahl der abgerufenen Datensätze zurück, wird nur von bestimmten Unterauswahlen unterstützt.

Die Zabbix-API gibt Werte immer nur als Zeichenfolgen oder Arrays zurück.

Verhalten von Eigenschaften

Einige der Objekteigenschaften sind mit kurzen Bezeichnungen versehen, um ihr Verhalten zu beschreiben. Die folgenden Bezeichnungen werden verwendet:

  • schreibgeschützt - der Wert der Eigenschaft wird automatisch gesetzt und kann vom Benutzer nicht definiert oder geändert werden, auch nicht unter bestimmten Bedingungen (z. B. schreibgeschützt für geerbte oder entdeckte Objekte);
  • nur schreibbar - der Wert der Eigenschaft kann gesetzt, danach jedoch nicht mehr abgerufen werden;
  • konstant - der Wert der Eigenschaft kann beim Erstellen eines Objekts gesetzt, danach jedoch nicht mehr geändert werden;
  • unterstützt - der Wert der Eigenschaft muss nicht gesetzt werden, darf jedoch unter bestimmten Bedingungen gesetzt werden (z. B. unterstützt, wenn type auf "Simple check", "External check", "SSH agent", "TELNET agent" oder "HTTP agent" gesetzt ist); beachten Sie jedoch, dass unterstützte Eigenschaften unabhängig von den Bedingungen weiterhin auf ihre Standardwerte gesetzt werden können;
  • erforderlich - der Wert der Eigenschaft muss für alle Operationen (außer get-Operationen) oder unter bestimmten Bedingungen gesetzt werden (z. B. erforderlich für create-Operationen; erforderlich, wenn operationtype auf "global script" gesetzt ist und opcommand_hst nicht gesetzt ist).

Bei update-Operationen gilt eine Eigenschaft als „gesetzt“, wenn sie während der update-Operation gesetzt wird.

Eigenschaften, die nicht mit Bezeichnungen versehen sind, sind optional.

Verhalten von Parametern

Einige der Operationsparameter sind mit kurzen Bezeichnungen versehen, um ihr Verhalten für die Operation zu beschreiben. Die folgenden Bezeichnungen werden verwendet:

  • schreibgeschützt - der Wert des Parameters wird automatisch gesetzt und kann vom Benutzer nicht definiert oder geändert werden, auch nicht unter bestimmten Bedingungen (z. B. schreibgeschützt für geerbte Objekte oder entdeckte Objekte);
  • nur schreiben - der Wert des Parameters kann gesetzt, danach jedoch nicht mehr abgerufen werden;
  • unterstützt - der Wert des Parameters muss nicht gesetzt werden, darf jedoch unter bestimmten Bedingungen gesetzt werden (z. B. unterstützt, wenn operating_mode des Proxy-Objekts auf "passive proxy" gesetzt ist); beachten Sie jedoch, dass unterstützte Parameter unabhängig von den Bedingungen weiterhin auf ihre Standardwerte gesetzt werden können;
  • erforderlich - der Wert des Parameters muss gesetzt werden.

Parameter, die nicht mit Bezeichnungen versehen sind, sind optional.

Reservierter ID-Wert "0"

Der reservierte ID-Wert "0" kann zum Filtern von Elementen und zum Entfernen referenzierter Objekte verwendet werden. Um zum Beispiel einen referenzierten Proxy von einem Host zu entfernen, sollte die proxyid auf 0 gesetzt werden ("proxyid": "0") oder zum Filtern von Hosts, die von der Server-Option proxyids überwacht werden, sollte der Wert auf 0 gesetzt werden ("proxyids": "0").“

Allgemeine Parameter der Methode "get"

Die folgenden Parameter werden von allen get-Methoden unterstützt:

Parameter Type Beschreibung
countOutput boolean Gibt die Anzahl der Datensätze im Ergebnis anstelle der eigentlichen Daten zurück.
editable boolean Wenn auf true gesetzt, werden nur Objekte zurückgegeben, für die der Benutzer Schreibrechte hat.

Standard: false.
excludeSearch boolean Gibt Ergebnisse zurück, die nicht den im Parameter search angegebenen Kriterien entsprechen.
filter object Gibt nur die Ergebnisse zurück, die exakt dem angegebenen Filter entsprechen.

Akzeptiert ein Objekt, bei dem die Schlüssel Eigenschaftsnamen sind (z. B. Host-Objekteigenschaften in host.get, Datenpunkt-Objekteigenschaften in item.get usw.) und die Werte entweder ein einzelner Wert oder ein Array von Werten sind, mit denen verglichen werden soll.

Unterstützt keine Eigenschaften des Datentyps text.

Beachten Sie, dass einige Methoden für diesen Parameter eine spezielle Funktionalität haben, die auf der Methodenseite beschrieben ist (z. B. unterstützt der Parameter filter in host.get auch Eigenschaften von Host-Schnittstellen).
limit integer Begrenzt die Anzahl der zurückgegebenen Datensätze.
output query Objekteigenschaften, die zurückgegeben werden sollen.

Beachten Sie, dass die Objekt-ID (d. h. hostid, itemid usw.) immer in der Antwort enthalten ist, auch wenn sie im Parameter output nicht angegeben ist.

Standard: extend.
preservekeys boolean Verwendet IDs als Schlüssel im resultierenden Array.
search object Gibt Ergebnisse zurück, die dem angegebenen Muster entsprechen (Groß-/Kleinschreibung wird nicht beachtet).

Akzeptiert ein Objekt, bei dem die Schlüssel Eigenschaftsnamen sind (z. B. Host-Objekteigenschaften in host.get, Datenpunkt-Objekteigenschaften in item.get usw.) und die Werte Zeichenfolgen sind, nach denen gesucht werden soll. Wenn keine zusätzlichen Optionen angegeben sind, wird eine Suche vom Typ LIKE "%…%" durchgeführt.

Unterstützt nur Eigenschaften des Datentyps string und text.

Beachten Sie, dass einige Methoden für diesen Parameter eine spezielle Funktionalität haben, die auf der Methodenseite beschrieben ist (z. B. unterstützt der Parameter search in host.get auch Eigenschaften von Host-Schnittstellen).
searchByAny boolean Wenn auf true gesetzt, werden Ergebnisse zurückgegeben, die einem beliebigen der im Parameter filter oder search angegebenen Kriterien entsprechen, anstatt allen Kriterien.

Standard: false.
searchWildcardsEnabled boolean Wenn auf true gesetzt, wird die Verwendung von "*" als Platzhalterzeichen im Parameter search aktiviert.

Standard: false.
sortfield string/array Sortiert das Ergebnis nach den angegebenen Eigenschaften. Eine Liste der Eigenschaften, die zum Sortieren verwendet werden können, finden Sie in der Beschreibung der jeweiligen API-get-Methode. Makros werden vor dem Sortieren nicht expandiert.

Wenn kein Wert angegeben ist, werden die Daten unsortiert zurückgegeben.
sortorder string/array Reihenfolge der Sortierung. Wenn ein Array übergeben wird, wird jeder Wert der entsprechenden Eigenschaft zugeordnet, die im Parameter sortfield angegeben ist.

Mögliche Werte:
ASC - (Standard) aufsteigend;
DESC - absteigend.
startSearch boolean Der Parameter search vergleicht den Anfang von Feldern, führt also stattdessen eine Suche vom Typ LIKE "…%" aus.

Wird ignoriert, wenn searchWildcardsEnabled auf true gesetzt ist.

Flags für den Entitätsursprung

Get-Methoden geben eine Eigenschaft flags für Entitäten zurück, die mit Low-Level-Discovery zusammenhängen (LLD-Regel/LLD-Regelprototyp, Datenpunkt/Datenpunktprototyp usw.). Diese Eigenschaft ist nützlich, um anzugeben, ob die Entität entdeckt wurde oder nicht, da die Bearbeitung für entdeckte Entitäten eingeschränkt ist.

Die Eigenschaft flags gibt ein Ergebnis zurück, das auf einer Kombination (Operation „+“) dieser Werte basiert:

Value Description
0 Basisentität (Datenpunkt, Auslöser, Graph, Host)
1 Low-Level-Discovery-Regel
2 Beliebiger Prototyp (Datenpunktprototyp, Auslöserprototyp, LLD-Regelprototyp usw.)
4 Entdeckte Entität (entdeckter Datenpunkt, Auslöser, Graph, Host, LLD-Regel)

Der von der Eigenschaft flags zurückgegebene kombinierte Wert kann sein:

Value Combination of Description
0 0 Normale Entität (Datenpunkt, Auslöser, Graph, Host).
2 2 Entitätsprototyp (Datenpunktprototyp, Auslöserprototyp usw.).
6 2+4 Entdeckter Datenpunkt, Auslöser, Graph, Host (aus Prototyp konvertiert).
1 1 Low-Level-Discovery-Regel.
3 1+2 Low-Level-Discovery-Regelprototyp.
5 1+4 Entdeckte Low-Level-Discovery-Regel (aus Prototyp konvertiert).
7 1+2+4 Entdeckter Low-Level-Discovery-Regelprototyp.

Beispiele

Benutzerberechtigungsprüfung

Hat der Benutzer die Berechtigung, auf Hosts zu schreiben, deren Namen mit "MySQL" oder "Linux" beginnen? Anfrage:

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

Antwort:

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

Keine Ergebnisse bedeuten, es gibt keine Host mit Lese-/Schreib- Berechtigungen.

Mismatch-Zählung

Zählt die Anzahl der Hosts, deren Namen die Teilzeichenkette "ubuntu" nicht enthalten.

Anfrage:

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

Antwort:

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

Suche nach Hosts mithilfe von Platzhaltern

Suche nach Hosts, deren Name das Wort "Server" enthält und die Schnittstellenports "10050" or "10071" haben. Sortieren Sie das Ergebnis nach dem Hostnamen in absteigender Reihenfolge und beschränke die Ausgabe auf 5 Hosts.

Anfrage:

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

Antwort:

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

Suche nach Hosts mit Wildcards und "preservekeys"

Wenn Sie der vorherigen Anfrage den Parameter "preservekeys" hinzufügen, wird das Ergebnis als assoziatives Array zurückgegeben, wobei die Schlüssel die IDs der Objekte sind.

Anfrage:

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

Antwort:

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