Nous allons découvrir quelques aspects de l'utilitaire CentCTL. Notre but étant de migrer une configuration spécifique pour superviser un vieux serveur 2003 ( pour info je n'avais sous la main qu'un 2008, mais la démarche est la même ) sur une nouvelle plateforme avec un minimum d'effort.
1 Plantons le décor
La configuration est installée sur une plateforme 20.10.x. On supervise un serveur 2003 équipé d'un agent NSClient 0.39 et ne pouvant migrer sur la version 0.5x. Il faudra donc récupérer le maximum de configuration spécifique : commandes de vérification, modèles d'hôte et de service. Voici d'ailleurs ce qu'il faudra récupérer.
1.1 Les commandes de vérifications
1.2 Le modèle d'hôte
1.3 Les modèles de services
2 Exportation de la configuration
Si vous ne connaissez pas centctl, je vous conseille de lire ce tutoriel CentCTL, administrez facilement votre Centreon en ligne de commande. Je pars du principe que votre fichier de configuration centctl.yaml est bien configuré. Nous commencerons par l'exportation des commandes. La recherche des commandes se fera avec le suffixe old donc en regex on notera old$.
./centctl --server=centos export command -r 'old$' -t check -f confignrpe3.csv
Le paramètre -r représente une recherche en regex, le paramètre -t demande le type de commande à exporter et le paramètre -f est utilisé pour indiquer le fichier d'exportation.
Nous continuons avec le template d'hôte. Nous rechercherons le suffixe 03-NRPE-custom et nous utiliserons le paramètre append pour ajouter l'exportation dans le même fichier.
./centctl --server=centos export template host -r '03-NRPE-custom$' --append -f confignrpe3.csv
Et nous terminerons avec les modèles de service en recherchant le suffixe NRPE-03-custom.
./centctl --server=centos export template service -r 'NRPE-03-custom$' --append -f confignrpe3.csv
Nous avons notre fichier confignrpe3.csv qui nous servira à importer toute la configuration sur la nouvelle plateforme. Malheureusement, un bug de l'API Rest de Centreon provoquerait une erreur lors de l'exportation pour les macros personnalisées. SI nous lançons cette recherche dans le fichier :
cat confignrpe3.csv | grep -e "\"\$_SERVICE" modify,templateService,"OS-Windows-Memory-NRPE-03-custom",macro,"$_SERVICEWARNING$|80%|0|" modify,templateService,"OS-Windows-Memory-NRPE-03-custom",macro,"$_SERVICECRITICAL$|90%|0|" modify,templateService,"OS-Windows-Memory-NRPE-03-custom",macro,"$_SERVICEEXTRAOPTIONS$|ShowAll=long type=physical|0|" modify,templateService,"OS-Windows-Swap-NRPE-03-custom",macro,"$_SERVICEWARNING$|80%|0|" modify,templateService,"OS-Windows-Swap-NRPE-03-custom",macro,"$_SERVICECRITICAL$|90%|0|" modify,templateService,"OS-Windows-Swap-NRPE-03-custom",macro,"$_SERVICEEXTRAOPTIONS$|ShowAll=long type=virtual type=paged type=page|0|" modify,templateService,"OS-Windows-Disks-NRPE-03-custom",macro,"$_SERVICEWARNING$|10%|0|" modify,templateService,"OS-Windows-Disks-NRPE-03-custom",macro,"$_SERVICECRITICAL$|5%|0|" modify,templateService,"OS-Windows-Disks-NRPE-03-custom",macro,"$_SERVICEEXTRAOPTIONS$|CheckAll FilterType=FIXED|0|" modify,templateService,"OS-Windows-Uptime-NRPE-03-custom",macro,"$_SERVICEWARNING$|1d|0|" modify,templateService,"OS-Windows-Uptime-NRPE-03-custom",macro,"$_SERVICECRITICAL$|1h|0|" modify,templateService,"OS-Windows-Cpu-NRPE-03-custom",macro,"$_SERVICEWARNING$|80|0|" modify,templateService,"OS-Windows-Cpu-NRPE-03-custom",macro,"$_SERVICECRITICAL$|90|0|" modify,templateService,"OS-Windows-Cpu-NRPE-03-custom",macro,"$_SERVICEEXTRAOPTIONS$|time=5m time=1m time=30s|0|"
Les macros ne devraient pas avoir le préfixe $_SERVICE. Donc, avant de passez à l'exportation, nous allons modifier le fichier.
sed -i -e "s/\"\$_SERVICE/\"/g" confignrpe3.csv sed -i -e "s/\$|/|/g" confignrpe3.csv
Il est possible de lancer les commandes en une seule commande comme ceci.
sed -i -e "s/\"\$_SERVICE/\"/g" -e "s/\$|/|/g" confignrpe3.csv
Si vous recherchez la chaine précédente $_SERVICE, la réponse doit être nulle.
3 Exportation de la configuration
Maintenant, nous allons injecter cette configuration dans la nouvelle plateforme.
./centctl --server=centreon2104 import -f confignrpe3.csv
Nous aurons des warnings mais cela ne remet pas en cause notre configuration.
3.1 Ajout du serveur sur la nouvelle configuration
Il nous reste à configurer notre hôte dans l'interface Web de la nouvelle plateforme.
Après application de la configuration Centreon, notre serveur est prêt à être supervisé.
Néanmoins, il faudra vérifier que le client NRPE sur le Central correspond à celui de l'ancienne plateforme. Dans la négative, vous risquez d'avoir ce type d'erreur.
Après cette vérification, il faudra aussi ajouter le nouveau serveur dans la configuration de nsc.ini (version 0.39) avec le paramètre allowed_hosts
Si vous avez réalisé les bons paramétrages, votre supervision devrait être opérationnelle. Le status Critical de l'Uptime étant normal, la VM étant démarrée depuis peu.
C'est terminé pour ce petit tutoriel, l'utilitaire centctl vous permet d'exporter facilement une configuration spécifique afin de l'importer dans une nouvelle configuration.