romnvll / Open-Centreon-Discovery

Projet de découverte automatique pour centreon
Apache License 2.0
9 stars 3 forks source link

Php 8.0 / Centreon 21.10 #6

Closed Arawn777 closed 2 years ago

Arawn777 commented 2 years ago

Bonjour!

Je fais un peu de recherche pour upgrader et améliorer une plateforme Centreon. Il s'avère que ce projet OCD est vraiment super, j'ai testé avec Centreon 21.04 sous Rocky Linux et ça se passe plutôt bien.

En revanche, je n'ai pu faire fonctionner le scan avec la version 21.10 de Centreon. Lorsque je clique sur le bouton scan, je suis redirigé directement sur une page blanche... La 21.10 requérant php 8.0, je suppose une incompatibilité avec le module, la syntaxe des fichiers php dans une version antérieure lui poserait-il un problème?

Est-il prévu une réécriture du module en php 8.0?

Merci d'avance !

romnvll commented 2 years ago

Hello, Merci pour ton retour ! Je pensais que j'étais le seul à l'utiliser !!! En effet, je n'ai pas essayé la version 21.10. Tu me dis que c'est php8?

Je n'ai pas la plateforme sous la main.

Est-ce que tu pourrais éditer le fichier step1.php (ou step2.php) et decommenter les premières lignes s'il te plaît. C'est un mode debug. Relance un scan et dis moi si tu vois des erreurs. Quand as tu installé OCD?

Bonne journée

Le ven. 12 nov. 2021 à 14:30, Arawn777 @.***> a écrit :

Bonjour!

Je fais un peu de recherche pour upgrader et améliorer une plateforme Centreon. Il s'avère que ce projet OCD est vraiment super, j'ai testé avec Centreon 21.04 sous Rocky Linux et ça se passe plutôt bien.

En revanche, je n'ai pu faire fonctionner le scan avec la version 21.10 de Centreon. Lorsque je clique sur le bouton scan, je suis redirigé directement sur une page blanche... La 21.10 requérant php 8.0, je suppose une incompatibilité avec le module, la syntaxe des fichiers php dans une version antérieure lui poserait-il un problème?

Est-il prévu une réécriture du module en php 8.0?

Merci d'avance !

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBRFTB77DCLOS2YLPJ3ULUJGTANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Arawn777 commented 2 years ago

Alors je teste OCD depuis hier seulement, j'ai monté un petit labo sur des vm... Je suis stagiaire (autrement dit un bébé dans l'IT) dans une boite d'infogérance qui ne fait que du logiciel libre, et mon sujet c'est la R&D sur Centreon... Et il apparait que ton module est une bonne alternative à la licence Centreon nécessaire pour profiter de leur module d'autodiscover.

Alors tu penses bien qu'une solution free, open-source, viable, pour passer en en prod, c'est le top :D

Pour l'histoire de php8 peut-être que je me trompe, j'ai pas assez d'expérience pour affirmer quoi que ce soit.

Bon j'ai fais comme tu as dis sur step1, j'obtiens ça:

Fatal error: Uncaught Error: Non-static method Net_IPv4::parseAddress() cannot be called statically in /usr/share/discovery/classes/Scan.class.php:27 Stack trace: #0 /usr/share/discovery/step1.php(67): Scan->__construct() #1 {main} thrown in /usr/share/discovery/classes/Scan.class.php on line 27

Et là, c'est le drame...

romnvll commented 2 years ago

Ha oui ça ressemble à une incompatibilité php8. Merci pour ton retour en tout cas . Je vais voir comment fixer le problème

Arawn777 commented 2 years ago

Okay, merci de ta réponse! Pour une fois que c'est pas un problème de couche 8 de ma part...

Bonne continuation dans ton projet :)

romnvll commented 2 years ago

j'ai fait une modification, peux tu faire un git pull s'il te plait, et me dire si ça fonctionne? merci

Arawn777 commented 2 years ago

Salut!

J'ai testé et j'obtiens ce code d'erreur:

Warning: SNMP::walk(): Error in packet at 'HOST-RESOURCES-MIB::hrSWRunName': No more variables left in this MIB View (It is past the end of the MIB tree) in /usr/share/discovery/classes/Scan.class.php on line 111

Fatal error: Uncaught TypeError: array_unique(): Argument #1 ($array) must be of type array, bool given in /usr/share/discovery/classes/Scan.class.php:112 Stack trace: #0 /usr/share/discovery/classes/Scan.class.php(112): array_unique() #1 /usr/share/discovery/step1.php(69): Scan->Scan() #2 {main} thrown in /usr/share/discovery/classes/Scan.class.php on line 112

