Monitorez l'uptime de votre freebox sans télé
Par Dju » 26 décembre 2010 (18:30) - Serveur
Aujourd'hui une petite astuce pour connaitre et monitorer l'uptime de votre freebox, sans avoir à la brancher à la télé, et de manière automatique grâce à munin.
Mais comment donc, me demandez vous ?
Grâce à la RFC 1323, et surtout Nmap
Comme vous le savez peut être, la freebox est directement joignable avec le nom mafreebox.freebox.fr, et répond sur quelques ports tcp.
Juste ce qu'il nous faut
Commencons avec un
nmap -O mafreebox.freebox.fr pour avoir quelques infos :
Starting Nmap 4.62 ( http://nmap.org ) at 2010-12-26 18:03 CET Interesting ports on freeplayer.freebox.fr (212.27.38.253): Not shown: 1712 filtered ports PORT STATE SERVICE 80/tcp open http 554/tcp open rtsp 9100/tcp open jetdirect Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: remote management|WAP|general purpose|broadband router Running (JUST GUESSING) : HP embedded (98%), Linksys embedded (94%), Linux 2.6.X (94%) Aggressive OS guesses: HP Onboard Administrator management console (98%), Linksys WRT300N wireless broadband router (94%), Linux 2.6.18 - 2.6.22 (94%), Linksys WRV200 wireless broadband router (93%), Linux 2.6.15 - 2.6.20 (93%), Linux 2.6.20 (Ubuntu 7.04 server, x86) (90%), Linux 2.6.13 - 2.6.24 (90%), Linux 2.6.24 (Debian) (89%), Linux 2.6.22 - 2.6.23 (88%) No exact OS matches for host (test conditions non-ideal). Uptime: 3.228 days (since Thu Dec 23 12:35:21 2010) OS detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 31.066 seconds
Avec cette commmande, on indique à nmap de scanner la freebox et de deviner l'OS qui la fait tourner.
On peut y voir l'uptime :coolfuck:
Maintenant, affinons la commande pour ne scanner que le port 80 et ainsi réduire le temps de scan
nmap -O --osscan-guess -p80 mafreebox.freebox.fr
Starting Nmap 4.62 ( http://nmap.org ) at 2010-12-26 18:06 CET Interesting ports on freeplayer.freebox.fr (212.27.38.253): PORT STATE SERVICE 80/tcp open http Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: remote management Running: HP embedded OS details: HP Onboard Administrator management console Uptime: 3.230 days (since Thu Dec 23 12:35:22 2010) OS detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 2.325 seconds
Et hop, on est passé à 2 secondes et demi.
Maintenant qu'on est capable de déterminer l'uptime de la freebox à distance, on peut alors utiliser cette commande pour créer un plugin pour Munin
J'ai donc écrit ce plugin et l'ai mis à disposition sur le site Munin Exchange, contenant tous les plugins créés pour munin
Comme munin effectue ses checks toutes les 5 minutes, j'ai fait en sorte que le plugin utilise un cache, et ainsi, détermine l'uptime toutes les 3 heures (c'est configurable of course)
De même, ce plugin remonte la date du dernier reboot, du dernier check, et la fréquence de check.
Dans une prochaine version, sera inclus l'envoi d'alarme pour détecter que la freebox a rebooté
Voila un petit screen du plugin :
Le plugin est accessible ici : http://exchange.munin-monitoring.org/plugins/freeboxuptime/details/
Pour l'instant il est en cours de validation ,ce qui donne une erreur quand on essaye d'accéder au lien ci dessus.
Mais d'ici peu, il sera disponible
edit: en attendant que le plugin soit validé, vous pouvez le télécharger directement ici
Pour installer le plugin :
dézippez le puis mettez le script dans le dossier /usr/share/munin/plugins/, faites un lien symboliques vers /etc/munin/plugins/
unzip ./FreeboxUptime.zip
mv ./FreeboxUptime /usr/share/munin/plugins/
chmod +x /usr/share/munin/plugins/FreeboxUptime
ln -s /usr/share/munin/plugins/FreeboxUptime /etc/munin/plugins/FreeboxUptime
enfin, éditer le fichier /etc/munin/plugin-conf.d/munin-node et rajoutez y ces 2 lignes :
[FreeboxUptime]
user root
et redémarrez munin
/etc/init.d/munin-node restart
Enjoy
j'ai la version 5.00 de nmap par contre pas d'uptime :/
Effectivement, le problème vient de la version de nmap.
La version fournie avec mon OS était la 5.0, qui n'affiche pas l'uptime. Après recherche et installation manuelle de la 4.62, j'avais l'uptime.
salut (désolé pour le retard...)
Je confirme la chose. j'ai effectué plusieurs tests.
- avec la version de nmap 4.62 fournie dans Lenny (installé sur mon serveur), l'uptime est trouvé.
- sur un serveur sous squeeze, avec nmap 5.00, pas d'uptime.
- avec la dernière en date (5.50) compilée from source, ça ne marche pas non plus.
Vais voir si je peux trouver quelque chose la dessus
J'ai la version 5.30 beta1.
Ajouté l'option -v
nmap -v -O --osscan-guess -p80 XXX.XXX.XXX.XXX, l'uptime apparaît.
@slic merci pour le retour !
effectivement, ajouter un bête -v donne l'uptime
Sinon j'ai mis à jour le plugin.
Il est donc téléchargeable dans le lien donné ci dessus dans le billet.
par contre le site de munin donne des erreurs 500 quand on veut s'y logger ou uploader un plugin donc je l'y mettrai dès que possible.
Corrections pour le plugin Munin avec la dernière version de nmap :
Page de référence :
http://munin-monitoring.org/browser...
##### ligne 119
uptime=$(nmap -vO --osscan-guess -p${TCP_PORT} ${FREEBOX_HOST} | grep -i uptime)
##### lignes 123 et 124 lastReboot=$(echo $uptime | grep -o '(since .*)' | sed 's/(since //g' | sed 's/)//g' )
uptime=$(echo $uptime | awk '{print $3}')
Si il est exécuté depuis une machine cliente il est préférable de changer le fichier de cache.
Sous Ubuntu 12.04 LTS ca peut donner :
##### ligne 52
CACHE_FILE=/var/lib/munin-node/plugin-state/FreeboxUptime.cache
Je n'ai rien modifié dans le fichier original, pour garder la compatibilité avec les anciennes versions de nmap que je n'ai pas testées.
En espérant que ça soit utile ici.
hello
Tu fais bien de le faire remarquer
Bien que j'aie mis à jour le plugin (lien donné dans le billet au dessus), le code dispo dans le dépot de munin n'est plus à jour...
Egalement, il y a le répertoire dans /var/lib qui change. c'est pris en compte.
Reste à voir comment mettre à jour sur le dépot munin
Hello,
Question de goût, j'aimerais maintenant faire apparaître l'uptime de la FreeboxV5 dans sa propre catégorie, et pas dans la liste des plugins de la machine qui effectue le nmap.
Une idée de fichier munin.conf ou munin-node.conf pour faire ça ?
Idéalement, l'affichage de la Freebox semblerait être comme si la Freebox elle-même avait un munin-node installé dessus.
Merci pour ce blog riche et atypique en tout cas !
Hi again et merci
Avec de softs de monitoring plus avancés tels que nagios/icinga (mais ce n'est pas tout à fait la même utilisation ), tu peux attribuer n'importequel check à n'importe quel 'host'.
Alors qu'avec munin, c'est très centré sur une architecture "client/serveur" dans laquelle le check appartient obligatoirement à la machine qui résalise le test. Le serveur munin se content de lister les machines auxquelles il se connecte)
Mais idéalement ça serait bien.
Tu peux d'ailleurs contacter @steve_schnepp sur twitter qui est un dev munin
Bonjour,
Il manque une fin de parenthèse pour être parfait visuellement.
Dans le test de présence du fichier cache_file la fermeture de parenthèse est présente dans le else, mais pas en fin de ligne dans l'autre cas.
On peut même sûrement faire :
if[...]
graph_info="${graph_info} - last check: ${lastCheck} - last reboot: $lastReboot"
fi
echo "graph_info ${graph_info})"
Ce qui économise un else et évite de cafouiller dans les présences ou non de ")".
Pour l'affichage dans un autre alias, c'est pas documenté mais ça existe. Je n'ai pas pu contacter sans Twitter votre développeur Munin.
Les trois autres dont les mails sont présents sur le dépôt n'ont pas répondus.
Il faut ajouter dans le script :
echo 'host_name freebox.domaine'
juste avant la ligne echo 'graph_title...'
Puis dans le munin.conf du serveur ajouter :
[freebox.domaine]
address 127.0.0.1
(Adapter l'adresse en fonction de la machine faisant office de noeud ayant le plugin freeboxuptime actif)
bien vu, merci pour la correction
et merci pour l'information, je ne savais pas
Fil des commentaires de ce billet
URL de rétrolien : https://blog.crifo.org/trackback/80