Shinken ne fournit pas de commandes natives pour sauvegarder ou restaurer une rétention. Cette page décrit le protocole à suivre pour effectuer ces opérations manuellement.
La procédure de sauvegarde et de restauration dépend du module de rétention utilisé par vos Scheduler :
Lorsque le module PickleRetentionFile est utilisé, la rétention est sauvegardée dans un fichier, situé par défaut dans le répertoire suivant : /var/lib/shinken/.
Ce chemin peut toutefois varier selon la configuration spécifique des modules PickleRetentionFile utilisés par les Scheduler ( voir la page Module PickleRetentionFile ( Rétention par fichier plat ) ).
Voici un exemple complet de nom de fichier de rétention Pickle :
/var/lib/shinken/retention.dat_--_realm--all_--_scheduler--scheduler-master_--_id--0.retention |
Pour sauvegarder les fichiers de rétention, il suffit de les copier vers l'emplacement choisi en veillant à préserver leur intégrité et leurs permissions :
cp -a /var/lib/shinken/retention.dat_--_realm--all_--_scheduler--scheduler-master_--_id--0.retention /root/retention_save/ |
Pour restaurer un fichier de rétention Pickle, il faut le copier dans le dossier /var/lib/shinken/ :
cp -a /root/retention_save/retention.dat_--_realm--all_--_scheduler--scheduler-master_--_id--0.retention /var/lib/shinken/ |
Après avoir restauré les fichiers de rétention, il faut redémarrer le Scheduler pour que les changements soient pris en compte :
service shinken-scheduler restart |
Lorsque le module MongodbRetention est utilisé, la rétention est sauvegardée dans la base shinken de MongoDB ( voir la page Module MongodbRetention ( Rétention en base de données centralisée par royaume ) ), au sein des collections retention_hosts_raw et retention_services_raw.
Il est impératif de sauvegarder et de restaurer les deux collections pour garantir l’intégrité de la rétention. |
Avant de procéder à la sauvegarde de la rétention, il est conseillé de redémarrer le Scheduler afin de forcer la mise à jour de la rétention et d’obtenir ainsi des données plus fraîches :
service shinken-scheduler restart |
Pour enregistrer la rétention, il faut lancer les deux commandes suivantes :
mongodump -d shinken -c retention_hosts_raw -o /root/retention_mongo/ ( + MONGO_DB_CONNECTION_OPTIONS ) |
mongodump -d shinken -c retention_services_raw -o /root/retention_mongo/ ( + MONGO_DB_CONNECTION_OPTIONS ) |
Dans le cas d'un cluster MongoDB, il faut s'assurer de communiquer avec un mongos. |
La commande crée les fichiers suivants :
Pour sauvegarder la rétention depuis un MongoDB sur le même serveur où les commandes sont lancées :
mongodump -d shinken -c retention_hosts_raw -o /root/retention_mongo/ mongodump -d shinken -c retention_services_raw -o /root/retention_mongo/ |
Il faut faire la sauvegarde en local sur la machine. Pour des raisons de sécurité, MongoDB écoute que sur l'interface locale ( localhost ). |
2025-06-04T03:58:27.264-0400 writing shinken.retention_services_raw to /root/retention_mongo/shinken/retention_services_raw.bson 2025-06-04T03:58:27.269-0400 writing shinken.retention_services_raw metadata to /root/retention_mongo/shinken/retention_services_raw.metadata.json 2025-06-04T03:58:27.272-0400 done dumping shinken.retention_services_raw (32 documents) |
Si la dernière ligne du retour de la commande, il y a écrit "(0 documents)" :
Avant d'effectuer la restauration de la rétention, il est conseillé d'éteindre le Scheduler :
service shinken-scheduler stop |
Pour restaurer la rétention, lancer la commande :
mongorestore --drop /root/retention_mongo/ ( + MONGO_DB_CONNECTION_OPTIONS ) |
Dans le cas d'un cluster MongoDB, il faut s'assurer de communiquer avec un mongos. |
Cette commande va restaurer dans un MongoDB local les données contenues dans le dossier /root/retention_mongo/ :
mongorestore --drop /root/retention_mongo/ |
Il faut faire la restauration en local sur la machine. Pour des raisons de sécurité, MongoDB écoute que sur l'interface locale ( localhost ). |
2025-06-04T04:22:19.606-0400 building a list of dbs and collections to restore from retention_mongo/ dir 2025-06-04T04:22:19.611-0400 reading metadata file from retention_mongo/shinken/retention_services_raw.metadata.json 2025-06-04T04:22:19.611-0400 restoring shinken.retention_services_raw from file retention_mongo/shinken/retention_services_raw.bson 2025-06-04T04:22:19.661-0400 reading metadata file from retention_mongo/shinken/retention_hosts_raw.metadata.json 2025-06-04T04:22:19.661-0400 restoring shinken.retention_hosts_raw from file retention_mongo/shinken/retention_hosts_raw.bson 2025-06-04T04:22:19.666-0400 restoring indexes for collection shinken.retention_services_raw from metadata 2025-06-04T04:22:19.700-0400 finished restoring shinken.retention_services_raw (32 documents) 2025-06-04T04:22:19.701-0400 restoring indexes for collection shinken.retention_hosts_raw from metadata 2025-06-04T04:22:19.702-0400 finished restoring shinken.retention_hosts_raw (2 documents) |
Si la dernière ligne du retour de la commande, il y a écrit "(0 documents)" :
Une fois la restauration terminée, il faut redémarrer le Scheduler :
service shinken-scheduler start |