Annexe 1. Commentaire de référence

Notation

Types de données

L’API Zabbix prend en charge les types de données suivants en entrée :

Type Description
ID Un identifiant unique utilisé pour référencer une entité.
boolean Une valeur booléenne (true ou false).
flag Une valeur considérée comme true si elle est transmise et différente de null ; sinon, la valeur est considérée comme false.
integer Un nombre entier.
float Un nombre à virgule flottante.
string Une chaîne de caractères.
text Une chaîne de texte plus longue.
timestamp Un horodatage Unix.
array Une séquence ordonnée de valeurs (un tableau simple).
object Un tableau associatif.
query Une valeur qui définit les données à renvoyer. La valeur peut être définie comme un tableau de noms de propriétés (pour ne renvoyer que des propriétés spécifiques), ou comme l’une des valeurs prédéfinies suivantes :
extend - renvoie toutes les propriétés de l’objet ;
count - renvoie le nombre d’enregistrements récupérés, pris en charge uniquement par certaines sous-sélections.

L’API Zabbix renvoie toujours uniquement des valeurs sous forme de chaînes ou de tableaux.

Comportement des propriétés

Certaines propriétés de l’objet sont marquées par de courtes étiquettes décrivant leur comportement. Les étiquettes suivantes sont utilisées :

  • lecture seule - la valeur de la propriété est définie automatiquement et ne peut pas être définie ni modifiée par l’utilisateur, même dans certaines conditions spécifiques (par ex., lecture seule pour les objets hérités ou les objets découverts) ;
  • écriture seule - la valeur de la propriété peut être définie, mais ne peut pas être consultée ensuite ;
  • constante - la valeur de la propriété peut être définie lors de la création d’un objet, mais ne peut pas être modifiée par la suite ;
  • prise en charge - la valeur de la propriété n’est pas obligatoire, mais elle peut être définie dans certaines conditions spécifiques (par ex., prise en charge si type est défini sur "Simple check", "External check", "SSH agent", "TELNET agent" ou "HTTP agent") ; notez toutefois que les propriétés prises en charge peuvent toujours être définies sur leurs valeurs par défaut quelles que soient les conditions ;
  • obligatoire - la valeur de la propriété doit être définie pour toutes les opérations (à l’exception des opérations get) ou dans certaines conditions spécifiques (par ex., obligatoire pour les opérations de création ; obligatoire si operationtype est défini sur "global script" et que opcommand_hst n’est pas défini).

Pour les opérations de mise à jour, une propriété est considérée comme « définie » lorsqu’elle est définie pendant l’opération de mise à jour.

Les propriétés qui ne sont pas marquées par des étiquettes sont facultatives.

Comportement des paramètres

Certains paramètres d’opération sont marqués par de courtes étiquettes afin de décrire leur comportement pour l’opération. Les étiquettes suivantes sont utilisées :

  • lecture seule - la valeur du paramètre est définie automatiquement et ne peut pas être définie ni modifiée par l’utilisateur, même dans certaines conditions spécifiques (par exemple, lecture seule pour les objets hérités ou les objets découverts) ;
  • écriture seule - la valeur du paramètre peut être définie, mais ne peut pas être consultée ensuite ;
  • pris en charge - la valeur du paramètre n’est pas obligatoire, mais peut être définie dans certaines conditions spécifiques (par exemple, pris en charge si operating_mode de l’objet Proxy est défini sur « passive proxy ») ; notez toutefois que les paramètres pris en charge peuvent toujours être définis sur leurs valeurs par défaut, quelles que soient les conditions ;
  • obligatoire - la valeur du paramètre doit être définie.

Les paramètres qui ne sont pas marqués par des étiquettes sont facultatifs.

Valeur d’ID réservée « 0 »

La valeur d’ID réservée « 0 » peut être utilisée pour filtrer des éléments et pour supprimer des objets référencés. Par exemple, pour supprimer un proxy référencé d’un hôte, proxyid doit être défini sur 0 (« proxyid »: « 0 ») ou, pour filtrer les hôtes surveillés par le serveur, l’option proxyids doit être définie sur 0 (« proxyids »: « 0 »).

Paramètres communs des méthodes "get"

Les paramètres suivants sont pris en charge par toutes les méthodes get :

Paramètre Type Description
countOutput boolean Retourner le nombre d'enregistrements dans le résultat au lieu des données réelles.
editable boolean Si défini sur true, retourner uniquement les objets pour lesquels l'utilisateur dispose des droits d'écriture.

Par défaut : false.
excludeSearch boolean Retourner les résultats qui ne correspondent pas aux critères indiqués dans le paramètre search.
filter object Retourner uniquement les résultats qui correspondent exactement au filtre donné.

Accepte un objet, où les clés sont des noms de propriétés (par exemple, les propriétés de l'objet Host dans host.get, les propriétés de l'objet Item dans item.get, etc.), et les valeurs sont soit une valeur unique, soit un tableau de valeurs à comparer.

