Archives par étiquette : http

Zabbix et son api REST

Sans trop faire de teasing sur le prochain article, j’avais besoin de récupérer de façon dynamique une liste de serveurs. Je me suis dis que Zabbix pouvait être une bonne solution sachant qu’il est possible de regrouper différent serveur sous la forme de host groups.

J’ai pu découvrir l’API rest de zabbix qui est plutôt simple à utiliser et très bien documenter.

Mon cas d’utilisation va se décomposer en 3 étapes:

  1. Authentification
  2. Récupération du host groups
  3. Récupération des hosts

Authentification

La première étape est de récupéré un token d’authentification. Pour cela,il faut poster une requête JSON de la forme :

avec auth.dat contenant:

Cela nous renvoie une réponse la forme:

La partie importante est la chaîne de caractère qui suit result. Il s’agit du token que l’on va réutiliser pour les appels suivants.

Récupération du host groups

Avant de pouvoir récupérer les serveurs d’un groupe, je dois récupérer l’id de ce groupe. Pour l’instant je ne connais que le nom toto.

On va donc refaire une interrogation. Mais avec le json suivant:

 

On retrouve bien le token d’authentification dans la valeur du champ auth et le nom toto dans la valeur du champ name. Il s’agit d’un filtre sur les hostgroups.

Le résultat va être de la forme:

La partie à conserver est la valeur du groupid. C’est que nous allons utiliser pour la suite.

Récupération des hosts

Maintenant que nous avons l’id du hostgroup, nous pouvons interroger zabbix pour avoir la liste des serveurs de ce groupe:

Le résultat est de la forme:

Et voila, en quelques appels, on peut utiliser zabbix comme un catalogue et récupérer de façon dynamique les différents éléments qui constitue le réseau (domestique ou professionnel).