romnvll commented 2 years ago

Merci pour ton retour . C'est curieux, car normalement, le programme effectue un walk sur cette oid 1.3.6.1.2.1.25.4.2.1.2 que si c'est un linux ou windows . Peux-tu me donner le résultat d'un get sur cette OID ?

1.3.6.1.2.1.1.1.0

Tu dois avoir un équipement qui retourne windows ou linux et qui n'a pas la branche 1.3.6.1.2.1.25.4.2.1.2 . c'est quel type d'équipement que tu scannes ?

Le lun. 15 nov. 2021 à 09:52, Arawn777 @.***> a écrit :

Salut!

J'ai testé et j'obtiens ce code d'erreur:

Warning: SNMP::walk(): Error in packet at 'HOST-RESOURCES-MIB::hrSWRunName': No more variables left in this MIB View (It is past the end of the MIB tree) in /usr/share/discovery/classes/Scan.class.php on line 111

Fatal error: Uncaught TypeError: array_unique(): Argument #1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 ($array) must be of type array, bool given in /usr/share/discovery/classes/Scan.class.php:112 Stack trace: #0 /usr/share/discovery/classes/Scan.class.php(112): array_unique() #1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 /usr/share/discovery/step1.php(69): Scan->Scan() #2 https://github.com/romnvll/Open-Centreon-Discovery/pull/2 {main} thrown in /usr/share/discovery/classes/Scan.class.php on line 112

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6#issuecomment-968665427, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBTK5ETBQ6ZUITDSMIDUMDC6DANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Arawn777 commented 2 years ago

Résultat: SNMPv2-MIB::sysDescr.0 = STRING: Linux client_rocky 4.18.0-305.25.1.el8_4.x86_64 #1 SMP Tue Nov 2 10:32:37 UTC 2021 x86_64

Je scan une VM. J'ai laissé les ouvertures de MIB par défaut dans mon snmpd.conf: .1.3.6.1.2.1.1 .1.3.6.1.2.1.25.1.1

J'ai aucun soucis avec Centreon 21.04, l'os est parfaitement détecté et l'intègre bien à la plateforme, mais avec ta modif pour la 21.10 j'ai l'erreur que je t'ai cité dans mon précédent message.

Je testé en rajoutant manuellement l'oid 1.3.6.1.2.1.25.4.2.1.2 dans mon snmpd.conf, et j'obtiens quand même le même message d'erreur. Que ce soit en v1 ou v2c.

romnvll commented 2 years ago

Merci pour tes retours ! Je vais installer la 21.10 !!! je te tiens au courant

Le lun. 15 nov. 2021 à 11:47, Arawn777 @.***> a écrit :

Résultat: SNMPv2-MIB::sysDescr.0 = STRING: Linux client_rocky 4.18.0-305.25.1.el8_4.x86_64 #1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 SMP Tue Nov 2 10:32:37 UTC 2021 x86_64

Je scan une VM. J'ai laissé les ouvertures de MIB par défaut dans mon snmpd.conf: .1.3.6.1.2.1.1 .1.3.6.1.2.1.25.1.1

J'ai aucun soucis avec Centreon 21.04, l'os est parfaitement détecté et l'intègre bien à la plateforme, mais avec ta modif pour la 21.10 j'ai l'erreur que je t'ai cité dans mon précédent message.

Je testé en rajoutant manuellement l'oid 1.3.6.1.2.1.25.4.2.1.2 dans mon snmpd.conf, et j'obtiens quand même le même message d'erreur. Que ce soit en v1 ou v2c.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6#issuecomment-968764573, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBSI575DNXQEBPRA6A3UMDQM3ANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Arawn777 commented 2 years ago

Merci à toi d'être super réactif.

J'attends de tes nouvelles. Bon courage :)

romnvll commented 2 years ago

Peux tu ajouter un @ devant $servicesSNMP = $snmp->walk("1.3.6.1.2.1.25.4.2.1.2");

ce qui donne donc : @$servicesSNMP = $snmp->walk("1.3.6.1.2.1.25.4.2.1.2");

dans le fichier classes/Scan.class.php

s'il te plait ?

Merci

Le lun. 15 nov. 2021 à 12:04, Arawn777 @.***> a écrit :

Merci à toi d'être super réactif.

