Vous êtes ici:

Menu

Le module cron de Centreon-Gorgone

upgrade-centreon2602015-04-22_09-26-55_PM
Le nouveau gestionnaire d'événements Centreon-Gorgone recèle de nombreux outils. Nous allons découvrir le module cron. Ce module est chargé par défaut, il permet d'exécuter des tâches à l'instar du cron Linux. Nous allons voir comment l'utiliser dans une plateforme Linux.
Tout d'abord, regardons de plus près l'organisation des dossiers de configuration de Centreon-Gorgone.
conf-gorgone
Si vous vérifiez le statut de Centreon-Gorgone, vous découvrirez les modules actifs dont le module cron (process 613) :

systemctl status gorgoned
● gorgoned.service - Centreon Gorgone
Loaded: loaded (/etc/systemd/system/gorgoned.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-10-12 00:07:07 CEST; 9h ago
Main PID: 416 (perl)
Tasks: 104 (limit: 2356)
Memory: 108.7M
CGroup: /system.slice/gorgoned.service
─ 416 /usr/bin/perl /usr/bin/gorgoned --config=/etc/centreon-gorgone/config.yaml --logfile=/var/log/centreon-gorgone/gorgone
─ 608 gorgone-nodes
─ 609 gorgone-statistics
─ 610 gorgone-action
─ 611 gorgone-engine
─ 612 gorgone-dbcleaner
613 gorgone-cron
─ 614 gorgone-httpserver
─ 615 gorgone-legacycmd
─1127 gorgone-proxy
─1128 gorgone-proxy
─1132 gorgone-proxy
─1136 gorgone-proxy
└─1143 gorgone-proxy

Voici la configuration par défaut de ce module. Le fichier est au format yaml, faites attention à la syntaxe. L'indentation doit se faire avec des espaces et avoir le même nombre d'espaces pour chaque ligne.
    - name: cron
package: "gorgone::modules::core::cron::hooks"
enable: true
cron: !include cron.d/*.yaml

Pour éviter de saisir les commandes dans ce fichier de configuration, une directive indique le chemin /etc/centreon-gorgone/config.d/cron.d. Il suffira de créer un fichier de configuration cron par commande. les fichiers, ainsi créés, seront exécuté par Centreon-Gorgone. Commençons par un exemple tout simple.
Créons le fichier test.yaml dans le dossier /etc/centreon-gorgone/config.d/cron.d. Nous allons créer une commande qui enregistrera la date courant dans le dossier /tmp toutes les minutes.
- id: echo_date
timespec: "* * * * *"
action: COMMAND
parameters:
- command: "date >> /tmp/date.log"
timeout: 10
keep_token: true

Voici l'explication de ces lignes.
id: nom de la commande (doit être unique)
timespec: configuration de la date et heure d'exécution semblable au cron Linux. Dans notre exemple toutes les minutes.
action: Type d'action dans notre cas c'est une commande
parameters -> command: la commande qui sera exécutée avec le user centreon-gorgone
parameters -> timeout: timeout pour éviter le blocage de l'application en cas de dysfonctionnement de la commande
keep_token: activation ou non de la commande.
Lorsque vous avez terminé l'édition, relancez Centreon-gorgone.
systemctl restart gorgoned

Vous pouvez vérifier la présence de ce fichier dans le dossier /tmp
cat /tmp/date.log
..
lundi 12 octobre 2020, 10:28:00 (UTC+0200)
lundi 12 octobre 2020, 10:29:00 (UTC+0200)
lundi 12 octobre 2020, 10:30:00 (UTC+0200)
lundi 12 octobre 2020, 10:31:00 (UTC+0200)
lundi 12 octobre 2020, 10:32:01 (UTC+0200)
..

et le fonctionnement dans le fichier de log
tail -f /var/log/centreon-gorgone/gorgoned.log
..
2020-10-12 10:33:00 - INFO - [cron] Launching job 'echo_date'
..

Nous venons de vérifier le fonctionnement du module cron, nous passons à un cas concret. Je vous propose de synchroniser le dossier des plugins historiques des pollers existant par rapport au poller Central. En effet, ce dossier comprend généralement des plugins qui ne sont pas repris par les plugins Centreon, des fichiers de commande de notification ou des scripts de type eventhandler. Nous allons créer un fichier de configuration qui synchronisera le dossier du Central vers les pollers.
Nous utiliserons le user centreon-gorgone pour faire le transfert de fichier par scp. Nous allons créer un échange de clé entre le Central et un poller distant. Tout d'abord, il faut initialiser le mot de passe de centreon-gorgone sur le poller distant.
passwd centreon-gorgone

Sur le serveur Central, nous créons la clé publique/privée et la déployons sur le poller distant.
su - centreon-gorgone
ssh-keygen -t rsa
ssh-copy-id centreon-gorgone@<IP POLLER DISTANT>

Il faut adapter le dossier /usr/lib/nagios/plugins ou /usr/lib64/nagios/plugins pour que le user centreon-gorgone puisse copier les fichiers et sous-dossiers. Sur le poller distant, lancez les commandes suivantes (adapter le dossier des plugins en fonction de votre installation) :
chmod -R 775 /usr/lib/nagios/plugins
chown -R root:centreon /usr/lib/nagios/plugins

remettre les droits particuliers sur certaines sondes en fonction des besoins pour éviter un problème d'exécution.
chmod u+s /usr/lib/nagios/plugins/check_icmp 
chmod u+s /usr/lib/nagios/plugins/check_dhcp
chown root:root /usr/lib/nagios/plugins/check_icmp
chown root:root /usr/lib/nagios/plugins/check_dhcp

Nous allons créer notre fichier de synchro dans le dossier /etc/centreon-gorgone/config.d/cron.d. J'ai choisi de créer un fichier par poller distant, je ne sais pas si c'est la meilleure option mais elle me convient.
création du fichier /etc/centreon-gorgone/config.d/cron.d/synchro_poller1.yaml
- id: sync_poller1
timespec: "*/30 8-19 * * *"
action: COMMAND
parameters:
- command: "scp -r /usr/lib/nagios/plugins/* centreon-gorgone@192.168.1.33:/usr/lib/nagios/plugins"
timeout: 10
keep_token: true

Explication du script
L'id du cron sera sync_poller1. Nous paramétrons la commande toutes les 30 minutes entre 8 h 00 et 19 h 00 tous les jours. La commande scp va copier tout le dossier /usr/lib/nagios/plugins vers le poller distant. Attention, il est important que la configuration du cron soit répétitive avec la syntaxe */valeur. Pour vous aider dans la construction de votre cron, vous pouvez utiliser le lien suivant crontab guru. Merci à @cgagnaire pour son coup de main 😉
Vérification
Redémarrez centreon-gorgone
systemctl restart gorgoned

Il est possible de vérifier le fonctionnement dans le fichier de log /var/log/centreon-gorgone/gorgoned.log
2020-10-13 10:48:00 - INFO - [cron] Launching job 'sync_poller1'

Les modifications effectuées sur le Central seront répercutées sur le poller à intervalles réguliers. Si vous avez plusieurs pollers, il suffira de dupliquer le fichier et de le modifier en conséquence.

blog comments powered by Disqus
 Vous êtes ici: