PHP Composer version 2.00
Je pensais migrer vers la version 2 de PHP Composer pour toutes les versions de Centreon, mais une erreur fatale lors de l'installation en mode Web, m'oblige à downgrader la version de PHP Composer pour l'instant pour la version 20.04.
Procédure valable pour la version 20.04
Il faut modifier la commande d'installation de PHP Composer comme ceci
php composer-setup.php --install-dir=/usr/bin --filename=composer --version=1.10.17
Procédure valable pour la version 19.10
Cette nouvelle version nécessite une nouvelle commande de mise à jour lorsque vous préparez l'installation de Centreon-Web. Comme je réalise l'installation de Centreon en mode root, il faut aussi annuler le mode interactif.
Actuellement seul le tutoriel Full Centreon 19.10 Buster est mis à jour. Si vous voulez néanmoins faire l'installation avec les tutoriels non mis à jour, modifiez la procédure comme ceci :
Ancienne procédure
Avant de continuer l'installation, installer PHP composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/bin --filename=composer
Lancer la commande dans le dossier d'installation de centreon-web-xxxx pour installer les dépendances php
composer install --no-dev --optimize-autoloader
Nouvelle procédure
Avant de continuer l'installation, installer PHP composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/bin --filename=composer
Depuis que composer est passé en version 2, vous devez lancer cette commande :
composer update -n
Lancer la commande pour installer les dépendances php
composer install --no-dev --optimize-autoloader --no-plugins -n
Améliorez vos notifications par mail
Lire plus…
Adaptez php-fpm à votre configuration
Lors de l'installation de Centreon avec les sources avec Debian, la configuration de php-fpm se fait avec les paramètres par défaut. Malheureusement, cette configuration s'avère vite insuffisante pour une utilisation intensive de Centreon.
Le fichier de log /var/log/php7.1-fpm.log nous indique assez rapidement, ce genre de message
[07-Nov-2018 14:56:02] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
Ce message indique que vous n'avez pas assez de processus pour php-fpm. Nous devrons donc augmenter cette valeur dans des proportions cohérentes par rapport à votre configuration.
Dans un premier temps, déterminez la mémoire vive utilisée par les différents processus (centengine, mysql, apache, etc) de votre serveur et estimez la valeur totale que vous pouvez allouer à php-rpm. Dans notre cas, nous prendrons comme valeur 1024 Mo de RAM.
Ensuite, déterminons la consommation par processus php-rpm avec cette commande (attention valable pour une distribution Debian pour le nom du processus) :
ps -ylC php-fpm7.1 --sort:rss
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 33 15825 15807 0 80 0 29556 109221 - ? 00:00:00 php-fpm7.1
S 33 15826 15807 0 80 0 30756 109281 - ? 00:00:00 php-fpm7.1
S 0 15807 1 0 80 0 47032 107672 - ? 00:00:00 php-fpm7.1
Les valeurs qui nous intéresse sont celles-qui correspondent à la colonne RSS. C'est la consommation en Ko de chaque processus. Pour obtenir la moyenne, vous pouvez lancer cette commande.
ps --no-headers -o "rss,cmd" -C php-fpm7.1 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
29M
Nous pouvons calculer le nombre de processus maximum que vous pourrez allouer à votre service php-fpm :
Mémoire allouée en ko / moyenne en ko d'un processus php-fpm
soit
1024/29=35,31 soit 35 processus maximum
Nous éditons le fichier de configuration php-fpm
vi /etc/php/7.1/fpm/pool.d/www.conf
La configuration par défaut est la suivante
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Nous allons configurer les différentes valeurs :
pm.max_children : la valeur maximum sera celle trouvée précédemment soit 35
Pour les autres valeurs, il n'y a pas de règle bien définie, je n'en ai pas trouvé. Nous dirons que pm.max_spare_servers ne peut être inférieur à pm.start_servers et ni supérieur à pm.max_children. Voici donc une proposition :
pm.max_children = 35
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
Pour optimiser la durée des processus et les fuites de mémoires, on peut configurer les valeurs suivantes :
pm.process_idle_timeout = 10s;
pm.max_requests = 500
Et je n'ai pas parlé du CPU qui a une importance évidente pour le traitement des processus…
Le bug de la page blanche...
Vous ne rencontrez aucune erreur, lors de l'installation en mode web mais lors de votre première connexion en admin, vous obtenez une magnifique page blanche.
Pour trouvez la cause de ce dysfonctionnement, rien de tel que de lire les logs du serveur Web. Pour la distribution Centreon, lancez cette commande :
tail /var/log/httpd/error_log
Pour une Debian
tail /var/log/apache2/error.log
Voici un extrait du résultat de la commande indiquant un problème du paramétrage du fuseau horaire pour le PHP avec le champ date.timezone invalide.
[Sun Sep 25 21:49:21.378713 2016] [:error] [pid 7974] [client 172.16.209.1:51267] PHP Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Invalid date.timezone value 'Europe/ Paris', we selected the timezone 'UTC' for now.' in /usr/share/centreon/www/class/centreonGMT.class.php:205\nStack trace:\n#0 /usr/share/centreon/www/class/centreonGMT.class.php(205): DateTime->__construct()\n#1 /usr/share/centreon/www/menu/Menu.php(172): CentreonGMT->getDate('Y/m/d G:i', 1474832961, '')\n#2 /usr/share/centreon/www/main.php(197): include_once('/usr/share/cent...')\n#3 {main}\n thrown in /usr/share/centreon/www/class/centreonGMT.class.php on line 205, referer: http://172.16.209.80/centreon/
[Sun Sep 25 21:49:22.215978 2016] [:error] [pid 7976] [client 172.16.209.1:51270] PHP Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Invalid date.timezone value 'Europe/ Paris', we selected the timezone 'UTC' for now.' in /usr/share/centreon/www/class/centreonGMT.class.php:205\nStack trace:\n#0 /usr/share/centreon/www/class/centreonGMT.class.php(205): DateTime->__construct()\n#1 /usr/share/centreon/www/include/common/javascript/autologoutXMLresponse.php(56): CentreonGMT->getDate('Y/m/d G:i', 1474832962, '')\n#2 {main}\n thrown in /usr/share/centreon/www/class/centreonGMT.class.php on line 205, referer: http://172.16.209.80/centreon/main.php?
En y regardant de plus près, on constate un espace supplémentaire entre le slash et Paris. Cet erreur de saisie n'est pas détectée lors de l'installation en mode Web de Centreon. Pour corriger ce bug, il suffit de modifier le champ date.timezone. Pour la distribution Centreon, vous devez modifier le fichier /etc/php.ini et pour Debian, vous devez modifier le fichier /etc/php5/apache2/php.ini.
Le format de la chaine de caractères du fuseau horaire doit être comme ceci sans espace entre le slash
Continent/Ville
Pour terminer, n'oubliez pas de relancez le serveur web apache. Pour la distribution Centreon
service httpd reload
Pour debian
service apache2 reload
Sources
Support des dates et heures
Liste des Fuseaux Horaires Supportés
Mise à jour Centron UI 2.5.4 vers 2.6.0
Centreon 2.5x et PHP sur Debian
Avis à tous les lecteurs, avant de m'écrire que vous ne pouvez pas modifiez votre configuration...
Depuis que la distribution Debian est passée en version 7.x (wheezy), l'interface Web Centreon fonctionne mal avec la version PHP 5.4 installée par défaut. Ceci est dû au framework utilisé qui n'est pas totalement compatible avec PHP 5.4. Malheureusement, il n'est pas prévu de mise à jour de cette interface, car les développeurs de Centreon travaillent d'arrache-pied à la nouvelle version prometteuse qui aura une toute nouvelle interface. Ce rappel concerne toutes les internautes qui veulent se lancer dans l'installation d'une supervision Centreon à base de Debian, n'installez pas la version PHP 5.4 avec Wheezy !
L'installation de Centreon ne vérifie pas la version du PHP et elle se termine sans problème. Le plus troublant, vous pouvez vous connecter et lancez le démarrage de la configuration. Votre supervision fonctionne ! Mais viennent ensuite les dysfonctionnements lorsque vous voulez ajouter, modifier vos hôtes et services. Voici un exemple simple d'un dysfonctionnement lors d'un ajout d'un hôte ci-dessous :
Si vous obtenez cet exemple de vue quand vous validez votre modification, ne cherchez pas ! Vous n'avez pas la bonne version de PHP.
Deux solutions s'offrent à vous :
- La première, la plus radicale, réinstaller votre supervision en configurant le gestionnaire de paquet APT comme indiqué dans cet article.
- La deuxième, la plus délicate, downgrader le PHP comme indiqué dans cette article http://blog.wpkg.org/2013/06/20/downgrading-to-php-5-3-on-debian-wheezy-7-0/
Cette deuxième solution évite la réinstallation de votre supervision, je viens de la tester. Merci à Clément pour avoir trouvé cette solution sur Internet