J'attends de tes nouvelles. Bon courage :)

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6#issuecomment-968782172, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBT6GCFLPKVCRJNZQQTUMDSK7ANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Arawn777 commented 2 years ago

Maintenant j'ai ça !

Fatal error: Uncaught TypeError: array_unique(): Argument #1 ($array) must be of type array, bool given in /usr/share/discovery/classes/Scan.class.php:112 Stack trace: #0 /usr/share/discovery/classes/Scan.class.php(112): array_unique() #1 /usr/share/discovery/step1.php(69): Scan->Scan() #2 {main} thrown in /usr/share/discovery/classes/Scan.class.php on line 112

romnvll commented 2 years ago

c'est curieux, quand on fait F5, au bout d'un moment ça fonctionne . C'est le SNMP qui retourne FALSE, il faut que je trouve pourquoi ....

Le lun. 15 nov. 2021 à 14:55, Arawn777 @.***> a écrit :

Maintenant j'ai ça !

Fatal error: Uncaught TypeError: array_unique(): Argument #1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 ($array) must be of type array, bool given in /usr/share/discovery/classes/Scan.class.php:112 Stack trace: #0 /usr/share/discovery/classes/Scan.class.php(112): array_unique() #1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 /usr/share/discovery/step1.php(69): Scan->Scan() #2 https://github.com/romnvll/Open-Centreon-Discovery/pull/2 {main} thrown in /usr/share/discovery/classes/Scan.class.php on line 112

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6#issuecomment-968933870, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBRR7TY6VVKHZLEXLP3UMEGO7ANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Arawn777 commented 2 years ago

Ligne 112 de Scan.class.php si on remplace array_unique par array ça fonctionne :)

Arawn777 commented 2 years ago

Autre soucis, cette fois pour le scan en tâche de fond. Avant de mettre ça dans le cron j'ai testé la commande directement en la tapant dans mon shell: cd /usr/share/discovery && /usr/bin/php -q /usr/share/discovery/backGroundScan.php

Résultat: PHP Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Je suis allé dans Scan.class.php et ligne 47 : if ($this->snmpVersion == "2c") {

J'ai remplacé "2c" par "2", du coup le scan fonctionne quand je le lance en ligne de commande.

romnvll commented 2 years ago

MERCI BEAUCOUP ! Dès que j'ai un peu de temps, je vérifie tout ça !

Le lun. 15 nov. 2021 à 16:34, Arawn777 @.***> a écrit :

Autre soucis, cette fois pour le scan en tâche de fond. Avant de mettre ça dans le cron j'ai testé la commande directement en la tapant dans mon shell: cd /usr/share/discovery && /usr/bin/php -q /usr/share/discovery/backGroundScan.php

Résultat: PHP Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Je suis allé dans Scan.class.php et ligne 47 : if ($this->snmpVersion == "2c") {

J'ai remplacé "2c" par "2", du coup le scan fonctionne quand je le lance en ligne de commande.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6#issuecomment-969030476, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBVTBKKFWXMATCNAWN3UMESCBANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

romnvll commented 2 years ago

Je n'ai pas trouvé de bug sur cette partie du scan hors ligne. j'ai fais des modifications, peux tu essayer de supprimer ton dossier discovery (backup du fichier config.php ) . et de refaire la procédure d'installation ?

Arawn777 commented 2 years ago

J'ai refais l'install.

Toujours le même problème quand j’exécute la commande:

cd /usr/share/discovery && /usr/bin/php -q backGroundScan.php

PHP Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Le problème vient du fait que le code attend 2 et non 2c dans la version snmp

Comme dans le fichier config.php, les exemples que tu as mis sont en 2c au lieu de 2.

Par contre je n'ai plus l'erreur de la ligne 112 dont t'ai parlé avant. (le array_unique passe bien cette fois?? pas compris mais bon tant mieux, j'ai du mettre un caractère par mégarde dans le code quand je farfouillais =/ couche 8 quand tu nous tiens...)

D'ailleurs en passant pour la 21.10, le fichier de conf pour Apache sous Centos 8 / Rocky Linux se met dans /etc/httpd/conf.d/discovery.conf et plus dans /opt/... Le service n'est plus httpd24-httpd mais juste httpd

Et du coup dans le fichier de conf de php, les chemins /var/opt/... ne sont plus d'actualité.

Pour info j'ai pour projet là de monter une maquette réseau sous GNS 3 et tester ton module avec plein d'équipements divers et variés, je vais bien m'amuser :)

romnvll commented 2 years ago

Oui, j'ai corrigé le array_unique !!

en revanche, c'est étrange que tu sois obligé de changer 2c en 2, car le scan attend du 2c if ($this->snmpVersion == "2c") {

qui provient du fichier config.php $config['backGroundScan'][0] = array("network" => "192.168.88.0/24", "community"=>"xxxx", "version"=>"2c" );

Pour la documentation ... Si tu écris quelque chose pour centos 8, je suis preneur, car je ne sais pas si centreon va continuer à se développer sur centos ...

Un grand merci pour tes retours

Le mar. 16 nov. 2021 à 16:13, Arawn777 @.***> a écrit :

J'ai refais l'install.

Toujours le même problème quand j’exécute la commande: cd /usr/share/discovery && /usr/bin/php -q backGroundScan.php

PHP Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Fatal error: Uncaught Error: Call to a member function get() on null in /usr/share/discovery/classes/Scan.class.php:58 Stack trace:

0 /usr/share/discovery/backGroundScan.php(27): Scan->Scan()

1 https://github.com/romnvll/Open-Centreon-Discovery/pull/1 {main}

thrown in /usr/share/discovery/classes/Scan.class.php on line 58

Le problème vient du fait que le code attend 2 et non 2c dans la version snmp

Comme dans le fichier config.php, les exemples que tu as mis sont en 2c au lieu de 2.

Par contre je n'ai plus l'erreur de la ligne 112 dont t'ai parlé avant. (le array_unique passe bien cette fois?? pas compris mais bon tant mieux, j'ai du mettre un caractère par mégarde dans le code quand je farfouillais =/ couche 8 quand tu nous tiens...)

