Aller plus loin avec une livebox Sagem
janvier 21, 2008
Bon soyons sérieux, je déteste la LiveBox, seulement c’est le seul moyen d’avoir TV et Telephone chez Orange…
Il ne s’agit pas d’un appareil professionnel et pour lui faire cracher ne serait-ce que quelques valeurs comme la marge de bruit il faut se lancer dans tout un mic mac telnet machin truc chouette … (et j’en passe…).
Bref comme j’ai passé mon dimanche à triturer ce bout de ferraille, voici quelques brides de mes recherches.
L’interface Web de la live box permet d’obtenir ces valeurs, seulement pour automatiser sa récupération …prout…
Comme la livebox dispose AUSSI du service telnet j’ai commencé par chercher les valeurs nécessaires : user:root / pass:1234
Ensuite on se retrouve dans le système suivant :
[ root @ home ] $ adsl [ root @ adsl ] $ mon ADSL Monitoring is Successful. The values are: adslLineStatus : Opérationnel adslMode : G992_5_A Upstream = 944 Kb ( Intlv[LP0] ) Downstream = 8524 Kb ( Intlv[LP0] ) ================================================= DIAG Info : ================================================= Attenuation ( dB ) : 29.2 12.3 (FE) SNR margin ( dB ) : 10 13 (FE) HEC counter : 956 CRC counter : 131 RTFirmwareVer : 0x0c16010c
Superbe j’ai tous ce que je voulais et même plus. Il ne reste plus qu’à me faire un petit script pour automatiser tout cela :
#!/usr/bin/perl
# A Script to get LiveBox ADSL status by Bodman@wanadoo.fr # standard output : # Up:944 Down:8524 LocalAtt:29.2 TermAtt:12.3 LocalSNR:10 TermSNR:13 HEC:960 CRC:135 # Reason to get no output : # no host param # bad user/password ( <> root/1234 ) # bad adsl monitoring output ( <> 18 lines ) # livebox stress
# Get host,user,pass ( root / 1234 default )
if ($ARGV[0] ne "") { $host = $ARGV[0]; } else { exit(); }
if ($ARGV[1] ne "") { $user = $ARGV[1]; } else { $user = 'root' }
if ($ARGV[2] ne "") { $pass = $ARGV[2]; } else { $pass = '1234' }
# Get Telnet env
use Net::Telnet;
$telnet = new Net::Telnet ( Timeout=>20 );
$telnet->errmode(sub {die @_ unless $_[0] =~ /eof/});
# Telnet Login $telnet->open($host); $telnet->login($user,$pass);
#Go to adsl env and get monitoring
$telnet->cmd("adsl");
@tableau = $telnet->cmd("mon");
#End Telnet session in good condition
$telnet->cmd("exit");
$telnet->cmd("exit");
$telnet->close;
if (@tableau == 18) #good data
{
# FORME DU TABLEAU #===================================================== #... #5 Upstream = 944 Kb ( Intlv[LP0] ) #6 Downstream = 8524 Kb ( Intlv[LP0] ) #... #10 Attenuation ( dB ) : 29.2 12.3 (FE) #11 SNR margin ( dB ) : 12 13 (FE) #12 HEC counter : 956 #13 CRC counter : 131 #... #=====================================================
#Prepare data @tableau[5] =~ s/^.* = ([0-9]*) Kb.*$/Up:\1 /; @tableau[6] =~ s/^.* = ([0-9]*) Kb.*$/Down:\1 /; @tableau[10] =~ s/^.*:[^0-9]*([0-9.]*)[^0-9]*([0-9.]*).*$/LocalAtt:\1 TermAtt:\2 /; @tableau[11] =~ s/^.*:[^0-9]*([0-9.]*)[^0-9]*([0-9.]*).*$/LocalSNR:\1 TermSNR:\2 /; @tableau[12] =~ s/^.*:[^0-9]*([0-9.]*).*$/HEC:\1 /; @tableau[13] =~ s/^.*:[^0-9]*([0-9.]*).*$/CRC:\1 /;
# cut \n chop(@tableau);
#print data print @tableau[5]; print @tableau[6]; print @tableau[10]; print @tableau[11]; print @tableau[12]; print @tableau[13];
}
exit();
Avec ça on trouve une sortie compatible avec cacti :
./adsl_livebox.pl 192.168.1.1
Up:944 Down:8524 LocalAtt:29.2 TermAtt:12.3 LocalSNR:10 TermSNR:13 HEC:960 CRC:135
Chouette je n’ai plus qu’à faire de beaux graphiques ![]()
[Fedora 8] Installation et utilisation de cacti
janvier 18, 2008
Voici une note un peu brève, mais synthétique sur cacti (http://www.cacti.net/).
Installation
Un yum install cacti ne va pas suffire pour utiliser cacti. Je conseil alors :
yum install cacti mysql-server rrdtool net-snmp-utils httpd
Ensuite une petite préparation de base MySQL s’impose :
service mysqld start
mysql -u root
CREATE DATABASE cacti;
grant all on cacti.* to root@localhost;
grant all on cacti.* to cactiuser@localhost;
set password for cactiuser@localhost=password(’cactiuser’);
use cacti;
source /usr/share/doc/cacti-0.8.7a/cacti.sql;
exit
service mysqld restart
service httpd start
De même il faut penser à decommenter l’unique ligne du fichier /var/crond.d/cacti (puis faire service crond restart).
Enfin dans un navigateur faites http://localhost/cacti
Utilisation
En ce qui concerne l’usage même de cacti je trouve qu’il n’est pas particulièrement bien guidé, voici comment s’y prendre :
Etape 1. Comment récupérer une information
Collection Methods -> Data Input Methods ou Data Queries
Etape 2. Le type et la forme de l’information
Templates -> Data Templates
Dans cette catégorie on devra entre autre remplir un champ Data Input Methods (voir Etape 1)
Etape 3. La représentation visuelle des informations
Templates-> Graph Templates
C’est là qu’une certaine confusion peut naître dans la section Graph Template Items.
Le champ Data Source de cette section correspond en fait à une entrée de la catégorie Data Templates (voir Etape 2).
Etape 4. Définition d’un type d’hôte (serveur, routeur, switch etc …)
Templates-> Host Templates
On va alors définir un type d’hôte auquel va correspondre des Data Queries(Etape 1) possible et des Graph Template(Etape 3) possibles.
Etape 5.Création d’hôte.
Management-> Devices
Il est désormais possible d’ajouter les éléments du réseau surveillé pour peut qu’on dispose des Host Templates (Etape 4) correspondants.
Etape 6. Définir les sources d’information.
Management -> Data sources
A partir de ces Devices (Etape 5) et d’un type de Data Template (Etape 2), on engage alors la premier phase du monitoring, la collecte d’information.
Etape 7. Création d’un Graphique
Management -> Graph management
Deuxieme phase du monitoring, la représentation de ces informations maintenant possible avec un membre des Devices(Etape 5) et un Graph template (Etape 3) accompagné d’une série de Data sources(Etape 6). Il est aussi possible de définir un graph sans Device, il pourra alors récupérer ses informations sur toutes les sources de données.
Etape 8. Pour finir, ce graph va être basculé dans l’arborescence
Management ->Graph management ->Choose an action: -> Place on a tree
Asterisk::Monitoring
juillet 12, 2007
FONCTIONNEMENT
Un module Asterisk va jouer le rôle de sub-agent pour le service net-snmp
afin de diffuser des informations sur Asterisk. A l’aide d’outils tels que nagios ou cacti il sera alors possible de surveiller son bon fonctionnement.
INSTALLATION ET MISE EN PLACE
le module res-snmp de Asterisk
Ce module est dépendant de net-snmp. Pourtant, durant la compilation, un erreur peut survenir malgré la présence du service net-snmp et de ses bibliothèques :
checking for net-snmp-config… /usr/bin/net-snmp-config
checking for snmp_register_callback in -lnetsnmp… no
Apres une lecture du fichier config.log (de cette erreur), la solution est découverte :
configure:23304: checking for snmp_register_callback in -lnetsnmp
configure:23339: gcc -o conftest -g -O2 conftest.c -lnetsnmp -L/usr/lib -lnetsnmpagent -lnetsnmpmibs -lnetsnmphelpers -lnetsnmp -ldl -l
crypto -lrpm -lrpmio -lpopt -lbz2 -lz -lm -ldl -L/usr/lib -lwrap >&5
/usr/lib/gcc-lib/i586-suse-linux/3.3.5/../../../../i586-suse-linux/bin/ld: cannot find -lwrap
collect2: ld returned 1 exit status
configure:23345: $? = 1
La bibliothèque ’wrap’ est indisponible, elle est fournit par le package tcpd-devel.
La forme du fichier de configuration est quant à elle très simple :
; /etc/asterisk/res_snmp.conf
[general]
subagent = yes
enabled = yes
Le service net-snmp
Pour fonctionner normalement, net-snmp nécessite un fichier de configuration :
syslocation Server Room
syscontact Sysadmin (root@localhost)rocommunity public 127.0.0.1
rocommunity public 10.1.1.1
master agentx
Ainsi net-snmp va recevoir les informations de asterisk (master agentx) et
il accepter les requetes snmp provenant du serveur nagios (10.1.1.1).
COPIER LES MIBS(Facultatif)
Deux possibilités :
Copier les MIB dans le dossier partagé par tous les utilisateurs (droits root requis) :
cp doc/asterisk-mib.txt /usr/share/snmp/mibs/
cp doc/digium-mib.txt /usr/share/snmp/mibs/
Ou alors les copier dans le dossier /home/utilisateur/.snmp/mibs/. Seul l’utilisateur concerné pourra utiliser ces MIB mais cette fois-ci pas besoin de droits root.
VERIFIER LE BON FONCTIONNEMENT
Au chargement de asterisk :
NET-SNMP version 5.2.3 AgentX subagent connected
EXEMPLES DE DONNEES
ASTERISK-MIB::astVersionString.0 = STRING: 1.4.2
ASTERISK-MIB::astConfigUpTime.0 = Timeticks: (6693143) 18:35:31.43
ASTERISK-MIB::astConfigReloadTime.0 = Timeticks: (6693143) 18:35:31.43
ASTERISK-MIB::astNumModules.0 = INTEGER: 137
ASTERISK-MIB::astNumChannels.0 = INTEGER: 0
ASTERISK-MIB::astChanTypeName.1 = STRING: Zap
ASTERISK-MIB::astChanTypeName.2 = STRING: Skinny
ASTERISK-MIB::astChanTypeName.3 = STRING: SIP
ASTERISK-MIB::astChanTypeName.4 = STRING: Phone
ASTERISK-MIB::astChanTypeName.5 = STRING: Console
ASTERISK-MIB::astChanTypeName.6 = STRING: Local
ASTERISK-MIB::astChanTypeName.7 = STRING: IAX2
ASTERISK-MIB::astChanTypeName.8 = STRING: Feature
ASTERISK-MIB::astChanTypeChannels.1 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.2 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.3 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.4 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.5 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.6 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.7 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.8 = Gauge32: 0
A SAVOIR
Sans l’installation des MIB sur le client snmp ces valeurs aurai plutot cette forme :
1.3.6.1.4.1.22736.1.5.1.0 = INTEGER: 0
USAGE DE CACTI
![]()
Ce graphique a été réalisé avec cacti, je vais prochainement essayer de publier son template.