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 en format JSON.
Notez que cet écouteur ne permet de travailler que sur les hôtes. |
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 l'outil de votre choix.
|
Une requête est composée de plusieurs éléments :
Par défaut, l'écouteur transmet et reçoit les requêtes en clair ( non chiffrée ) et sans authentification. Vous pouvez 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.
Il suffit de cocher la case Authentification et saisir un identifiant et un mot de passe, qui ne seront valables que pour cet écouteur.
Validez ensuite cette configuration en cliquant 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 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 Socket Layer ).
Il suffit de cocher la case Utiliser SSL et saisir une clé SSL et un certificat SSL qui ne sera valable 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/ |
Validez ensuite cette configuration en cliquant 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" |
Si vous utilisez le certificat fournit par Shinken ou un certificat auto signé ( non émis et vérifié par une autorité de certification ), vous aurez besoin de spécifier l'option -k ou --insecure dans la ligne de commande curl |
| Si vous avez le certificat de l'autorité de certification vous pouvez le spécifiez dans la ligne de commande curl avec l'option --cacert <chemin du certificat de l'autorité> |
Dans ces différents exemples, nous allons utiliser des requêtes :
L'URL utilisée sera donc
http://localhost:7761/shinken/listener-rest/v1/hosts/" |
Pensez à adapter cette URL en fonction de votre configuration
Afin d'avoir un affichage plus esthétique des résultats de la méthode GET, vous pouvez rediriger la sortie vers pyhon et utiliser le module json.tool grâce à la commande suivante à ajouter en fin de ligne :
|
| URL à utiliser | /shinken/listener-rest/v1/hosts |
|---|---|
| Méthodes possibles | GET |
| Code retour en cas de succès | 200 |
| Contenu du retour si succès | Liste des éléments au format JSON |
Cette URL associée à la méthode GET, permet d'obtenir la liste de tous les éléments présents dans l'écouteur. Le format de retour est un JSON.
Les éléments présents dans l'écouteur sont ceux qui ont été créés sur cet écouteur ( et qui n'ont pas été supprimés ).
Les propriétés et données Shinken affichées sont celles reçues par le collecteur.
Cet appel correspond à l'onglet "Liste des éléments enregistrés dans la base de données" sur la page de description de votre source. |
$ curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/" -X GET | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 728 100 728 0 0 100k 0 --:--:-- --:--:-- --:--:-- 101k
[
{
"_SE_UUID": "core-hosts-a0af58fafdfb4db5b0fe07c704caf937",
"_SYNC_KEYS": "core-hosts-a0af58fafdfb4db5b0fe07c704caf937,host_example_01",
"_id": "a0af58fafdfb4db5b0fe07c704caf937",
"address": "192.168.1.48",
"host_name": "host_example_01",
"imported_from": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
"update_date": 1625570835.448688,
"use": "linux"
},
{
"_SE_UUID": "core-hosts-3941f2a530194d149f18b82f84bcef51",
"_SYNC_KEYS": "core-hosts-3941f2a530194d149f18b82f84bcef51,host_example_02",
"_id": "3941f2a530194d149f18b82f84bcef51",
"address": "192.168.1.54",
"host_name": "host_example_02",
"imported_from": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
"update_date": 1625570975.763321,
"use": "windows"
}
]
|
Afin d'avoir un affichage plus esthétique des résultats de la méthode GET, vous pouvez rediriger la sortie vers python et utiliser le module json.tool grâce à la commande suivante à ajouter en fin de ligne :
|
| URL à utiliser | /shinken/listener-rest/v1/hosts |
|---|---|
| Méthodes possibles | PUT |
| Code retour en cas de succès | 201 |
| Contenu du retour si succès | SE_UUID de l'élément créé |
Pour mener à bien cette action, vous pouvez utiliser les méthodes PUT qui permettent d'envoyer à l'écouteur un nouvel élément
$ curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/" -X PUT -d '{"host_name":"host_example_01", "address":"192.168.1.48", "use":"linux"}'
"core-hosts-a0af58fafdfb4db5b0fe07c704caf937" |
| URL à utiliser | /shinken/listener-rest/v1/hosts/SE_UUID |
|---|---|
| Méthodes possibles | GET |
| Code retour en cas de succès | 200 |
| Contenu du retour si succès | Propriétés et Données Shinken de l'élément reçu sur le collecteur au format JSON |
La méthode GET, lorsqu'elle est accompagnée d'un identifiant, l'élément est renvoyé au format JSON.
Le SE_UUID présent dans l'URL est celui de l'hôte créé dans le premier appel de création. Pensez à mettre le vôtre ! |
$ curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-a0af58fafdfb4db5b0fe07c704caf937" -X GET | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 361 100 361 0 0 51046 0 --:--:-- --:--:-- --:--:-- 60166
{
"_SE_UUID": "core-hosts-a0af58fafdfb4db5b0fe07c704caf937",
"_SYNC_KEYS": "core-hosts-a0af58fafdfb4db5b0fe07c704caf937,host_example_01",
"_id": "a0af58fafdfb4db5b0fe07c704caf937",
"address": "192.168.1.48",
"host_name": "host_example_01",
"imported_from": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
"update_date": 1625570835.448688,
"use": "linux"
} |
| URL à utiliser | /shinken/listener-rest/v1/hosts/SE_UUID |
|---|---|
| Méthodes possibles | POST, PUT, PATCH |
| Code retour en cas de succès | 200 |
| Contenu du retour si succès | Le mot clé "done" |
Les requêtes de modification sont équivalentes à une requête de suppression et une de création avec le même SE_UUID. Cela permet de n'avoir que les dernières données à jour dans la base de l'écouteur.
Lors de modifications, les propriétés et données Shinken de l'élément présent dans l'écouteur sont remplacées par celles envoyées dans la nouvelle requête. Ne sont conservé que :
|
$ curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-a0af58fafdfb4db5b0fe07c704caf937" -X POST -d '{"business_impact":"4"}'
done |
| URL à utiliser | /shinken/listener-rest/v1/hosts/SE_UUID |
|---|---|
| Méthodes possibles | DELETE |
| Code retour en cas de succès | 200 |
| Contenu du retour si succès | Le mot clé "done" |
Utilisez l'action DELETE pour supprimer un élément créé par l'écouteur, en fournissant l'identifiant de l'élément à supprimer.
Notez que cette requête permet de supprimer les éléments dans la base de l'écouteur ; elle ne permet pas de supprimer un élément dans le Synchronizer lui-même, pour des raisons de sécurité. |
$ curl -X DELETE http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 done |
Lorsqu'on importe un hôte existant qui contient la propriété "use", la liste des modèles décrits dans la propriété "use" est ajoutée à la liste des modèles actuellement utilisés par l'hôte.
Comme lors de l'import d'hôtes via fichiers Cfg, il est possible de forcer l'utilisation d'une liste de modèles ( remplacement et non-ajout de modèles ) en utilisant la propriété "use[FORCE]" au lieu de "use".
Plus de précisions sur l'utilisation du FORCE pour les modèles sont disponible dans la page de documentation suivante: Syntaxe des fichiers d’imports