Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  Monitoring et Gestion réseau unifiée: Z-Eye 1.2

 -  Août 2013 - 

Z-Eye est une solution libre basée sur plusieurs autres outils libres (netdisco, MRTG, icinga…) destinée à offrir une solution de supervision système, réseau et sécurité unifiée, tout en permettant la gestion complète d'un réseau.

En avril dernier était présenté la version 1.0 de Z-Eye. Depuis, elle a fait un bon bout de chemin, que ce soit en amélioration de code ou en modernisation de l'interface. De nouvelles fonctionnalités sont apparues afin d'améliorer le quotidien des techniciens et administrateurs gérant l'outil.

Mercredi 31 juillet Z-Eye est sortie dans sa version 1.2.

Le developpeur a choisi de zapper la présentation de la 1.1, qui n'est au final qu'une version de modernisation, n'apportant pas de nouveautés fonctionnelles importantes.

Pour rappel, Z-Eye s'appuie sur FreeBSD 9.1 et est codée à l'origine en PHP

Sommaire

Beaucoup d'améliorations ont été apportées durant ces deux dernières versions, visant à alléger la charge de l'interface web, mais également à moderniser le code, améliorer les performances globales et l'expérience utilisateur.

Service Z-Eye

Un nouveau service expérimental est apparu dans la version 1.1 destiné à remplacer les tâches cron faisant appel à divers scripts PHP. Ce service est développé en python (2.7). Bénéficiant ainsi des technologies de python telles que le multithreading, il a été possible de paralléliser beaucoup de tâches, augmentant la charge CPU sur le serveur mais diminuant énormément les temps de collecte (suivant les tâches cela peut aller de 1/2 à 1/50).
En 1.2 le service Z-Eye s'est étoffé puisqu'on lui a permis de faire disparaître 80% des tâches cron en service, et intègre deux nouveaux composants:

  • DatabaseUpgrader: un outil qui permet de mettre automatiquement la base de données à jour lors du lancement du service (après une mise à jour de la solution), ou bien de la demander à tout moment sans relancer un service en cours
  • DHCPManager: un outil de distribution de configuration DHCP, j'y reviendrai plus loin

Modernisation du code

PHP5

Beaucoup de code était écrit en PHP 4, basé sur mon expérience personnelle du PHP. Les constructeurs et classes ont été modernisées afin d'utiliser les constructeurs PHP5, classes abstraites et finales

Le code a été également aéré, et des commentaires ont été ajoutés là où cela s'avère nécessaire pour la compréhension du code. Un gros travail de normalisation de l'écriture est en cours, continuant pour la prochaine version 1.3. La libFSS (le coeur de développement de Z-Eye) a déjà été normalisée en profondeur, mais le plus gros reste à faire, sur la couche Z-Eye. Cela ne veut pas pour autant dire que le code est incompréhensible, bien au contraire !

Ajax, jQueryUI

jQuery et jQueryUI ont conquis le coeur du développement de Z-Eye. L'ancien code statique a été basculé sur une version dynamique, apportant plus de modernisme à l'application et allégeant le contenu des requêtes échangées entre serveur et clients.

On retrouve beaucoup de modules basés sur des onglets de type jQueryUI, mais également beaucoup de fenêtres de formulaires basées sur les popup jQueryUI.

Gestionnaire IP

Le gestionnaire IP est un tout nouveau module basé sur l'ancien module de collecte DHCP, permettant de gérer des DHCP UNIX de type ISC-DHCP.

Ce type de DHCP étant le plus répandu, il a été nécessaire d'apporter un soin tout particulier à sa configuration. Z-Eye sait gérer la majorité des configurations DHCP, mais ne gère pas leur partie générique (options globales).