D'ailleurs en passant pour la 21.10, la fichier de conf pour Apache sous Centos 8 / Rocky Linux se met dans /etc/httpd/conf.d/discovery.conf et plus dans /opt/... Le service n'est plus httpd24-httpd mais juste httpd

Et du coup dans le fichier de conf de php, les chemins /var/opt/... ne sont plus d'actualité.

Pour info j'ai pour projet là de monter une maquette réseau sous GNS 3 et tester ton module avec plein d'équipements divers et variés, je vais bien m'amuser :)

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/romnvll/Open-Centreon-Discovery/issues/6#issuecomment-970370304, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK7SBUCWCKKWBMZPA334YTUMJYJ5ANCNFSM5H43FQ6A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

romnvll commented 2 years ago

Il manque la documentation pour PHP8, mais les problèmes semblent être résolus

Arawn777 commented 2 years ago

En effet, comme j'avais mis 2 dans le config forcément le Scan attendais 2 aussi. Avec 2c partout en effet ça marche bien :)

Alors pour la doc, j'ai prévu d'écrire quelque chose en effet. Ce sera sous Rocky Linux 8.4 (au final même combat que CentOS 8). Vu la tournure qu'a pris CentOS en effet je ne pense pas que Centreon continue sous cet os. Par contre la configuration de Centreon est la même sous Oracle 8 / Rocky Linux 8 que sous CentOS 8 donc je pense que finalement les prochaines versions continueront d'aller en ce sens. On sera fixé pour la 22.04 :p

Je te donnerai le lien quand j'aurais publié mon article pas de soucis, mais ça va demander encore du temps, comme je t'ai dis j'ai une batterie de tests à faire sur une plus grande échelle avec gns3.

Sinon chose étrange, j'ai lancé un scan manuel en ayant laissé le mode debug de step1. Je détecte bien mon hôte et son os mais il me sort quand même un message d'erreur concernant la ligne 111 de Scan :

Warning: SNMP::walk(): Error in packet at 'HOST-RESOURCES-MIB::hrSWRunName': No more variables left in this MIB View (It is past the end of the MIB tree) in /usr/share/discovery/classes/Scan.class.php on line 111

Le problème est que l'oid .1.3.6.1.2.1.25.4.2.1.2 n'a pas de vue ouverte configurée par défaut dans le snmpd.conf. Ce qui peut être problématique d'aller ouvrir une a une les MIB sur les machines d'un parc, surtout si tu commences à en avoir un sacré paquet.

En revanche, l'oid .1.3.6.1.2.1.1.1.0 permet tout autant la détection de l'OS et se sert des ouvertures de mib par défaut. J'ai testé en remplaçant l'oid de la ligne 111 de Scan, et ça détecte bien mon os et ne revoie pas de message d'erreur.

Après je ne suis pas expert dans le domaine, y a t il une raison particulière pour utiliser .1.3.6.1.2.1.25.4.2.1.2 ?