Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltruefalse
Panel
titleSommaire

Table of Contents
stylenone

Introduction

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 :

  • GET : Obtenir des informations sur un élément, ou la liste des éléments.
  • PUT : Créer ou modifier un élément.
  • POST : Modifier un élément.
  • PATCH : Modifier un élément.
  • DELETE : Supprimer un élément.

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 au format JSON.


Cette page décrit le format des URL ainsi que les différentes actions réalisables.

Format des URL

Les exemples utilisent la commande curl, disponible dans la plupart des distributions Linux ; cependant la requête HTTP peut être réalisée avec ln'importe quel outil de votre choix.

Info

Notez que cet Cet écouteur ne permet de travailler que sur les hôtes.

Panel

Une requête est composée de plusieurs éléments :

  • Méthode HTTP : l'action que l'écouteur doit effectuer ; les actions disponibles sont décrites en détail dans les sections suivantes.
  • Adresse et port de l'écouteur : l'adresse est celle du Synchronizer, le port du listener REST fourni avec Shinken Entreprise Enterprise est le 7761.
  • Nom de l'écouteur : il s'agit du nom de l'écouteur tel que défini dans la propriété listener_name du fichier de définition de l'écouteur ; le listener fourni avec Shinken Entreprise Enterprise est listener-rest.
  • Version du protocole : dans cette version de Shinken EntrepriseEnterprise, il s'agit de la v1 ; si le protocole évolue dans de futures versions, le numéro de version évoluera également, ce qui permettra à l'écouteur de conserver la compatibilité avec la version actuelle.
  • Type d'éléments Shinken : le type d'élément Shinken traité par la requête.

    Info

    Actuellement, seuls les hôtes sont gérés.

  • Header HTTP : La liste des en-têtes HTTP ; dans le cas de l'écouteur ; nous spécifions que nous envoyons du contenu JSON ;écouteur, il faut spécifier que le contenu sera du JSON.
  • Données de l'élément : Les données décrivant l'élément à importer respectent le format JSON. Il s'agit d'un dictionnaire décrivant toutes les propriétés et données de l'élément.
    • Elles sont définies à l'aide des nom noms de propriétés décrites dans la page Syntaxe des fichiers d'imports.
    • Des exemples de requêtes sont disponibles plus bas dans la page.

Sécuriser l'écouteur

Par défaut, l'écouteur transmet et reçoit les requêtes en clair ( non chiffréechiffrées ) et sans authentification. Vous pouvez Il est possible de sécuriser ces communications avec :

  • Une Authentification authentification par identifiant/mot de passe ;
  • Un chiffrement grâce à SSL ;


Info

Il est fortement conseillé d'activer ces paramètres de sécurité en même temps.

Authentification

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 de saisir un identifiant et un mot de passe, qui ne seront valables que pour cet écouteur.
  • Validez ensuite Pour valider cette configuration en cliquant , il faudra 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 ).
Panel

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 :

Code Block
languagetext
themeEmacs
$ curl -u 'admin-listener:mot_de_passe' -X PUT ....

Chiffrement des appels

Afin de chiffrer les communications entre un écouteur et un client, il suffit d'activer l'option SSL ( Secure Socket Sockets Layer ).

Il suffit de cocher la case Utiliser SSL et de saisir une clé SSL et un certificat SSL qui ne sera valable seront valables que pour cet écouteur.

Info

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 faire créer son propre certificat, voir : Création d'un certificat SSL gratuit.

Validez ensuite Pour valider cette configuration en cliquant , 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 ).

Panel

Lors des appels à cet écouteur, il faudra penser à modifier le protocole HTTP en HTTPS.

Code Block
languagetext
themeEmacs
$ curl -X PUT "https://synchronizer-server:7761/shinken/listener-rest/v1/hosts" 
Info

Si vous utilisez En utilisant le certificat fournit fourni par Shinken ou un certificat auto-signé ( non émis et vérifiés vérifié par une autorité de certification ), vous aurez besoin il sera nécessaire de spécifier l'option -k ou --insecure dans la ligne de commande curl.

Info
Si vous avez le certificat de l'En utilisant un certificat d'une autorité de certification vous pouvez le spécifiez , il est nécessaire de le spécifier dans la ligne de commande curl avec l'option --cacert <chemin du certificat de l'autorité>.

Description des actions

Dans ces différents exemples, nous allons utiliser des des les requêtes seront :

  • non Non authentifiées.
  • sans Sans le chiffrement ( SSL ).
  • lancées Lancées depuis le serveur hébergeant le Synchronizer : localhost.
  • Utilisant le collecteur par défaut : listener-rest.
  • Utilisant le port par défaut : 7761.

L'URL utilisé utilisée sera donc :

Code Block
languagejs
themeConfluence
http://localhost:7761/shinken/listener-rest/v1/hosts/"
Pensez à adaptez
Warning

Il faudra adapter cette URL en fonction de

votre

la configuration.

Info

Afin d'avoir un affichage plus esthétique des résultat résultats de la méthode GET, vous pouvez il faut rediriger la sortie vers Pyhon Python et utiliser le module json.tool grâce à la commande suivante a à ajouter en fin de ligne :

