ACTUALITZACIÓ: Aquest exemple ha sigut incorporat com a servei de l'arquitectura SNP en el codi principal del SVN de guifi.net. El codi que hi ha adjunt a aquest article ja no és l'actual. Podeu obtenir més detalls de com obtenir-lo via SVN seguint aquest enllaç.
Amb aquesta millora de l'aplicació, serà possible de que diversos servidors de guifi es reparteixin la feina de fer les gràfiques de trànsit, sense perdre la integració amb la web de guifi.net, i ens facilitarà la migració cap al CESCA, si al final es duu a terme. Això comportarà alguns avantatges que ara explicaré: Les gràfiques ja NO es poden fer desde una sola màquina, i no parlo de potència de la màquina o d'ampla de banda. És una qüestió de temps : en 5 minuts **no dóna temps** a recollir les dades i fer els pings a + de 500 aparells. Si continueu llegint veureu exemples on es veu clar. Actulament hi ha tres servidors que utilitzen aquest sistema, corresponents a les zones de Cambrils (externa) , La Guixa, Roda de Ter i Taradell.
Tot això ve de fa uns mesos, quan en Fernando de Palafolls, va fer una modificació del codi que genera les gràfiques de trànsit i pings de guifi.net, de manera que a la web de guifi poguessin sortir les gràfiques que generaven desde el seu mrtg de palafolls. El problema es que el codi que va adaptar, no seguia el format de les gràfiques de guifi.net, sinó que era una excepció en el codi, per integrar les gràfiques originals del MRTG tal com les feien ells. Aquella primera exteriorització NO ens servia per mantenir el format de guifi.net i que continuessin integrades a la web.
Amb aquesta actualització doncs, es solucionen els 2 casos.
- Descarregar de feina el bandoler: Ara mateix ha de recollir les dades de + de 500 ràdios.
- Precisió dels pings - Les gràfiques de disponibilitat seràn + reals, al fer-se + a prop de les ràdios, i no dependre de + de 2 o 3 rebots, segons el cas i no es pedran dades per culpa d'un tall de la xarxa entre el bandoler i les ràdios.
- Precisió del trànsit - Ara mateix, el bandoler cada 5 minuts es posa a recollir dades de totes les ràdios. N'hi han tantes, que això ho està fent constantment, i moltes ràdios perden el torn moltes vegades, se solapen ... això ho podeu veure clar amb els exemples següents.
|
|
Gràfiques de trànsit de supernodes, radios individuals i pings, fetes desde el bandoler, i desde un servidor aprop del supernode. Podreu apreciar la diferència en resolució i en els valors.
El funcionament és molt senzill: Es tracta del mateix codi PHP de l'aplicació de guifi.net, modificat de tal manera que no depengui ni del drupal ni de tota la base de dades. En el seu lloc, agafa les dades de la xarxa de l'exportació XML del nodeXchange detallat de la zona a la qual pertany el servidor. La màquina que vulgui generar gràfiques amb aquest sistema haurà de tenir :
- Apache o Apache2
- PHP5
- rrdtool 1.2
- MRTG
Periòdicament, el servidor s'haurà de descarregar les dades actualitzades de la xarxa en XML, i la configuració pel MRTG. Amb aquestes dades, quan algú consulti les gràfiques d'aquella zona a través de www.guifi.net, les gràfiques en realitat s'estaràn generant fora del bandoler, pero l'usuari no hi notarà la diferència.
El sistema s'ha provat sobre un servidor amb ubuntu 5.10, i amb un altre sobre debian sarge, però no hi ha d'haver problema per fer-ho amb qualsevol altre linux.
s'han de instal·lar els següents paquets:
mrtg
apache2
php5
rrdtool
librrds-perl
des de ubuntu/debian, podeu fer servir "apt-get install nomdelpaquet" amb el noms de paquets de sobre. Amb fedora, podeu fer servir el yum, els paquets haurien de tenir noms semblants.
IMPORTANT : Només funcionarà amb les versions 1.2 de rrdtool i amb php5. Si per exemple teniu un debian STABLE, primer l'heu de actalitzar a UNSTABLE, i després podreu instal·lar les versions més noves.
S'han de crear les següents carpetes, a no ser que ja existeixin
mkdir /home/comesfa
mkdir /home/comesfa/mrtg
mkdir /home/comesfa/mrtg/logs
mkdir /home/comesfa/mrtg/images
mkdir /etc/mrtg
la carpeta /home/comesfa/mrtg/logs és on és guardaran els .rrd's que contindran les dades de trànsit i pings, i a la carpeta /etc/mrtg és on hi anirà l'script per fer els pings.
s'ha de copiar l'arxiu adjunt ping.sh a la carpeta /etc/mrtg/
s'ha de copiar l'arxiu grafiques._php a la carpeta /var/www/
heu de reanomenar els arxius *._*
mv grafiques._php grafiques.php
mv ping._sh ping.sh
heu de convertir el ping.sh en executable amb la següent comanda
chmod +x /etc/mrtg/ping.sh
podeu deixar el .php a l'arrel /var/www o be posar-lo a la carpeta que volgueu + endins.
A la carpeta /etc/cron.d/ trobareu un arxiu "mrtg" on la pròpia instal·lació del mrtg us haurà creat el cron que executa el mrtg cada 5 minuts. Heu d'afegir 2 línies, i al final us ha de quedar aixi:
0-55/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi
2 17 32 47 * * * * root wget http://www.comesfa.org/ca/guifi/mrtg/0000?ascii -q -O /etc/mrtg.cfg
4 19 34 49 * * * * root wget http://www.comesfa.org/ca/guifi/nodexchange/0000/detail -q -O /var/www/guifi.xml
Un cop fet, nomes cal que reinicieu el servei cron
/etc/init.d/cron restart (debian/ubuntu)
service cron restart (fedora/RH)
tant en el segon com el tercer cas heu de substituir el número 0000 pel número del node de la zona que voleu graficar. En el tercer, recordeu canviar /var/www/guifi.xml per la ruta on heu colocat l'arxiu grafiques.php.
Per últim, cal que li diguem a l'aplicació que a partir d'ara la nostra zona ja no es grafica desde el bandoler. Anem a la zona en qüestió, l'editem, i al camp "url del servidor mrtg" hi posem la ruta complerta a grafiques.php, per exemple http://esquerda.guifi.net/grafiques.php. SOBRETOT, recordeu que la url ha de començar per http:// !!!!
A partir del moment que guardem els canvis, el navegador de qui consulti les gràfiques anirà a buscar-les a la url que li hem indicat, passant-li els paràmetres adeqüats en funció de les gràfiques que estiguem mirant. I en pocs minuts, el bandoler deixarà de graficar-les. Si mai tornem a deixar en blanc la URL del servidor mrtg, automàticament el bandoler les tornaria a graficar.
Si voleu conservar l'històric de les dades de les gràfiques fetes fins al moment. poseu-vos en contacte amb algun dels administradors que tenen accés al bandoler, pq us puguin traspassar els rrd's, així començareu a graficar desde el punt on ho deixi el bandoler. La comanda que s'ha de fer servir per copiar els rrd's facilment és desde el servidor que estiguem instalant :
scp root@bandoler.guifi.net:/home/comesfa/mrtg/logs/XXXX* /home/comesfa/mrtg/logs
canvieu el XXXX per el nom comu de la zona que tindran les rrd's, per exemple per vic la majoria començaran amb vicxxxx.rrd. La resta els haure de fer un per un.
Hi ha alguns errors que tinc una mica localitzats que us poden ajudar si us surten. Per ferho, obriu el link de la imatge de transit en una finestra sencera, aixi podreu veure l'error.
- Si no us va, repasseu primer la llista de passos a seguir, és bastant detallada i segur que us heu deixat algo ;)
- Si us apareix el missatge "la imatge no es vàlida", heu de comprovar varies coses :
- que el mrtg hagi començat a generar els rrd's a /home/comesfa/mrtg/logs
- si no hi son, pot ser que no tingueu encara la confguiracio mrtg, repasseu el cron.
- que la versio del rrdtool sigui 1.2 o superior
- per poder depurar altres errors, afegiu &debug=true al final de la URL,i us mostrara la comanda del rrdtool, que podreu executar en una shell per comprovar quin error us dona
- Us pot donar un error de php
- no troba el guifi.xml
- repasseu el cron
- no troba la funcio simplexml_load_file()
- o be no teniu el php 5.x instalat, o heu instalat una versio "capada" sense el modul de XML.
Com que ara el vostre servidor es fa les seves pròpies gràfiques, si us fa falta us podeu fer una pàgina personalitzada amb les gràfiques que volgueu, fent servir urls com les següents
substituïr :
-radio= pel ID de la radio
-direction= per in o out per trafic sortint o entrant
-node= per l'id del node
a totes aquestes gràfiques, podeu afegir els parametres :
&width= per canviar l'amplada del grafic,
&height= per canviar l'alçada,
&thumb= true per fer que nomes mostri el grafic, sense llegendes
&numcli= per especificar el número de clients que surtin a la gràfica, max, perquè surtin tots
Comentaris
Molt bon exemple de serveis distribuits en xarxa.
Felicitats.
8)
Aplaudiments.
Crec que aixó va en molt bona direcció del que ens convé per fer més gran i virtualment infinita la xarxa, que és el que tots perseguim.
Feina ben feta!!
Tambe rep felicitacions de part meva :P
El que és útil, és útil i el que val, val !
:)
Ep Merci!
Recordeu que una part dels credits es pel fernando :) A vere si se li pot treure tot el suc que pensava quan ho vaig fer!
S'han perdut els fitxers adjunts al text
I hi eren que jo es vaig fer servir :-)
Per cert, La Guixa ja té les gràfiques descentralitzades, d'aquí poca estona també Taradell les hi tindrà.
Això va molt bé, us animo a:
Genial
Ja ho estic posant en marxa a La Guixa i el seu servidor ;)
waaaauu!!
Enhorabona, molt bona feina!!
Un Crack entre nosaltres!
Molt Bó aquest document!!!
:jawdrop:
Ara si que veig que podem creixer sense parar!
En breu tindreu també posades les gràfiques de Torelló i Malla.
Per cert una consulta si ara per exemple les gràfiques de Torelló les fa el servidor que hi ha al poble i les de SHV les del Puntàs l'enllaç entre SHV i Torelló com quedarà?
No se si t'he entès...
... peroò si vols dir que qui graficara aquest enllaç, la resposta es que les "graficacions" es fan per zones, és a dir que torello graficara la seva radio de l'enllaç i st hipolit la seva.Tot es base en quina zona penjen les radios.
Quan aegim el suport al conecpte de "arees", deslligat de les zones geografiques, el + segur es que tot aixo passi a fer-se basat en arres i no en zones. pero de moment està aixi.
impresionant
ja me'n va parlar quan vem anar a manresa la setmana passada i realment és un curro de dos parells de nassos
i aprofitant que ha obert la veda de fer servir el nodeXchange, no seria bona idea que tot el que fós possible enlloc de fer consultes sql és fés directament des de l'XML del nodeXchange? així milloraria la distribuivilitat (toma paraula) dels serveis de guifi.net i la possibilitat de exterioritzar-ho tant com vulgem
P.D. com que hi havia moltes faltes m'he pres la llibertat de arreglar-les (diria que no n'he posat de noves, però vaja, qui sap :)
vaia cracks que corren per aquí!!!
"distribuvilitat" o "interoperabilitat" ?
Amb el XML precisament el que aconseguim és aixó.
A veure, des d'un punt d'aqrquitectura és la linia correcta, ja sigui amb interoperabilitat sobre http com és el cas, com SOA, etc.
La paraula crec que és correcte és la interoperabilitat entre aplicacions i la orientació de les aplicacions a serveis en xarxa.
A aprtir d'aqui, internament, hi ha independència de cada aplicació per fer el que vulgui, per ex. els mapes tiren directament de l'XML del nodexchange, i així es redueixen dependències i s'evita el requisit de la base de dades, per al CMS però pot ser no adeqüat per temes de rendiment, la ventatja precisament és que ho facis com ho facis, només afectes a la peça que treballes.
Configuracio de cron
M'he trobat que després d'una actualització del sistema (debian) el servidor m'ha deixat de generar les gràfiques. Buscant aquí i allí he descobert que per algún motiu, perque funcioni s'ha de rescriure l'arxiu /etc/cron.d/mrtg així:
0-55/5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi
2,17,32,47 * * * * root wget http://www.comesfa.org/ca/guifi/mrtg/0000?ascii -q -O /etc/mrtg.cfg
4,19,34,49 * * * * root wget http://www.comesfa.org/ca/guifi/nodexchange/0000/detail -q -O /var/www/guifi.xml
Fixeu-vos que l'única diferencia es la col·locació de les comes entre els minuts (2,17,32,......)
serà del paquet
no se si serà del propi programa o a nivell de distro que ho han canviat, però vaja si és només això rock on!
aquests del tarragonés començeu a fer fressa, si necessiteu ajuda ja ho sabeu, fòrums, llistes de correu o el xat mateix ( #guifi a irc.irc-catalunya.org:6667 )
SAX!
+ problemes amb les actualitzacions i reinstal·lacions
Després de reinstal·lar tot el sistema Linux a Ubuntu 6.06.1 em trobo que torno a tenir problemes amb el mrtg. Mirant l'arxiu /var/log/mrtg/mrtg.log llegeixo el següent:
ERROR: Creating templock /var/lock/mrtg/_etc_mrtg.cfg_l_7704: No such file or directory at /usr/bin/mrtg line 1645.
El problema està en que el directori /var/lock ja no existeix des de que es un tmpfs (Sistema d'arxius temporals).
Exemple del que dic:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 12768832 923256 11196956 8% /
varrun 95492 128 95364 1% /var/run
varlock 95492 4 95488 1% /var/lock
udev 95492 92 95400 1% /dev
devshm 95492 0 95492 0% /dev/shm
/dev/hdb1 13140188 3839376 8633316 31% /home
Per tal motiu mrtg refusa posar-se en marxa.
Dos posibles solucions:
'Cutre': fer '/bin/mkdir /var/lock/mrtg/' cada vegada que engegui el sistema.
'Funcional': Editar /etc/rc.local i incloure la següent linia:
/bin/mkdir /var/lock/mrtg/
Estic posant en marxa les gràfiques a PdA
Estic posant en marxa les gràfiques a PdA i em surt un a /var/log/mrtg/mrtg.log :
ERROR: could not find RRDs.pm. Use LibAdd: in mrtg.cfg to help mrtg find RRDs.pm
no es deuen generar els rrd al seu lloc, alguna pista ?
librrds-perl
estas segur que has instalat aquest paquet? aquest error es quan no troba la lliberia que proporciona aquest paquet