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:
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 actions suivantes:
Pour pousser un résultat d'hôte/cluster vers les schedulers il faut créer un objet PROCESS_HOST_CHECK_RESULT avec comme arguments:
Pour pousser un résultat de check vers les schedulers il faut créer un objet PROCESS_SERVICE_CHECK_RESULT avec comme arguments:
Pour créer une prise en compte d'élément hôte/cluster il faut créer un objet ACKNOWLEDGE_HOST_PROBLEM:
Pour créer une prise en compte d'élément check il faut créer un objet ACKNOWLEDGE_SVC_PROBLEM:
Pour créer une période de maintenance d'élément hôte/cluster il faut créer un objet SCHEDULE_HOST_DOWNTIME:
Pour créer une période de maintenance d'élément hôte/cluster il faut créer un objet SCHEDULE_SVC_DOWNTIME: