L'API fournie par les écouteurs est de type REST ; elle fonctionne donc par l'intermédiaire des différentes méthodes du protocole HTTP :
L'identifiant des éléments est fourni dans l'URL et les données supplémentaires, quand cela est nécessaire, sont fournies dans le corps de la requête HTTP au format JSON.
Cette page décrit le format des URL ainsi que les différentes actions réalisables.
Les exemples utilisent la commande curl, disponible dans la plupart des distributions Linux ; cependant la requête HTTP peut être réalisée avec n'importe quel outil.
Cet écouteur ne permet de travailler que sur les hôtes. |
|
Une requête est composée de plusieurs éléments :
Type d'éléments Shinken : le type d'élément Shinken traité par la requête.
Actuellement, seuls les hôtes sont gérés. |
Par défaut, l'écouteur transmet et reçoit les requêtes en clair ( non chiffrées ) et sans authentification. Il est possible de sécuriser ces communications avec :
Il est fortement conseillé d'activer ces paramètres de sécurité en même temps. |
Il est possible d'authentifier les requêtes grâce à un couple identifiant/mot de passe, configurable uniquement sur la page de l'écouteur, dans l'onglet Configuration.
|
Lors des appels à cet écouteur, il faudra spécifier cet identifiant et ce mot de passe pour que les requêtes s'exécutent.
Par exemple, avec curl, il faut utiliser l'option -u :
$ curl -u 'admin-listener:mot_de_passe' -X PUT .... |
Afin de chiffrer les communications entre un écouteur et un client, il suffit d'activer l'option SSL ( Secure Sockets Layer ).
Il suffit de cocher la case Utiliser SSL et de saisir une clé SSL et un certificat SSL qui ne seront valables que pour cet écouteur.
Shinken fournit un certificat SSL qui permet de chiffrer les communications pour tous les démons et/ou modules. Il se situe dans le répertoire /etc/shinken/certs/. Il est aussi possible de créer son propre certificat, voir : Création d'un certificat SSL gratuit. |
Pour valider cette configuration, il faut cliquer sur le bouton Envoyer.
L'écouteur va se relancer avec cette nouvelle configuration ( ou lors de l'activation de la source si celle-ci est désactivée au moment de l'édition ).
|
Lors des appels à cet écouteur, il faudra penser à modifier le protocole HTTP en HTTPS.
$ curl -X PUT "https://synchronizer-server:7761/shinken/listener-rest/v1/hosts" |
En utilisant le certificat fourni par Shinken ou un certificat auto-signé ( non émis et vérifié par une autorité de certification ), il sera nécessaire de spécifier l'option -k ou --insecure dans la ligne de commande curl. |
| En utilisant un certificat d'une autorité de certification, il est nécessaire de le spécifier dans la ligne de commande curl avec l'option --cacert <chemin du certificat de l'autorité>. |
Dans ces différents exemples, les requêtes seront :
L'URL utilisée sera donc :
http://localhost:7761/shinken/listener-rest/v1/hosts/" |
Il faudra adapter cette URL en fonction de la configuration. |
Afin d'avoir un affichage plus esthétique des résultats de la méthode GET, il faut rediriger la sortie vers Python et utiliser le module json.tool grâce à la commande suivante à ajouter en fin de ligne :
|
Pour obtenir la liste des hôtes présents dans l'écouteur via l'appel /shinken/listener-rest/v1/hosts , et la méthode GET :
Pour créer un hôte via l'appel /shinken/listener-rest/v1/hosts, et la méthode PUT :
Pour obtenir les informations définissant un hôte via l'appel /shinken/listener-rest/v1/hosts/SE_UUID, et la méthode GET :
Pour modifier un hôte via l'appel /shinken/listener-rest/v1/hosts/SE_UUID, et l'une des méthodes POST ou PUT ou PATCH :
Pour supprimer un hôte via l'appel /shinken/listener-rest/v1/hosts/SE_UUID, et la méthode DELETE :
Il est possible d’ajouter le suffixe [FORCE] ( sans espace ) à la clé d’import d'un élément Shinken afin de forcer la valeur associée ( voir la page Forcer la valeur des noms des éléments et des propriétés de type liste (comme la propriété des modèles hérités) ).
Exemple :
# Modifie l'hôte avec le SE_UUID core-hosts-a476af2aae9d4cdab85e0c439ee93bee en forçant l'adresse et les modèles qui seront appliqués à l'hôte
curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-a476af2aae9d4cdab85e0c439ee93bee" -X POST -d '{ "host_name": "host_example", "address[FORCE]": "127.0.0.1", "use[FORCE]": "linux, mongodb"}' |
Lorsqu’une propriété est marquée avec [FORCE], elle est traitée de la manière suivante par le mélange des sources :
Ajouter [FORCE] à une clé d'import contenant une liste ( comme la propriété "members" servant à définir les membres d'un groupe d'utilisateurs ) aura pour effet de remplacer complètement la liste des autres sources par celle fournie avec l'option [FORCE].