Eh bien ! Je ne sais pas comment vous
êtes arrivés là, mais une chose qui est
sûre
c'est que le hasard y est pour beaucoup ...
Bon ben, puisque vous êtes là, je ne vais pas
être
impoli et vous présenter votre camarade de jeux : FEDSnmp.
C'est un logiciel écrit/codé/torturé
en Perl dont
le but originel était d'effectuer de la supervision
très
simple de PC ou switchs ou routeurs. Ensuite il a
évolué
pour
devenir plus complet.
Sommaire
:
- Dernières
infos
- Tout d'abord
quelques captures d'écrans :
- Les
étapes du projet :
- Histoire
de la frustration d'un ingénieur
télécoms et
réseaux
- Ce que
fais FEDSnmp et ce qu'il ne fait pas par rapport à la
plupart
des outils de supervision :
- Comment se
procurer FEDSnmp ? :
- Comment
installer FEDSnmp ? :
- Introduction
rapide à l'utilisation de FEDSnmp (de la page Surv.html) :
- Sous
quelle licence se trouve FEDSnmp ? Quel est son coût ? :
- Me
contacter :
Dernières
infos
25/03/2008
Je ne peux tester en ce moment le logiciel car
l'environnement de production sur lequel se déroule le test est
fortement instable. Tester un logiciel sur celui-ci risquerait
d'empirer les choses. Wait & see une ou 2 semaines encore avant de
reprendre les tests ... Au pire, je prendrai un autre environnement de
production pour les tests (mais cela me demande de reprendre toutes les
conf :'( ).
27/02/2008
Version 0.8 rc2
Retour d'expérience des premiers tests :
--> Le fichier Historique.txt grossit trop vite ==> travail sur
Historique.pm. Désormais seuls les changements d'états et
les mesures de compteurs sont enregistrés. Quelques corrections
également dans le module.
--> Les scanneurs ne relèvent pas les compteurs ==>
problème avec l'utilisation de la nouvelle lib SNMP. J'ai
retrouvé le paquet pour installer l'ancienne et j'ai recode
SurvScan.pl pour utiliser cette dernière.
Dans AlarmeChgt.pm, on écrivait le résultat dans un
fichier. Cela a été supprimé étant
donné que maintenant cela est stocké dans Historique.txt.
En revanche, la génération de la page html pour
SurvAffich.pl est gardée.
Voir le fichier README pour connaître toutes les corrections qui
ont réalisées.
25/02/2008
Version 0.8 rc1
C'est parti pour le test grandeur nature !
L'objectif est de réussir à faire tourner le bouzin 15
jours d'affilés sans bug. A chaque bug trouvé, on corrige
et on repart pour 15 jours.
24/02/2008
Version 0.8 béta 6
Dernière version avant le grand saut dans le
monde réel ...
Préparation de la page que vous lisez pour
mettre à jour les explications suite à la sortie
prochaine de FEDSnmp v0.8.
22/02/2008
Version 0.8 béta 5
Ca avance, ca avance. SurvScan.pl est, pour ainsi
dire, terminé. Les seuls cas où j'aurai à revenir
dessus seraient suite à une détection de code ou la
nécessité de réaliser quelques modifications suite
à des changements provenant de d'autres modules. Acquit.pl, la
console, et start.sh sont dans le même cas. SurvAffich.pl est
bien avancé également. Je pense que l'on peut
espérer la version 0.8 en test pour début mars et la
version testée fin mars (compter 15 jours de tests plus les
vacances !).
20/02/2008 :
Version 0.8 béta 4
A recoder beaucoup de choses dans le scanneur, j'ai
revu entièrement le fonctionnement. On n'a plus plusieurs
scanneurs qui se synchronisent à l'aide de verrous, le tout
piloté par SurvScan qui synchronise également SurvAffich.
L'utilisation des threads permet de lancer les scanneurs, quel que soit
leurs nombres, sans problème de synchronisation. CEla va donc
impacter SurvAffich car les données ne seront plus
passées de la même manière à SurvAffich.
03/02/2008 :
Version 0.8 béta 3
Ca avance, ca avance. J'ai revu le module de scan
car le module SNMP installé sous GNU/Linux Debian n'est plus par
défaut Net::SNMP, mais SNMP. Cela implique de gros changements
dans le codage car biensûr les primitives ne sont plus les
mêmes :-@ Cette mauvaise "blague" m'oblige à reprendre pas
mal de choses dans les scanneurs. Le problème est alors pour
ceux qui installent maintenant FEDSnmp sur Debian Etch :
les versions <=
0.7 utilisent Net::SNMP et non pas SNMP. Les primitives n'étant
plus les mêmes, cela ne permet plus aux scanneurs de FEDSnmp de
fonctionner. Il faut donc installer Net::SNMP à
la main en allant chercher les sources sur www.cpan.org. Pour toute
demande d'aide sur la manip, m'envoyer un email.
21/12/2007 :
Version 0.8 béta1
Ca faisait
trèèèèès longtemps que je n'avais
touché au code. J'ai fais du nettoyage et je me suis surtout
remis en tête le fonctionnement de la bête. Bientôt
les tests.
20/04/2006 :
Version 0.7
La foule est en délire, les mains se
lèvent, les trompettes sonnent et les majorettes se
trémoussent ... la version 0.7 est sortie !
Tout
d'abord
quelques captures d'écrans :
Version 0.3 :
Page d'accueil première
partie (états
des groupes de niveau 1).
Page d'accueil deuxième
partie (listing sans
classement des machines surveillées).
Etats des groupes de niveau 2
étant
sous-niveau du groupe 1 appellé France.
Etats des machines du "niveau machines"
(sous-niveau
du groupe 5).
Version 0.4 :
Rien pour le moment ! J'ai la flemme de faire les captures
d'écran vu que c'est assez proche de la version 0.3 au
niveau
présentation.
Version 0.5 :
Page d'accueil
(états des
groupes de niveau 1 + alarmes
en cours + alarmes non acquitées de changements
d'état +
alarmes non acquitées de débit)
Version 0.6 :
Page d'accueil
Etat des machines de niveau 2
Exemple de carte
Version 0.7 :
Page d'accueil
Le design des autres niveaux est similaire à la version 0.6.
Version 0.8 :
Toutes les pages
Les
étapes du projet :
Étape 0 : Développement non commencé =
Pas de
nouveau besoin pour le moment. Projet arrêté (pas
nécessairement définitivement).
Étape 1 : Développement commencé = De
nouveaux
besoins exprimés. Début du
développement d'une
nouvelle version.
Étape 2 : Développement en cours =
Implémentation
des fonctionnalités. Attente de nouveaux besoins et
implémentation de ceux-ci.
Étape 3 : Phase de tests = Toutes les
fonctionnalités
recherchées sont
implémentées et plus de nouveaux besoins
exprimés
depuis plusieurs jours. Tests
en environnement de production.
Étape 4 : Publication = Logiciel stable et
documenté,
prêt à être mis en production.
Histoire
de la frustration d'un ingénieur
télécoms et
réseaux
L'ingé,
c'est moi. J'ai du utiliser un logiciel (Netview
pour ne pas le nommer) pour superviser un réseau,
essentiellement
de niveau 2. La plupart des utilisateurs (c'est-à-dire tout
le
monde,
excepté les quelques illuminés à
l'origine du
projet de déploiement de Netview dans l'entreprise), au sein
de
l'entreprise, au niveau national, lui
trouvaient plus de défauts que de qualités. Bon,
ce n'est
pas le premier programme instable, plus gros bouffeur de ressources que
tout ce que j'ai vu jusqu'à présent, et
qui suit un comportement scrupuleusement non-déterministe.
Mais
ce qui est "dommage" <mettre le gros mot de votre choix>
avec ce
logiciel, c'est que l'éditeur (Tivoli/IBM) n'a que faire de
nous, car on n'est pas un client assez gros, et on ne peut pas mettre
ses petits doigts dans le code source, logiciel/licence
propriétaire
oblige.
En plus, il y a 2-3 trucs qui ne répondent pas correctement
à nos besoins, voir des fonctionnalités dont nous
aurions
besoin et qui brillent par leur absence.
Bref, un peu frustré de devoir travailler avec un mauvais
outil qui ne répond pas entièrement à
mes besoins,
et que je ne peux personnaliser, je me suis tourné vers
une autre solution : faire mon propre outil de supervision.
Je remarque juste une chose cependant, c'est alors que je suis tout
sauf un codeur fou, j'ai réussi à faire un
logiciel de
supervision stable et léger en partant de rien... Et dans
cette
entreprise, ca fait plusieurs moins que toute la supervision des LANs
repose sur cet outil
artisanal.
Ce
que
fais FEDSnmp et ce qu'il ne fait pas par rapport à la
plupart
des outils de supervision :
Voici
une
présentation
powerpoint de FEDSnmp (valable jusqu'à la version 0.7).
FEDSnmp, contrairement à la plupart des outils de
supervision, ne fait pas une jolie carte du réseau (enfin,
ces
logiciels découvrent le réseau et font un gros
tas de
tous les éléments et à toi de faire le
ménage ensuite) : Pour la
supervision, je m'appuis
sur des schémas de réseaux tenus
à jour. Je n'ai pas besoin d'avoir une seconde fois
l'architecture réseau. De plus, l'info remontée
est
représentée selon le schéma logique
(modification
de la
perception du réseau par l'utilisation de STP/RSTP,
RIP/OSPF,
...) et non physique. Enfin, on peut avoir un réseau
physique,
un réseau logique différent, et on peut vouloir
avoir un
découpage de la supervision encore différent.
FEDSnmp fait du monitoring sur les interfaces (Erreurs en
entrée, en sortie, Débits en entrée,
en sortie).
On peut remonter l'état d'un port
(link state UP ou DOWN).
FEDSnmp est modulaire, ce qui fait que si une partie du
logiciel
plante (un module), cela n'impacte la stabilité des
autres. On n'est pas non plus obligé de faire fonctionner
tous
les modules disponibles si cela ne nous est pas nécessaire.
La
communication d'un module à l'autre se fait par des fichiers
textes.
FEDSnmp se veut simple à comprendre, à
modifier
(le code est très commenté). Son architecture
modulaire
permet d'ajouter facilement des modules pour personnaliser
l'outil ou ajouter des fonctionnalités propres à
notre
supervision. Quand je dis "simplement", comprendre que je me place du
point de vue d'un administrateur réseau
compétent. Avec
FEDSnmp, ne vous faites pas d'illusion : un incompétent
passera
pour un incompétent.
FEDSnmp, bien qu'il genère des pages html, ne
nécessite pas de serveur web. C'est plus difficile
à
coder, mais plus simple à gérer et à
déployer par la suite. L'utilisation de pages html statiques
pour l'affichage permet de rester indépendant de toute
présentation graphique (GTK, QT, ...) ; tout le monde a
au-moins
un navigateur, mais pas forcément la bonne boîte
à
outils graphique. Dès la version 0.6, l'utilisation de CSS
permet de
personnaliser plus facilement l'interface si besoin (attention, il
faudra alors mettre les mains dans le cambouis).
FEDSnmp, bien qu'il stocke des données, ne
nécessite pas de base de données
jusqu'à la
version 0.7. En effet, une des principale nouveauté de cette
version est l'utilisation de MySQL. Cependant, la communication entre
chaque module reste par des fichiers textes. Ce dernier point est
modifié dans la version 0.8 : la communication entre les modules
passent par la base de données (chacun lit et écrit dans
la même base).
FEDSnmp est très rapide dans les
différents
traitements (le plus long est d'interroger les
éléments actifs), et consomme très
très peu
de ressources (< 32 Mo de RAM).
La configuration se fait à la fois dans des
fichiers de
configurations (pour tout ce qui est listing des
éléments
actifs à surveiller). On peut ne pas se statisfaire du
fonctionnement interne et aller modifier dans le code source. On peut
adapter certains
paramètres comme la fréquence de scan, mais les
paramètres principaux sont tous à
définir dans des
fichiers de configuration.
À partir de la version 0.6, on peut voir la
consommation
de la
bande-passante en entrée et en sortie sur une carte du
réseau (à générer). C'est
une sorte de
"network weather map". Cette fonctionnalité a disparu dans la
version 0.8 car pas de besoin exprimé pour maintenir cette
fonctionnalité. Je peux à nouveau l'intégrer si
demandé.
FEDSnmp est stable en production (tous les bogues
que j'ai rencontré ont été
résolu, mais si
vous en trouvez d'autres, dites-le moi !)
Bref, FEDSnmp suit le principe KISS, avec une architecture modulaire
pour être facilement personnalisable.
Comment
se
procurer FEDSnmp ? :
FEDSnmp
est composé de plusieurs modules et fichiers.
Divers
:
README : Changelog +
quelques explications sur l'utilisation du
logiciel + diverses infos sur la vie du logiciel vu
côté
développement.
start.sh
: Script
permettant
de créer les fichiers nécessaires à une
première exécution des modules et de positionner les
droits (ne fonctionne que sous
GNU/Linux et Unix).
Historique.txt : Fichier
non
nécessaire à l'installation car il est
automatiquement
créée par la suite, mais je le donne ici pour
fournir un
aperçu du modèle de stockage des infos.
Fichiers
de configuration :
images : Répertoire où se trouvent les
différentes
images inclues dans la page html.
ConfSurvScanPre.txt : Fichier de configuration du module de
scan
SurvScanPre.pl.
ConfSurvScanSec.txt : Fichier de configuration du module de
scan
SurvScanSec.pl.
ConfSurvScanTer.txt : Fichier de
configuration du module de
scan
SurvScanTer.pl.
ConfSurvScanQua.txt : Fichier de
configuration du module de
scan
SurvScanQua.pl.
ConfArborescence.txt
: Fichier de
configuration définissant l'arborescence des groupes et
sous-groupes. Ce fichier est utilisé par SurvAffich.pl et
non
par Arborescence.pm.
ConfAlarmeDebit.txt
: Fichier de configuration du module de surveillance des
débits AlarmeDebit.pm.
GeneBD.sh :
Création de la base de données et des tables.
Configuration des droits (à personnaliser avant
exécution !).
AccesBD.txt
: Fichier contenant les logins et mots de passe pour accéder
à la BD. Fichier très sensible !
Modules
principaux :
SurvScan.pl
: Lance les threads de scan (au nombre de 4 par défaut) et
récupère les données pour faire un
pré-traitement avant que SurvAffich.pl les lise pour les
afficher.
ModelePage.pm
: Afin de simplifier le code de SurvAffich.pl, la
génération des pages html (sauf celle de l'accueil) a
été sortie de SurvAffich.pl pour être
traitée dans ce moddule.
SurvAffich.pl : Ce module s'occupe de l'affichage, des
calculs divers
à partir des mesures effectuées par SurvScan.pl.
Il
archive les différentes informations dans une base de
données et dans un fichier.
Acquit.pl : Console
d'administration CLI. Permet de visualiser et d'acquiter les alarmes,
en inter-agissant directement avec la BD.
Modules
optionnels :
CorrecRetCpt.pl
: Lors des relevés des compteurs, on a parfois
des sauts de compteurs qui font que la valeur entre 2
relevés
est très très grande (à peu
près
égale à la valeur max du compteur). Ce module
parcours modifie la BD des données archivées, met
à zéro les valeurs qui sont au-dessus
d'une valeur que l'utilisateur spécifiera. Ne traite que les
débits et pas les compteurs d'erreurs.
AlarmeDebit.pm
: Ce module
est
appelé par SurvAffich.pl. Il contrôle les
débits
(savoir s'ils ne dépassent par des seuils
prédéfinis dans le fichier de configuration) et
genère une page des alarmes. Cette page est inclue dans la
page
principale mais peut être consultée
séparement.
Historique.pm :
Appelé par
SurvAffich.pl, ce module se charge d'enregistrer toutes les
données remontées dans un premier fichier texte,
et les alarmes d'état dans un second (cette fois
avec
écrasement).
Arborescence.pm :
Récapitulatif de
l'arborescence telle qu'elle a été
configurée. Ce
module est optionnel, et permet surtout de s'assurer de la
cohérence et la validité
de l'arborescence des
groupes et sous-groupes que l'on a défini dans le fichier
ConfArborescence.txt. Le module génère un fichier .txt
étant une arborescence en ASCII Art. Il génère
également un fichier .dot qui permet de générer un
graphique (.jpeg, .png, ...) avec Graphviz.
AlarmeChgt.pm : Ce
module est appélé par SurvAffich.pl. Il surveille
le changement d'état d'un équipement,
l'enregistre dans une table de la BD (sortie texte également),
et
génère du code html qui est utilisé
par SurvAffich.pl pour afficher ces alarmes. Ainsi, si un
équipement passe down puis up, on en garde une trace.
Très utile pour l'administrateur qui s'absente de temps en
temps.
Comment
installer FEDSnmp ? :
Un interpréteur perl doit être présent sur la
machine, ainsi que les bibliothèques Time::localtime, SNMP,
Date::Calc et DBI. Sous GNU/Debian Etch, Time::localtime est inclus par
défaut, Net::SNMP est disponible en installant le paquet
libnet-snmp-perl, Date::Calc installant libdate-calc-perl et DBI en
installant libdbi-perl.
Un serveur MySQL doit aussi être installé et actif. Sous
GNU/Debian Etch, c'est le paquet mysql-server. Se connecter à
MySQL et y exécuter le script GeneBD.sh.
Créer
un répertoire dans lequel installer le
logiciel. Nous l'appellerons FEDSnmp.
Se placer dans ce répertoire et y copier les fichiers
de configuration et des modules principaux définis ci-dessus. Y
copier aussi les modules optionnels que vous voudrez utiliser.
Créer aussi le répertoire
images (y
placer les images/icônes).
Donner les droits d'exécution au script start.sh.
Éditez les fichiers ConfSurvScanPre.pl,
ConfSurvScanSec.pl, ConfSurvScanTer.pl,
ConfSurvScanQua.pl, ConfArborescence.txt,
ConfAlarmeDebit.txt et AccesBD.txt
à
votre sauce en vous inspirant du modèle donné dans chaque
fichier.
Éditez le fichier SurvAffich.pl
et commentez ou décommentez les modules optionnels que vous
voulez enlever ou utiliser. Ce sont des lignes ressemblant à MonModule::main().
Lancer start.sh qui créera à la
fois les derniers répertoires et fichiers manquants,
positionnera les droits adéquats sur tous les fichiers et
répertoires et
lancera le navigateur pour y charger la page Surv.html (interface de
supervision).
Comme indiqué par la sortie de start.sh, lancer les modules dans
des consoles séparées :
./SurvScan.pl
./SurvAffich.pl
Il est possible de lancer tous les modules dans la même console
en tapant la commande ci-dessous, mais les sorties des modules se
mélangent et cela devient illisible (ces sorties sont utiles
surtout pour débugguer ou surveiller la bonne exécution
des modules) :
./SurvScan.pl &./SurvAffich.pl &
Ensuite lancer la console d'administration :
./Acquit.pl
Introduction
rapide à l'utilisation de FEDSnmp (de la page Surv.html) :
C'est un logiciel très simple à
utiliser (un peu
moins à configurer, c'est vrai) et intuitif dans son
utilisation. Si l'icône
précédent un groupe est rouge, c'est qu'au moins
une
machine dans ce groupe est down. Si l'icône est verte, c'est
que
tout est OK. Par défaut, l'icône est bleu (état
OTHER). On peut également avoir l'icône OTHER si
l'équipement n'a pas été scanné depuis plus
de 10 minutes.
Si
l'icône est jaune, c'est qu'un port surveillé est
down
mais pas l'équipement entier. Sinon, l'icône
serait rouge,
car l'état général DOWN d'un équipement
est
prioritaire sur l'état DOWN d'un port.
Pour passer d'un groupe à un sous-groupe, il
suffit de
cliquer sur les liens hypertextes. Des équipements peuvent se
trouver dans tous les
sous-niveaux et pas seulement dans le dernier.
Pour plus de détails, voir le fichier README
ou contactez moi par email.
Sous
quelle licence se trouve FEDSnmp ? Quel est son coût ? :
FEDSnmp ne se présente pas comme un logiciel
commercial,
mais
un outil aidant les administrateurs réseaux. Il est gratuit.
Sauf contre rémunération convenue au prélable, je
ne n'assure aucun engagement de résultat ou de moyen.
Ce logiciel est sous licences GPL v3. Les bibliothèques
utilisées peuvent être sous une autre licence.
Me
contacter :

