Shinken est un ensemble de démons travaillant de manière autonome pour collecter les statuts des équipements supervisés. Mais dans certain cas, Shinken ne peut pas accéder aux équipements a superviser.
Le receiver permet alors de recevoir des messages de l’extérieur et de les transmettre aux démons concernés.
Mais comme la source de message peut-être différente, il est nécessaire d'ajouter des modules au receiver qui traduira les messages reçus dans un format que Shinken comprendra.
Le module receiver-module-generic-endpoint est un module qui est utile pour servir de base au développement de vos modules de Receiver.
Il y a plusieurs manières de récolter des informations du monde extérieur:
Nous avons donc fait évoluer l'architecture du Receiver et des modules accrochés au Receiver pour qu'ils puissent recevoir des informations des hôtes/clusters ainsi que leur checks associés à gérer.
Nous avons aussi permis que les traitements faits par les modules de Receiver puissent se répartir sur 1 ou plusieurs processus ( des workers ).
Il faut un nom pour votre module. Le nom doit respecter:
Dans cette documentation on le nommera NOMduMODULE
Nous suivons maintenant pour tout nouveau module la convention suivante: NOMduDEMON_module_NOMduMODULE |
Le module est installé via deux actions:
Il faut donc prendre dans le du package d'exemple et :
| Il est important de renommer TOUTES les parties du module, si votre module a encore des classes ayant le même nom que le module generic, alors il y aura des problème d'import du code par le daemon et le résultat sera incorrect. |
Dans le code livré par défaut, le nom du module est MODULE_CODE_NAME.
Pour que le module s'active il faut:
Important: Si vous avez besoin de l'inventaire des hôtes/clusters, il faut que le module soit configuré pour recevoir les données d'inventaires que sous souhaitez gérer via ce Receiver. Pour cela il faut utiliser les paramètres suivants:
Le module d'exemple a un fonctionnement très simple:
Exemple de communication avec le module via curl:
curl --data 'key=my_value' http://127.0.0.1:9000/my_api |
Il est important de bien lire les commentaires dans le code d'exemple avant toute modification.
Le code est divisés en deux parties:
Le code dans le module va être très limité, car la seule méthode que vous pouvez modifier/surcharger est get_raw_stats qui est utilisée pour les checks de supervision et le healthcheck.
Il est important de:
Le code dans le worker est celui où sera votre code métier ainsi que votre boucle principale d'actions.
Ici encore certaines règles s'appliquent afin s'assurer une stabilité dans le temps:
Les méthodes que vous pouvez surcharger sont multiples.
Méthodes surchargeables concernant le fonctionnement global du worker:
| ATTENTION: toutes les autres méthodes (exceptées init_worker_before_main qui est appelées avant le worker_main) sont faites dans des threads différents. Vous devez donc faire attention à l'accès concurrents de vos données. |
Les méthodes concernant l'inventaires des hôtes:
Dans le worker il est possible actuellement d'effectuer les commandes suivantes:
Toutes les commandes doivent avoir une forme telle que:
[EPOCH] NOM_COMMANDE;ARG1;ARG2;ARG3
Pour pousser un résultat d'hôte/cluster vers les Schedulers
Pour pousser un résultat de check vers les Schedulers
Pour créer une prise en compte sur un hôte/cluster
Pour créer une prise en compte d'élément check
Pour créer une période de maintenance sur un hôte/cluster
Pour créer une période de maintenance sur un check d'hôte/cluster