Ne prend pas en charge les propriétés de type de données text data type.

Notez que certaines méthodes ont une fonctionnalité spécifique pour ce paramètre, décrite sur la page de la méthode (par exemple, le paramètre filter dans host.get prend également en charge les propriétés de l'interface Host).
limit integer Limiter le nombre d'enregistrements retournés.
output query Propriétés de l'objet à retourner.

Par défaut : extend.
preservekeys boolean Utiliser les ID comme clés dans le tableau résultant.
search object Retourner les résultats qui correspondent au motif donné (insensible à la casse).

Accepte un objet, où les clés sont des noms de propriétés (par exemple, les propriétés de l'objet Host dans host.get, les propriétés de l'objet Item dans item.get, etc.), et les valeurs sont des chaînes à rechercher. Si aucune option supplémentaire n'est fournie, cela effectuera une recherche LIKE "%…%".

Prend uniquement en charge les propriétés de type de données string et text data type.

Notez que certaines méthodes ont une fonctionnalité spécifique pour ce paramètre, décrite sur la page de la méthode (par exemple, le paramètre search dans host.get prend également en charge les propriétés de l'interface Host).
searchByAny boolean Si défini sur true, retourner les résultats qui correspondent à l'un des critères indiqués dans le paramètre filter ou search, au lieu de tous les critères.

Par défaut : false.
searchWildcardsEnabled boolean Si défini sur true, active l'utilisation de "*" comme caractère générique dans le paramètre search.

Par défaut : false.
sortfield string/array Trier le résultat selon les propriétés indiquées. Reportez-vous à la description d'une méthode get spécifique de l'API pour obtenir la liste des propriétés pouvant être utilisées pour le tri. Les macros ne sont pas développées avant le tri.

Si aucune valeur n'est spécifiée, les données seront retournées sans tri.
sortorder string/array Ordre de tri. Si un tableau est transmis, chaque valeur sera associée à la propriété correspondante indiquée dans le paramètre sortfield.

Valeurs possibles :
ASC - (par défaut) croissant ;
DESC - décroissant.
startSearch boolean Le paramètre search comparera le début des champs, c'est-à-dire qu'il effectuera à la place une recherche LIKE "…%".

Ignoré si searchWildcardsEnabled est défini sur true.

Indicateurs d'origine des entités

Les méthodes get renvoient une propriété flags pour les entités liées à la découverte de bas niveau (règle LLD/prototype de règle LLD, élément/prototype d'élément, etc.). Cette propriété est utile pour indiquer si l'entité a été découverte ou non, car la modification des entités découvertes est limitée.

La propriété flags renvoie un résultat basé sur une combinaison (opération « + ») de ces valeurs :

Value Description
0 Entité de base (élément, déclencheur, graphe, hôte)
1 Règle de découverte de bas niveau
2 Tout prototype (prototype d'élément, prototype de déclencheur, prototype de règle LLD, etc.)
4 Entité découverte (élément, déclencheur, graphe, hôte, règle LLD découverts)

La valeur combinée renvoyée par la propriété flags peut être :

Value Combination of Description
0 0 Entité simple (élément, déclencheur, graphe, hôte).
2 2 Prototype d'entité (prototype d'élément, prototype de déclencheur, etc.).
6 2+4 Élément, déclencheur, graphe, hôte découverts (convertis à partir d'un prototype).
1 1 Règle de découverte de bas niveau.
3 1+2 Prototype de règle de découverte de bas niveau.
5 1+4 Règle de découverte de bas niveau découverte (convertie à partir d'un prototype).
7 1+2+4 Prototype de règle de découverte de bas niveau découvert.

Exemples

Vérification des permissions de l'utilisateur

L'utilisateur a-t-il la permission d'écrire sur les hôtes dont les noms commencent par "MySQL" ou "Linux" ?

Requête :

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

Réponse :

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

Un résultat égal à zéro signifie qu'aucun hôte ne dispose de permissions de lecture/écriture.

Comptage des non-correspondances

Comptez le nombre d'hôtes dont les noms ne contiennent pas la sous-chaîne "ubuntu"

Requête:

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

Réponse :

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

Recherche d'hôtes à l'aide de caractères génériques

Recherchez les hôtes dont le nom contient le mot "server" et qui ont des ports d'interface "10050" ou "10071". Triez le résultat par nom d'hôte dans l'ordre décroissant et limitez-le à 5 hôtes.

Requête:

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

Réponse :

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

Recherche d'hôtes à l'aide de caractères génériques avec "preservekeys"

Si vous ajoutez le paramètre "preservekeys" à la requête précédente, le résultat est renvoyé sous forme de tableau associatif, où les clés sont les identifiants des objets.

Requête :

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

Réponse :

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