En termes de fonctionnalités, on retrouvera dans l'IPM Z-Eye les fonctionnalités suivantes:

  • déclaration de serveurs DHCP : par le biais connexion SSH, hérité des version 1.0 et 1.1 ;
  • déclaration de clusters DHCP : notion propre à Z-Eye permettant de regrouper la configuration par ensemble. Pour ISC-DHCP, seuls deux membres sont autorisés, dû à la notion de failover peer ;
  • déclaration d'options DHCP : personnalisées, valuées et groupées, avec possibilité de les relier à des sous-réseaux ou des hôtes ;
  • déclaration de sous-réseaux DHCP : routeur, DNS principal, secondaire, durée de baux… avec ajout de quelques données administratives (vlan ID, alias et description) ;
  • gestion des IP par sous-réseaux : possibilité d'ajouter/exclure des plages d'adresses IP à la volée, possibiliter de mettre des données administratives sur les adresses IP (commentaire), réserver une adresse IP (nom d'hôte, adresse MAC) et lui attribuer des groupes d'options DHCP. Lors d'une réservation dans une plage dynamique, la plage est automatiquement coupée afin de respecter les best practices ISC ;
  • gestion fine des droits : suivant le même modèle que pour le gestionnaire de commutateurs, on retrouvera les droits suivants : lecture, gestion des serveurs, utilisation des outils avancés, gestion des (groupes d') options DHCP, gestion des ranges, des IP, des subnets… Ces droits peuvent être attribués de manière globale, et, pour certains, par sous-réseau.

Le service Z-Eye intègre également la partie permettant de pousser les configurations DHCP provenant de Z-Eye. Le service se connecte en SSH à chacun des serveurs et pousse la configuration dans des fichiers dédiés (chemin personnalisable). Il écrit également la valeur 1 dans un fichier de /tmp afin qu'un script puisse redémarrer le service DHCP local. Afin de ne pas redémarrer le service toutes les minutes, la configuration est comparée (hash md5) afin de savoir si elle doit être modifiée ou non.

Le délai de développement n'a malheureusement pas permis d'éliminer la tâche cron de collecte des données DHCP, néanmoins celle-ci devrait être éliminée pour la version 1.3, et intégrée au service Z-Eye (DHCPManager), permettant d'assurer une meilleur cohérence dans la collecte des données.

Plus d'informations sur le gestionnaire IP

Mises à jour logicielles

Entre temps, les logiciels libres utilisés ont évolué, apportant leurs lots de nouveautés et de fixes. On notera surtout:

  • Netdisco 1.3.1
  • Icinga 1.9.3
  • PERL 5.16.3
  • Apache 2.4.6

Le plus compliqué dans ces upgrades a été de devoir patcher netdisco afin de l'obliger à se construire avec Apache 2.4 (bien que mod_perl ne soit pas utilisé car pas compatible avec Apache 2.4), et de revoir le système de droits d'Apache, qui a changé depuis la version 2.2. L'upgrade a néanmoins permis de bénéficier de l'unification d'Apache MPM au sein d'Apache. Apache2.4 et MPM ont permis une amélioration notable des performances en terme de temps de réponse.

Vous trouverez la liste complète des logiciels utilisés dans cette version ici: http://z-eye.org/Liste_des_ports_%281.2%29

Correctifs

Hormis quelques correctifs d'affichage, Z-Eye était pénalisé par peu de bugs gênants :

  • quelques corrections sur les info-bulles ;
  • des corrections de stabilité sur différents modules ;
  • quelques problèmes de droits résolus ;
  • d'autres corrections plus ou moins intéressantes.

Performances

Plusieurs correctifs ont été ajoutés afin de mettre en cache divers éléments et améliorer ainsi les performances:

  • Les communautés SNMP sont désormais mises en cache au lieu d'être demandées pour chaque appel à une MIB ;
  • Le speed reporting lit le fichier de statut icinga au lieu de parser l'interface web ;
  • La modification d'un port de commutateur (via SNMP) ne modifie que les données nécessaires (excepté le trunk allowed vlan) ;
  • Les groupes de l'utilisateur sont mis en cache (optimisation système de droits) ;
  • Un appel SQL a été optimisé afin de ne demander que le strict minimum à la base de données.
  • Les performances de mise en cache SNMP ont été améliorées entre la version 1.1 et 1.2

Chiffres

Quelques chiffres concernant Z-Eye:

  • Nombre de fichiers PHP: 120
  • Nombre de fichiers Python: 18
  • Nombre de lignes de code totales: 33373 (sans lignes vide: 30564)
  • Nombre de lignes de code Python: 2183 (sans lignes vide: 1944)
  • Nombre de lignes de code PHP: 28471 (sans lignes vide: 26247)
  • Nombre de lignes de code CSS: 975 (sans lignes vide: 849)
  • Nombre de lignes de code JS: 1744 (sans lignes vides: 1524, environ 3/4 sont des JS externes)

Nombre de différences entre la version 1.0 et 1.2:

git diff --shortstat cd647fa2ce50b7c02d9337abce3e2d8379693fe1 126f982325f9aa18fee18021bdc1464cb47f31dd
 267 files changed, 29991 insertions(+), 22871 deletions(-)

Nombre de différences entre la version 1.1 et 1.2

git diff --shortstat 9fc3334bcba6c276105c2bd7e29a8bdbdbf90648 126f982325f9aa18fee18021bdc1464cb47f31dd
 141 files changed, 10998 insertions(+), 4455 deletions(-)

C'est à vous !

Toute suggestion, remarque ou idée est bienvenue, afin que chacun puisse apporter sa pierre à l'édifice.

Je cherche toujours quelques contributeurs au développement de l'outil (PHP/Python), ayant encore énormément d'idée afin d'étendre la portée de Z-Eye sur un réseau (j'insiste bien sur l'aspect réseau). Le développement devrait s'accélérer dans les prochains mois, ayant un peu plus de temps libre. Que ce soit un correctif, une fonction, une amélioration de code existant, toute contribution est la bienvenue !

Lire les commentaires

par Loïc Blot, Xavier Teyssier, NeoX, palm123, rewind, Pierre Jarillon

DLFP - Dépêches

LinuxFr.org

Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)


XZ et liblzma: Faille de sécurité volontairement introduite depuis au moins deux mois

 -  31 mars - 

Andres Freund, un développeur Postgres, s’est rendu compte dans les derniers jours que xz et liblzma ont été corrompus par l’un des mainteneurs du (...)