Code Block
languagetext
themeEmacs
curl ... | python -m json.tool

Obtenir la liste des hôtes créés par l'écouteur

Définition

URL à utiliser

Pour obtenir la liste des hôtes présents dans l'écouteur via l'appel /shinken/listener-rest/v1/hosts

Méthodes possiblesGETCode retour en cas de succès200Contenu du retour si succèsListe des éléments au format JSONCette URL associée à la méthode GET, permet d'obtenir la liste de tous les éléments

, et la méthode GET :

. Le format de retour est un JSON

Les éléments présents dans l'écouteur sont ceux qui ont été crée 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.

Info

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.

Exemple

Créer un hôte

Pour créer un hôte via l'appel /shinken/listener-rest/v1/hosts, et la méthode PUT :

Obtenir les données d'un hôte

Code Block$ curl -H "Content-Type: application/json" "http://localhost:7761

Pour obtenir les informations définissant un hôte via l'appel

/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" } ]

Créer un hôte

Définition

Modifier un hôte

URL à utiliser

Pour modifier un hôte via l'appel

/shinken/listener-rest/v1/hosts

Méthodes possiblesPUTCode retour en cas de succès201Contenu du retour si succès

/SE_UUID

de

, et l'

élément créePour mener à bien cette action, vous pouvez utiliser les méthodes PUT   qui permettent d'envoyer à l'écouteur un nouvel élémentLors de la création d'un nouvel élément, l'écouteur renvoie l'identifiant de l'élément créé sous la forme "core-hosts-<ID>" . Cet identifiant devra être utilisé lors d'autres opérations manipulant l'élément :

Exemple

Supprimer un hôte créé par l'écouteur

Pour supprimer un hôte via l'appel /

Code Block$ 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"

Obtenir les données d'un hôte

Définition

SE_UUID, et la méthode DELETE :

URL à utiliserMéthodes possiblesGETCode retour en cas de succès200Contenu du retour si succèsPropriétés et Données Shinken de l'élément reçues 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.

Exemple

Forcer la valeur des propriétés

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 :


Code Block
languagetext
themeEmacs
# 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
Info

Le SE_UUID présent dans l'URL est celui de l'hôte crée dans le premier appel de création. Pensez à mettre le votre !

Code Block
$ curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-a0af58fafdfb4db5b0fe07c704caf937a476af2aae9d4cdab85e0c439ee93bee" -X GET |POST 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_d '{ "host_name": "host_example_01",
    "imported_fromaddress[FORCE]": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
    "update_date": 1625570835.448688,
    "useuse[FORCE]": "linux, mongodb"
}

Modifier un hôte

Définition

URL à utiliser/shinken/listener-rest/v1/hosts/SE_UUIDMéthodes possiblesPOST, PUT, PATCHCode retour en cas de succès200Contenu du retour si succèsLe mot clé "done"

Les requêtes de modification sont équivalentes à une requête de suppression et une 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.

Warning

Lors de modification, les propriétés et données Shinken de l'élément présent dans l'écouteur sont remplacées par celle envoyé dans la nouvelle requête. Ne sont conservé que :

  • Le _SE_UUID
  • Le nom de l'élément si celui-ci n'est pas mis à jour dans la requête
  • Les propriétés et données reçue dans la requête de mise à jour

Exemple

Code Block
$ curl -H "Content-Type: application/json" "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-a0af58fafdfb4db5b0fe07c704caf937" -X POST -d '{"business_impact":"4"}'
done
'

Lorsqu’une propriété est marquée avec [FORCE], elle est traitée de la manière suivante par le mélange des sources :

  • La valeur est considérée comme prioritaire par rapport aux autres sources.
  • Si une autre source importe le même objet avec une valeur différente, cette dernière est ignorée.
  • En cas de conflit entre plusieurs valeurs forcées, la priorité de la source détermine la valeur conservée.

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].

Liste des clés d'import pouvant être forcées

Excerpt Include
Syntaxe des fichiers d'imports
Syntaxe des fichiers d'imports
nopaneltrue

Supprimer un hôte créé par l'écouteur

Définition

URL à utiliser/shinken/listener-rest/v1/hosts/SE_UUIDMéthodes possiblesDELETECode retour en cas de succès200Contenu du retour si succèsLe 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.

Info

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é.

Exemple

Code Block
$ curl -X DELETE http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690
done

Questions fréquentes sur l'import d'éléments via l'API REST

Forcer l'utilisation d'un modèle ( ou pour les propriétés qui acceptent plusieurs valeurs )

Lorsqu'on importe un hôte existant qui contient la propriété "use", la liste des modèle décrits dans la propriété "use" est ajoutée à la liste des modèles actuellement utilisée 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 valeur ( remplacement des valeurs ) en utilisant la propriété "[FORCE]".Les propriétés permettant cela sont 
  • use view_contacts
  • view_contact_groups
  • notification_contacts
  • notification_contact_groups
  • edition_contacts
  • edition_contact_groups
  • parents
  • escalations
  • business_impact_modulations
  • macromodulations
  • resultmodulations
    Voici des exemples:
  • use[FORCE]    modele3
  • edition_contacts[FORCE]   admin
    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