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
typeauf "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
operationtypeauf "global script" gesetzt ist undopcommand_hstnicht 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_modedes 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.
{
"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.
{
"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.
{
"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
}