https://roure.act.uji.es/wiki/public/guifinet/doc/recetas/guifinetservidorgraficas
IMPORTANT: Aquest article s'hauria d'anomenar Servidor de gràfiques Guifi.net o snpservices però és millor no canviar-li el nom per què hi ha un gran nombre d'enllaços interns que caldria canviar!. Consulteu l'article Servidor Linux amb Guifi.net per veure com muntar un servidor Linux per a Guifi.net
Aquest article fa referència al que a Guifi.net s'anomena el Servidor de Gràfiques.
Recursos:
És necessita un servidor web que estigui connectat tant a la xarxa Guifi.net com a Internet. El paquet snpservices té les següents dependències:
$ apt-cache depends snpservices snpservices |Depèn: debconf Depèn: <debconf-2.0> cdebconf debconf Depèn: <httpd> ... Depèn: apache2 apache2-mpm-itk apache2-mpm-event apache2-mpm-prefork apache2-mpm-worker Depèn: php5 Depèn: php5-cli Depèn: php5-gd Depèn: rrdtool Depèn: librrdp-perl Depèn: librrds-perl Depèn: mrtg Depèn: mrtg-rrd
Com podeu veure requereix de:
IMPORTANT: Alguns repositoris que hi ha per Internet són obsolets i contenen versions de snpservices obsoletes! No utilitzeu per exemple:
Hi ha dues versions del paquet snpservices la versió 1 i la 2. Actualment (--acacha 16:37, 27 gen 2012 (UTC)) als repositoris només pots trobar la versió 2 però es manté l'opció de posar la versió 1 per a servidors antics.
La diferència a la web de triar versió 1 o 2, és que la versió 2 activa als nodes que estan marcats per a ser gestionats per un proxy v2, les aplicacions Liveping i LiveTraceroute entre d'altres. Aquestes aplicacions només estan disponibles en instal·lacions del paquet snpservices v2.
Repositori obsolet
deb http://tramuntana.evt.cat/mirror/debian/ ./
IMPORTANT: No l'utilitzeu a no se que sapigueu el que esteu fent
Repositori actual
Afegiu al fitxer /etc/apt/sources.list
deb http://repo.vic.guifi.net/debian guifi/
El repositori està firmat cal executar:
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 2E484DAB
I fer un update:
sudo apt-get update
--acacha 19:20, 29 gen 2012 (UTC)
Per altre banda, s'ha millorat el tema del repositori dels paquets, ara els paquets estan firmats per els desenvolupadors i el repositori també, així quan hi hagi actualitzacions no us sortira el missatge del que el paquet no es pot validar. Per fer-lo servir només heu de modificar si ja teníeu el repositori afegit o afegir aquesta línia al fitxer /etc/apt/sources.list
deb http://repo.vic.guifi.net/debian guifi/
com que el repositori esta firmat, s'ha d'introduïr la clau publica el primer cop que ho feu servir, per fer-ho heu d'executar aquesta comanda:
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 2E484DAB
m'he adonat que alguns cops aquest "keyserver" no respon, per lo que si us dona algun error, proveu amb aquest altre:
sudo apt-key adv --keyserver pgp.rediris.es --recv-keys 2E484DAB
executar:
sudo apt-get update
i ja podreu instalar els paquets del nou repositori.
Hem creat una nova branca per els paquets en desenvolupament, com ara el paquet guifi-proxy3 (amb LDAP enlloc de fitxer passwd), per fer-la servir, cal posar aquesta línia:
deb http://repo.vic.guifi.net/debian guifi-testing/
al fitxer /etc/apt/sources.list
Per tal de crear un servidor de gràfiques cal tenir disponible un servidor amb connexió a Internet. A més el servidor ha de ser accessible amb una IP pública d'Internet o nom DNS per tal de poder veure les gràfiques a la web de guifi.net si us hi connecteu a la web utilitzant la xarxa Internet i no pas la de guifi.
L'adreça IP millor si és estàtica però sinó es poden utilitzar serveis de DNS dinàmic.
IMPORTANT: El servidor de gràfiques ha de ser una màquina disponible des de internet (amb un IP pública) però també amb connexió a guifi, és a dir que ha de tenir una IP del tipus 10.x.x.x. Si la màquina no té IP de guifi, però es pot connectar a guifi, aleshores cal tenir en compte el NAT o les rutes de tornada de tots els dispositius que voleu monitoritzar (cal que el dispositiu pugui fer un ping a la IP del servidor de gràfiques)
En aquest servidor cal instal·lar el servei snpservices.
Anem a veureu una explicació detallada del que fa un servidor de gràfiques mitjançant un exemple real (servidor de gràfiques de Santa Barbarà a la comarca del Montsià). Les dades guifi són:
Un servidor de gràfiques té 4 tasques:
IMPORTANT: snpservices utilitza MRTG però no en el format original (utilitzava uns fitxers de log) sinó utilitzant RRD com a logformat. Això es pot veure al fitxer /var/lib/snpservices/data/mrtg.cfg on s'ha indicat la variable: LogFormat: rrdtool. Vegeu també MRTG i RRDTool
Com sap la web de guifi.net quin són el conjunt de dispositius dels quals ha de fer gràfiques un servidor de gràfiques? Doncs per què cada vegada que és crear un node a la web de guifi, el node pertany a una zona i es pot assignar un servidor de gràfiques per defecte a una zona.
NOTA: Els usuaris a permisos d'administrador de nodes poden canviar el servidor de gràfiques per defecte d'un node
Cal tenir en compte que no es monitoritzen els nodes sinó els trastos que hi ha als nodes (i només si estan operatius)
El següent esquema mostra com s'obtenen les dades de la web de guifi.net per tal de complir amb la primera tasca:
Servidor de gràfiques <--- Connexió a través d'Internet <-- Servei web: Fitxer CSV <--- Web de guifi.net
La web de guifi.net proporciona la següent URL
http://guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=NUMERO_ID_DEL_SERVEI.
Que s'encarregà de proporcionar el fitxer CSV amb la llista de dispositius a monitoritzar. Per exemple al servidor de Santa Barbara
IMPORTANT: Cal posar el ID del servei i no pas el del servidor
Per exemple en el nostre exemple el ID és 32729
http://guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=32729
Aquesta URL retornarà quelcom similar a:
25020,#AlfredCidRd1,10.139.29.167,wifi0;SBrblfrdCdRd1CPE0,Working 25470,#DIFERRd1,10.139.29.138,wifi0;SBrbDFRRd1CPE0,Working 25370,#DPerezRd1,10.139.29.170,wifi0;SBrbDPrzRd1CPE0,Working 25275,#elsForneRd1,10.139.29.168,wifi0;SBrblsFrnRd1CPE0,Working 25438,#GemmaRd1,10.139.29.137,wifi0;SBrbGmmRd1CPE0,Working 28211,#Gnrltt4BRd1,10.139.29.107,wifi0;SBrbGnrltt4BRd1CPE0,Working 25203,#InfoPlanaRd1,10.139.29.135,wifi0;SBrbnfPlnRd1CPE0,Working 26662,#mestre017Rd1,10.139.29.103,wifi0;SBrbmstr017Rd1CPE0,Working 25962,#mestre17Rd1,10.139.29.140,wifi0;SBrbmstr17Rd1CPE0,Working 25212,#OHMITERRARd1,10.139.29.136,wifi0;SBrbHMTRRRd1CPE0,Working 27648,#SBESRd1,10.139.29.106,eth0;SBrbSBSRd1CPE0,Working 26121,#SBFranjadePonentRd1,10.139.29.99,wifi0;SBrbSBFrnjdPnntRd1CPE0,Working 26473,#SBFranjadePonentRd2,10.139.29.166,wifi0;SBrbSBFrnjdPnntRd2CPE0,Working 28762,#SBrbAjuntamentRd1,10.139.29.173,wifi0;SBrbSBrbjntmntRd1CPE0,Working 26332,#SBrbAmetller53Rd1,10.139.29.142,wifi0;SBrbSBrbmtllr53Rd1CPE0,Working 27046,#SBrbAngelGuimera22Rd1,10.139.29.105,wifi0;SBrbSBrbnglGmr22Rd1CPE0,Working
Ara el cas d'un supernode:
21282,#SBrbCampanarRd1,10.139.29.97,wlan1;SBrbCampanarRd1AP1|wlan2;SBrbCampanarRd1AP2|wlan3;SBrbCampanarRd1AP3|wlan4;SBrbCampanarAjuntament|wlan5;SBrbCampanarCentreCultural|wlan6;SBrbCampanarInsLesPlanes,Working
25313,#SBrbCastillejos3Rd1,10.139.29.169,wifi0;SBrbSBrbCstlljs3Rd1CPE0,Working ...
Un fitxer de text separat per comes amb les dades dels trastos que monitoritza el servidor de gràfiques. Els trastos poden ser de dos tipus:
Les columnes d'un node simple seran:
25020,#AlfredCidRd1,10.139.29.167,wifi0;SBrblfrdCdRd1CPE0,Working
21282,#SBrbCampanarRd1,10.139.29.97,wlan1;SBrbCampanarRd1AP1|wlan2;SBrbCampanarRd1AP2|wlan3;SBrbCampanarRd1AP3|wlan4;SBrbCampanarAjuntament|wlan5;SBrbCampanarCentreCultural|wlan6;SBrbCampanarInsLesPlanes,Working
És el mateix només canvia el camp Nom de la interfície que ara conté la llista de interfícies i el nom del SSID del AP que hi ha en aquella interfície.
El servidor de gràfiques consulta periòdicament aquest fitxer. Per defecte és cada 30 minuts tal i com es pot veure a l'apartat Cron. Consulteu /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php per a més detalls.
Ara ja sabem com s'obtenen les dades. Ara anem a veure com es configura la web. La zona de Santa Barbarà està definida a:
http://guifi.net/santabarbara
Si observeu les molletes de pa de la part superior de la pàgina veureu la jerarquia de zones:
Inici › Menú principal › guifi.net World › Europe › Iberian Peninsula › Catalunya › Terres de l'Ebre › Montsià › Santa Bàrbara
Veureu que hi ha un apartat que diu:
Servidor de gràfiques per defecte 32729-Santa Bàrbara, GrafSbrbCCultural
NOTA: Només el creador de la zona o un admin pot modificar les dades del servidor de gràfiques per defecte. Si no s'indica cap servidor s'hereta dels pares, és a dir, s'agafa com a servidor de gràfiques el per defecte de la zona superior i si la zona superior no té node el de la superior a la superior i així successivament.
Això ens indica quin és el servidor de gràfiques de la zona. El podeu trobar a la URL:
http://guifi.net/ca/node/32729
NOTA: Per assignar un servidor de gràfiques a una zona primer cal crear un node, dins del node crear un dispositiu de tipus servidor i al node assignar-li el servei de proxy. S'ha d'assignar una adreça IP al servidor per tal de poder realitzar aquesta operació. Tingueu en compte que per donar una adreça a un servidor cal enllaçar-lo per cable amb algun dispositiu de xarxa (consulteu Enllaçant el servidor a un trasto)
Les dades importants són:
Com podeu veure el servidor de gràfiques ha de tenir una IP pública estàtica (o sinó utilitzar algun sistema de Dinàmic DNS) per tal de que les gràfiques puguin ser consultables per Internet. A l'exemple la web és:
http://80.32.55.197/snpservices/graphs/graphs.php
NOTA: Algun cop us pot passar que les pàgines de guifi tardin en contestar però que no sigui culpa del servidor de guifi. Com acabem de veure les gràfiques no són ofertes pel servidor web principal de guifi sinó que hi ha un sistema distribuït on diversos servidors de gràfiques es reparteixen la feina de proporcionar gràfiques a les diferents xones de guifi.net
Cal donar d'alta un servidor de gràfiques (SNP Graph Server) a http://guifi.net/ca/node/add/guifi-service.
Afegir al fitxer /etc/apt/sources.list:
deb http://tramuntana.evt.cat/mirror/debian/ ./
IMPORTANT: Oco! Aquest repositori (Vegeu Servidor_Guifi.net#Repositoris_Debian ) és obsolet utilitzeu ha un altre repositori i crec que té versions més actualitzades:
deb http://repo.vic.guifi.net/debian guifi/
També hi ha un mirror a:
http://serveis.guifi.net/repo/debian/
El repositori està firmat cal executar:
$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 2E484DAB
I fer un update:
$ sudo aptitude update
NOTA: També podeu utilitzar apt-get: sudo apt-get update
I:
$ sudo apt-get install snpservices
Us apareixerà el configurador (debconf). Primer segurament el de MRTG (si no el teniu instal·lat) i després el de snpservices. Us preguntarà per l'ID del servidor de gràfiques, per defecte us proporciona el del servidor bandoler de guifi. Heu de canviar aquest número per ID del servidor de gràfiques que esteu creant. El ID el podeu trobar a la web de guifi un cop hagiu crear el servidor. Per exemple a la zona de Tortosa (http://guifi.net/tortosa):
Veure un apartat que posa:
servidor de gràfiques per defecte 27276-Tortosa, SNP_INS_Ebre
La URL és:
http://guifi.net/node/27276
I per tant el ID és 27276. A la web del servidor posa que la URL accessible des de Internet és:
http://www.iesebre.com/snpservices/graphs/graphs.php
NOTA: Al instal·lar per a la versió 2 de CNML cal posar només la URL: http://www.iesebre.com/snpservices/
A Santa Barbara en canvi:
http://guifi.net/santabarbara
El servidor és:
servidor de gràfiques per defecte 32729-Santa Bàrbara, GrafSbrbCCultural
La URL:
http://guifi.net/node/32729
és a dir el ID és 32729
La URL des de Internet:
http://80.32.55.197/snpservices/graphs/graphs.php
Us heu d'assegurar que funciona el servidor de gràfiques a aquesta URL.
Podeu canviar la configuració amb:
$ sudo dpkg-reconfigure snpservices
Oco però que us farà més preguntes. En principi totes les opcions per defecte són les correctes.
També he instal·lat els paquets (cal?):
$ sudo apt-get install rrdtool librrdp-perl librrds-perl mrtg mrtg-rrd subversion php5-cli
IMPORTANT:
A Ubuntu, ens indica que es desinstal·laran un munt de paquets! Provat el --acacha 19:24, 26 març 2011 (UTC) i ja no passa
Creeu i editeu el fitxer /etc/apache2/conf.d/servidorgrafiquesGuifiNet:
$ sudo joe /etc/apache2/conf.d/servidorgrafiquesGuifiNet
I afegiu la línia:
Alias /snpservices /var/www/snpservices/graphs
Alias /snpservices /usr/share/snpservices
Apliqueu els canvis a Apache
$ sudo /etc/init.d/apache2 restart
Fixeu-vos que el cron ja s'haurà configurat:
$ dpkg -L snpservices /. /etc /etc/cron.d /etc/cron.d/snpservices /etc/logrotate.d /etc/logrotate.d/snpservices /etc/snpservices /etc/snpservices/config.php.template /usr /usr/share /usr/share/doc /usr/share/doc/snpservices /usr/share/doc/snpservices/README.Debian /usr/share/doc/snpservices/copyright /usr/share/doc/snpservices/README /usr/share/doc/snpservices/changelog.Debian.gz /usr/share/man /usr/share/man/man1 /usr/share/man/man1/snpservices.1.gz /usr/share/snpservices /usr/share/snpservices/common /usr/share/snpservices/common/qnodes.php /usr/share/snpservices/common/refresh.sh /usr/share/snpservices/common/refresh_cnml.php /usr/share/snpservices/common/mrtg.sh /usr/share/snpservices/common/cnml2ov2.php /usr/share/snpservices/common/ping.sh /usr/share/snpservices/common/refresh_mrtg.php /usr/share/snpservices/common/misc.php /usr/share/snpservices/misc /usr/share/snpservices/misc/xml2ov2.php /usr/share/snpservices/graphs /usr/share/snpservices/graphs/LICENSE.txt /usr/share/snpservices/graphs/graphs.php /usr/share/snpservices/graphs/refresh.php /usr/share/snpservices/graphs/config.php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php /usr/share/snpservices/graphs/cnml2mrtgcsv.php /var /var/log /var/log/snpservices /var/www /var/lib /var/lib/snpservices /var/lib/snpservices/tmp /var/lib/snpservices/data /var/lib/snpservices/rrimg /var/lib/snpservices/rrdb /var/www/snpservices
Recursos:
El primer que cal fer és crear el servei a la web de guifi.net. Aneu a:
http://guifi.net/ca/node/add/guifi-service
I afegiu un servei SNP Graph Server. Un cop creat el servei fixeu-vos en la URL. Per exemple:
http://guifi.net/node/22758
El número final és l'identificador del servidor de gràfiques. Apunteu-lo per què l'utilitzarem més endavant.
NOTA: Necessitareu un usuari de guifi.net per tal de poder crear un servei. Si encara no us heu fet un usuari creeu-lo aquí.
Cal instal·lar els següents paquets:
$ sudo apt-get install rrdtool librrdp-perl librrds-perl mrtg mrtg-rrd subversion php5-cli
Es dona per suposat que disposeu d'un servidor web amb Apache. Consulteu l'article Apache si voleu obtenir més informació sobre aquest servidor.
Al subversion de guifi.net (allotjat a la web de projectes de la farga) tenim el codi necessari per al servidor de gràfiques.
Aneu a la carpeta /var/www:
$ cd /var/www
I obtingueu el codi amb:
$ sudo svn checkout http://[email protected]/svn/guifi/snpservices
L'usuari d'accés és anonymous amb qualsevol paraula de pas.
Això genera una carpeta anomenada snpservices. Ara cal publicar aquesta pàgina al servidor web Apache.
Creeu i editeu el fitxer /etc/apache2/conf.d/servidorgrafiquesGuigiNet:
$ sudo joe /etc/apache2/conf.d/servidorgrafiquesGuigiNet
I afegiu la línia:
Alias /guifigraphs /var/www/snpservices/graphs
També cal modificar els permisos dels fitxers:
$ sudo chmod a+rw /var/www/snpservices/tmp
I crear un parell de carpetes:
$ sudo mkdir /var/www/snpservices/rrdb $ sudo mkdir /var/www/snpservices/rrimg
Ara procedim a configurar el servidor de gràfiques. Obtenim una còpia des de la plantilla del fitxer de configuració:
$ sudo cp /var/www/snpservices/common/config.php.template /var/www/snpservices/common/config.php
Cal ajustar els següents paràmetres al que correspongui per al vostre servidor. Cal modificar el ID del vostre servidor de gràfiques:
$snp_path='/var/www/snpservices'; $SNPGraphServerId = 22758; //Poseu aquí el valor que us correspongui $MRTGConfigSource='http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=9039'; $CNMLSource='http://www.guifi.net/snpservices/common/qnodes.php?nodes=%s'; $rrddb_path='/var/www/snpservices/rrdb/'; $rrdimg_path='/var/www/snpservices/rrimg/';
Finalment cal configurar cron per automatitzar les tasques del servidor:
*/30 * * * * cd /var/www/snpservices/graphs; php mrtgcsv2mrtgcfg.php */5 * * * * env LANG=c /usr/bin/mrtg /var/www/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l
Per no haver d'esperar esperar, forceu la primera descàrrega dels trastos a fer gràfiques des de guifi.net executant:
$ cd /var/www/snpservices/graphs $ php mrtgcsv2mrtgcfg.php
Ara cal editar el node:
http://guifi.net/node/22758/edit
I determinar la URL.
IMPORTANT:
També cal modificar el fitxer:
/var/www/snpservices/graphs$ cat config.php
<?php $rrdtool_path='/usr/bin/rrdtool'; $rrddb_path='/var/www/snpservices/rrdb/'; // -------- XML file Load --------------- $xml = simplexml_load_file('guifi.xml'); ?>
Concretament fixeu-vos en la variable $rrddb_path.
$ dpkg -L snpservices /. /etc /etc/cron.d /etc/cron.d/snpservices /etc/logrotate.d /etc/logrotate.d/snpservices /etc/snpservices /etc/snpservices/config.php.template /usr /usr/share /usr/share/doc /usr/share/doc/snpservices /usr/share/doc/snpservices/README.Debian /usr/share/doc/snpservices/copyright /usr/share/doc/snpservices/README /usr/share/doc/snpservices/changelog.Debian.gz /usr/share/man /usr/share/man/man1 /usr/share/man/man1/snpservices.1.gz /usr/share/snpservices /usr/share/snpservices/common /usr/share/snpservices/common/qnodes.php /usr/share/snpservices/common/refresh.sh /usr/share/snpservices/common/refresh_cnml.php /usr/share/snpservices/common/mrtg.sh /usr/share/snpservices/common/cnml2ov2.php /usr/share/snpservices/common/ping.sh /usr/share/snpservices/common/refresh_mrtg.php /usr/share/snpservices/common/misc.php /usr/share/snpservices/misc /usr/share/snpservices/misc/xml2ov2.php /usr/share/snpservices/graphs /usr/share/snpservices/graphs/LICENSE.txt /usr/share/snpservices/graphs/graphs.php /usr/share/snpservices/graphs/refresh.php /usr/share/snpservices/graphs/config.php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php /usr/share/snpservices/graphs/cnml2mrtgcsv.php /var /var/log /var/log/snpservices /var/www /var/lib /var/lib/snpservices /var/lib/snpservices/tmp /var/lib/snpservices/data /var/lib/snpservices/rrimg /var/lib/snpservices/rrdb /var/www/snpservices
El fitxer de configuració principal /etc/snpservices/config.php no apareix a la llista per què es crea dinàmicament durant la instal·lació del paquet.
Consulteu Creació d'un servidor a la web de guifi.net.
TODO
La carpeta principal de configuració és (seguint l'estàndard FHS):
/etc/snpservices
Aquí i trobareu dos fitxers:
$ ls /etc/snpservices config.php config.php.template
El fitxer principal de configuració és /etc/snpservices/config.php. L'altre és una plantilla d'exemple.
El contingut típic del fitxer és:
$ cat /etc/snpservices/config.php <?php // SNPGraphServerID: Default Graph Server ID $SNPGraphServerId = 27276; // rootZone: which is the ROOT zone $rootZone = 3671; // SNPDataServer_url: without ending backslash, the url where the data is $SNPDataServer_url = 'http://guifi.net'; // MRTGConfigSource: mrtg csv data // As a input, could be either a local (to be created from // cached CNML file, or remote // $MRTGConfigSource='http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php'; $MRTGConfigSource='http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server='.$SNPGraphServerId; // CNMLSource: url for CNML node query, use sprintf syntax // MySQL-drupal source // $CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node'; // Cached CNML source (prefered) $CNMLSource='http://www.guifi.net/snpservices/common/qnodes.php?nodes=%s'; $CNMLData='/var/lib/snpservices/data/guifi.cnml'; // rrdtool parameters $rrdtool_path='/usr/bin/rrdtool'; $rrddb_path='/var/lib/snpservices/rrdb/'; $rrdimg_path='/var/lib/snpservices/rrimg/'; // mrtg local header $rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin # LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi HtmlDir: %s ImageDir: %s LogDir: %s LogFormat: rrdtool ThreshDir: %s Forks: 12 '; // mrtg ping template $mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s PageTop[%s_ping]: <H1>Latència %s</H1> <TABLE <TR><TD>System:</TD> <TD>%s</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> <TR><TD>IP:</TD> <TD>%s</TD></TR> </TABLE> Target[%s_ping]: `/usr/share/snpservices/common/ping.sh %s` MaxBytes[%s_ping]: 2000 Options[%s_ping]: growright,unknaszero,nopercent,gauge LegendI[%s_ping]: Perduts % LegendO[%s_ping]: Temps mig Legend1[%s_ping]: Temps max. en ms Legend2[%s_ping]: Temps min. en ms YLegend[%s_ping]: RTT (ms) '; $mrtg_traffic_template='Target[%s_traf]: %s:[email protected]%s: SetEnv[%s_traf]: MRTG_INT_IP="%s" MRTG_INT_DESCR="%s" MaxBytes[%s_traf]: 3000000 Title[%s_traf]: Trafic a %s de %s PageTop[%s_traf]: <H1>Tràfic a %s de %s</H1> <TABLE> <TR><TD>System:</TD> <TD>%s</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>%s</TD></TR> <TR><TD>Max Speed:</TD> <TD>30.0 Mbits/s</TD></TR> </TABLE> '; ?>
Es tracta d'un fragment d'un fitxer PHP que configura el servidor de gràfiques.
Les variables més importants són:
http://guifi.net/ca/node/27276
http://guifi.net/ca/node/3671
La resta de variables són variables de configuració de l'eina MRTG o de les fonts de dades per a crear les gràfiques:
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server='.$SNPGraphServerId;
és a dir que executa un PHP de la web de guifi per tal d'obtenir les dades d'un servidor de gràfiques. Per exemple la URL:
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=27276
Obté un fitxer CSV amb la llista de nodes gestionats pel servidor de gràfiques:
30946,#Av.stadi5cRd1,10.36.253.201,wifi0;Tortosavstd5cRd1CPE0,Working 29200,#avjesusRd1,10.36.253.199,wifi0;TortosavjssRd1CPE0,Planned 27385,#avremolinsRd1,10.36.253.42,wifi0;TortosavrmlnsRd1CPE0,Working 28902,#camiManxa10Rd1,10.36.253.196,wifi0;TortosacmMnx10Rd1CPE0,Working 35998,#CanaletPauRd1,10.139.221.198,ath0;TortosaCnltPRd1CPE0,Testing 34484,#carreterasimpaticaRd2,10.139.221.164,ath0;TortosacrrtrsmptcRd2CPE0,Working 28294,#CodulsNodeRd1,10.139.220.161,eth0;TortosaCdlsNdRd1AP0,Planned 30298,#IesEbre_ProvesRB435G1,10.36.253.129,wlan1;TortosaProvesRB435AP1,Working 30358,#IesEbre_ProvesRB435G,10.139.221.1,wlan1;TortosasbrPrvsRB435GAP0,Working 27420,#JardiBesuldoTerol16Rd1,10.36.253.13,wifi0;TortosaJrdBsldTrl16Rd1CPE0,Working 24545,#raul1935Rd1,10.36.253.36,wifi0;Tortosarl1935Rd1CPE0,Planned 34414,#ReguersDGMRd1,10.140.94.36,ath0;TortosaRgrsDGMRd1CPE0,Working 36022,#RqtsOscarRd1,10.139.221.136,ath0;TortosaRqtsscrRd1CPE0,Planned 35249,#TortosavanesaRd1,10.36.253.2,wifi0;TortosaTrtsvnsRd1CPE0,Working 19637,#TortosaAlcanyiz26Rd1,10.36.253.99,wifi0;TortosaTrtslcnyz26Rd1CPE0,Working 25865,#TortosaAlcanyiz26_T1,10.36.253.169,Working ...
Les següents variables configuren el CNML:
I les següents configuren primer RRDTool i després MRTG
Finalment els templates de MRTG:
Es pot reconfigurar el paquet en qualsevol moment amb:
$ sudo dpkg-reconfigure snpservices
L'aplicació és accessible per la URL:
http://nomdelservidor/snpservices
Si intenteu entrar un donarà un error Forbidden. Aquesta aplicació no està pensada per a ser accedida de forma interactiva sinó que és accessible des la web de guifi.net.
L'aplicació utilitza Apache
Configuració de MRTG. Aquest fitxer és creat dinàmicament per l'script PHP /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php
Consulteu per a més detalls:
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php
NOTA: Tots dos fitxers són el mateix! un és un link de l'altre
Extracte d'exemple:
# PathAdd: /usr/local/rrdtool-1.2.12/bin # LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi HtmlDir: /var/lib/snpservices/rrimg/ ImageDir: /var/lib/snpservices/rrimg/ LogDir: /var/lib/snpservices/rrdb/ LogFormat: rrdtool ThreshDir: /var/lib/snpservices/rrdb/ Forks: 12 Title[25020_ping]: Temps del ping de #AlfredCidRd1 PageTop[25020_ping]: <H1>Latència #AlfredCidRd1</H1> <TABLE <TR><TD>System:</TD> <TD>#AlfredCidRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> <TR><TD>IP:</TD> <TD>10.139.29.167</TD></TR> </TABLE> Target[25020_ping]: `/usr/share/snpservices/common/ping.sh 10.139.29.167` MaxBytes[25020_ping]: 2000 Options[25020_ping]: growright,unknaszero,nopercent,gauge LegendI[25020_ping]: Perduts LegendO[25020_ping]: Temps mig Legend1[25020_ping]: Temps max. en ms Legend2[25020_ping]: Temps min. en ms YLegend[25020_ping]: RTT (ms) Target[25020-0_traf]: \wifi0:[email protected]: SetEnv[25020-0_traf]: MRTG_INT_IP="10.139.29.167" MRTG_INT_DESCR="#AlfredCidRd1" MaxBytes[25020-0_traf]: 3000000 Title[25020-0_traf]: Trafic a SBrblfrdCdRd1CPE0 de #AlfredCidRd1 PageTop[25020-0_traf]: <H1>Tràfic a SBrblfrdCdRd1CPE0 de #AlfredCidRd1</H1> <TABLE> <TR><TD>System:</TD> <TD>#AlfredCidRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>SBrblfrdCdRd1CPE0</TD></TR> <TR><TD>Max Speed:</TD> <TD>30.0 Mbits/s</TD></TR> </TABLE> Title[25470_ping]: Temps del ping de #DIFERRd1 PageTop[25470_ping]: <H1>Latència #DIFERRd1</H1> <TABLE <TR><TD>System:</TD> <TD>#DIFERRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> ...
El servidor de gràfiques és una aplicació que bàsicament funciona executant de forma periòdica un script PHP i MRTG:
$ cat /etc/cron.d/snpservices # # Regular cron jobs for the snpservices package # */30 * * * * root if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php >> /var/log/snpservices/mrtgccfg.log 2>&1; fi */5 * * * * root if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] && [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l >> /var/log/snpservices/mrtg.log 2>&1; fi
Com podeu veure es llegeix un punt de les gràfiques cada 5 minuts i cada mitjà hora es comprova la disponibilitat. Més concretament:
IMPORTANT: Observeu que els fitxers /var/lib/snpservices/data/mrtg.cfg i /usr/share/snpservices/graphs/data/mrtg.cfg són el mateix, un és un soft link de l'altre!
Vegeu també cron
Els servidor proveïxen de les següents gràfiques:
Exemple | Exemple de URL | Paràmetres | Descripció |
---|---|---|---|
http://www.iesebre.com/snpservices/graphs/graphs.php?device=29363&format=short&type=availability |
|
Gràfica de disponibilitat en format curt. Les opcions possibles són Up (verd) o Down (vermell). Es mostren a la llista de trastos de un supernode i permet fer-se una idea de les disponibilitats dels trastos de un supernode. | |
http://www.iesebre.com/snpservices/graphs/graphs.php?device=29363&format=long&type=availability |
|
Gràfica de disponibilitat en format llarg. Igual que l'anterior però a més mostra l'últim moment (hora) en que s'ha consultat l'estat. Els temps entre consultes de disponibilitats venen determinats per la configuració del cron. Normalment es pot observar a llocs com per exemple les pàgines de disponibilitat de una zona. Per exemple la zona de Tortosa: http://guifi.net/ca/node/17893/view/availability | |
http://www.iesebre.com/snpservices/graphs/graphs.php?type=supernode&node=26725&direction=in |
|
Mostra els transits de dades dels APs d'un supernode ja siguin AP/client o WDS .Hi ha dos subtipus depenent si mostren el transit Wlan d'entrada (in) o de sortida (out). Es mostren a la pàgina principal dels supernodes. Per exemple http://guifi.net/ca/InstitutEbre | |
http://www.iesebre.com/snpservices/graphs/graphs.php?type=clients&node=26725&radio=29363&direction=in |
|
Es mostra als trastos que fan de Ap i tenen diversos clients. | |
http://guifi.net/guifi/graph_detail?type=pings&node=26725&device=29363 |
|
Aquestes gràfiques es mostren o als clients o als detalls de cada trasto de un supernode. Exemples:
Consulteu el fitxer /usr/share/snpservices/graphs/data/mrtg.cfg |
Les gràfiques es generen amb RRDTool (excepte les de tipus availability que es generen amb la llibreria GD de php). ES pot consultar la comanda que s'utilitza activant el mode degub. Per exemple:
http://www.iesebre.com/snpservices/graphs/graphs.php?type=supernode&node=26725&direction=in&debug
L'ordre és:
/usr/bin/rrdtool graph - --font DEFAULT:7 --title="Supernode: TortosaINSEbre - wLANs in" --imgformat=PNG --width=600 --height=120 --vertical-label="Bytes/s" \ --start=-86400 --end=-300 --base=1000 -E DEF:val7="/var/lib/snpservices/rrdb/19633-4_traf.rrd":ds0:AVERAGE CDEF:val7a=val7,1,* LINE1:val7a#0000FF:" TortosaINSEbreSeminari in" \ GPRINT:val7a:LAST:"Ara\:%8.2lf %s" GPRINT:val7a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val7a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 1.12 GB\n" DEF:val6="/var/lib/snpservices \ /rrdb/19633-3_traf.rrd":ds0:AVERAGE CDEF:val6a=val6,1,* LINE1:val6a#FF0000:" TortosaINSEbreRd1Roser in" GPRINT:val6a:LAST:"Ara\:%8.2lf %s" GPRINT:val6a:AVERAGE:"Mig\:%8.2lf %s" \ GPRINT:val6a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 1.08 GB\n" DEF:val0="/var/lib/snpservices/rrdb/29363-0_traf.rrd":ds0:AVERAGE CDEF:val0a=val0,1,* LINE1:val0a#FFCC00:" \ TortosaINSEbreWDSAlcanyiz26 in" GPRINT:val0a:LAST:"Ara\:%8.2lf %s" GPRINT:val0a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val0a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 811.87 MB\n" \ DEF:val4="/var/lib/snpservices/rrdb/19633-1_traf.rrd":ds0:AVERAGE CDEF:val4a=val4,1,* LINE1:val4a#66CCFF:" TortosaINSEbreRd1AP2 in" GPRINT:val4a:LAST:"Ara\:%8.2lf %s" \ GPRINT:val4a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val4a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 421.03 MB\n" DEF:val10="/var/lib/snpservices/rrdb/29442-0_traf.rrd":ds0:AVERAGE \ CDEF:val10a=val10,1,* LINE1:val10a#000000:" TortosaInsEbreFabreguesMotors in" GPRINT:val10a:LAST:"Ara\:%8.2lf %s" GPRINT:val10a:AVERAGE:"Mig\:%8.2lf %s" \ GPRINT:val10a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 270.62 MB\n" DEF:val9="/var/lib/snpservices/rrdb/29440-0_traf.rrd":ds0:AVERAGE CDEF:val9a=val9,1,* LINE1:val9a#00CC00:" \ TortosaInsEbreFabreguesNens in" GPRINT:val9a:LAST:"Ara\:%8.2lf %s" GPRINT:val9a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val9a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 137.88 MB\n" \ DEF:val3="/var/lib/snpservices/rrdb/19633-0_traf.rrd":ds0:AVERAGE CDEF:val3a=val3,1,* LINE1:val3a#990000:" TortosaINSEbreRd1AP1 in" GPRINT:val3a:LAST:"Ara\:%8.2lf %s" \ GPRINT:val3a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val3a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 48.12 MB\n" DEF:val5="/var/lib/snpservices/rrdb/19633-2_traf.rrd":ds0:AVERAGE \ CDEF:val5a=val5,1,* LINE1:val5a#FFFF00:" TortosaINSEbreRd1AP3 in" GPRINT:val5a:LAST:"Ara\:%8.2lf %s" GPRINT:val5a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val5a:MAX:"Max\:%8.2lf %s" \ COMMENT:"Total\: 12.32 MB\n" DEF:val1="/var/lib/snpservices/rrdb/29363-1_traf.rrd":ds0:AVERAGE CDEF:val1a=val1,1,* LINE1:val1a#800000:" TortosaINSEbreAPNordEst in" \ GPRINT:val1a:LAST:"Ara\:%8.2lf %s" GPRINT:val1a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val1a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 8.46 MB\n" DEF:val2="/var/lib/snpservices\/rrdb/29363-2_traf.rrd":ds0:AVERAGE CDEF:val2a=val2,1,* LINE1:val2a#C0FFC0:" TortosaHospitalINSEbre in" GPRINT:val2a:LAST:"Ara\:%8.2lf %s" \ GPRINT:val2a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val2a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 0 B\n" \ DEF:val8="/var/lib/snpservices/rrdb/19633-5_traf.rrd":ds0:AVERAGE CDEF:val8a=val8,1,* \ LINE1:val8a#FFDCA8:" TortosaOmniaClubTennis in" GPRINT:val8a:LAST:"Ara\:%8.2lf %s" \ GPRINT:val8a:AVERAGE:"Mig\:%8.2lf %s" GPRINT:val8a:MAX:"Max\:%8.2lf %s" COMMENT:"Total\: 0 B\n"
Per provar la generació de la imatge es pot executar al mateix servidor de gràfiques
$ l'ordre anterior > imatge.png
Hi ha altres paràmetres de la URL per defecte que només es modifiquen quan es vol consultar el detall de les gràfiques:
Les bases de dades de l'aplicació snpservices tal i com marca l'estàndard FHS es guarden a la carpeta:
/var/lib/snpservices
Trobareu les subcarpetes
$ ls /var/lib/snpservices data rrdb rrimg tmp
On:
Està pendent de fer:
$ man snpservices SNPSERVICES(SECTION) SNPSERVICES(SECTION) NAME snpservices - program to do something SYNOPSIS snpservices [options] files... bar [options] files... DESCRIPTION This manual page documents briefly the snpservices and bar commands. snpservices is a program that... OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the Info files. -h, --help Show summary of options. -v, --version Show version of program. SEE ALSO bar(1), baz(1). The programs are documented fully by The Rise and Fall of a Fooish Bar, available via the Info system. AUTHOR snpservices was written by <upstream author>. This manual page was written by Carles Guadall Blancafort <[email protected]pingui.net>, for the Debian project (but may be used by others).
Aquest script és executat per Cron cada mitja hora, vegeu el fitxer:
/etc/cron.d/snpservices
NOTA: Observeu que el fitxer de log corresponent al resultat de l'execució d'aquest script és /var/log/snpservices/mrtgccfg.log
L'objectiu d'aquest script és actualitzar el fitxer:
/usr/share/snpservices/graphs/data/mrtg.cfg
o el que és el mateix, el fitxer:
/var/lib/snpservices/data/mrtg.cfg
Ja que un és un soft link de l'altre:
# ls -la /usr/share/snpservices/graphs/data/mrtg.cfg lrwxrwxrwx 1 root root 34 mai 11 23:54 ../data/mrtg.cfg -> /var/lib/snpservices/data/mrtg.cfg
A partir de les dades de la web de guifi.net. El fitxer mrtg.cfg conté les dades MRTG de tots els nodes que estan sota la monitorització del servidor de gràfiques.
Podeu mirar de forçar-ne l'execució:
$ sudo su # cd /usr/share/snpservices/graphs/ # env LANG=C /usr/bin/php mrtgcsv2mrtgcfg.php Last: 2012/05/31 17:00:01 Now: 2012/05/31 17:22:41 ServerId: 48448 Still fresh.
Us pot passar que no faci res i us doni el missatge:
Still fresh.
Llegint el codi sembla que han de passar entre 60 i 90 minuts entre peticions. El valor exacte entre 60 i 90 minuts depèn del número de servidor de gràfiques que ho demana (es fa una operació de mòdul amb aquest número).
Tot seguit podeu veure el codi de l'script (--acacha (discussió) 17:30, 31 maig 2012 (CEST)):
<?php if (file_exists("/etc/snpservices/config.php")) { include_once("/etc/snpservices/config.php"); } else { include_once("/etc/snpservices/config.php.template"); } $hlastnow = @fopen($SNPDataServer_url."/guifi/refresh/cnml", "r") or die('Error reading changes\n'); $last_now = fgets($hlastnow); fclose($hlastnow); $hlast= @fopen("/tmp/last_update.mrtg", "r"); if (($hlast) and ($last_now == fgets($hlast))) { fclose($hlast); echo "No changes.\n"; exit(); } print $last_now; $hf = @fopen($MRTGConfigSource,"r") or die('Error reading MRTG csv input\n"'); $cf = @fopen('/var/lib/snpservices/data/mrtg.cfg','w+'); fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path)); while ( $buffer = fgets($hf, 4096) ) { // $buffer = substr($buffer,0,-1); $buffer = str_replace("\n","",$buffer); $dev=explode(',',$buffer); fputs($cf,sprintf($mrtg_ping_template, $dev[0], $dev[1], $dev[0], $dev[1], $dev[1], $dev[2], $dev[0], $dev[2], $dev[0], $dev[0], $dev[0], $dev[0], $dev[0], $dev[0], $dev[0], $dev[0]) ); if (!isset($dev[3]) or empty($dev[3])) continue; $t = explode('|',$dev[3]); //print_r($t); foreach ($t as $k=>$r) { // is the snmp Index given?? if (is_numeric($r)) { $rn = $dev[0].'-'.$r; $trap = $r; $wn = 'wLan'; } // end if numeric snmp Index else { $rn = $dev[0].'-'.$k; // snmp is given by interface name $d = explode(';',$r); $wn = $d[1]; $trap = '\\'.$d[0]; } fputs($cf,sprintf($mrtg_traffic_template."\n", $rn, $trap, $dev[2], $rn, $dev[2], $dev[1], $rn, $rn, $wn, $dev[1], $rn, $wn, $dev[1], $dev[1], $wn) ); } // foreach interface } fclose($hf); fclose($cf); $hlast= @fopen("/tmp/last_update.mrtg", "w+") or die('Error!'); fwrite($hlast,$last_now); fclose($hlast); ?>
En resum el que es fa és:
/var/lib/snpservices/data/mrtg.cfg. Si no ha canviat no és fa res més
TODO. És l'script que proporciona el servei web.
Aquest fitxer es generat i actualitzat periòdicament (tasca cron) per l'script:
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php
Conté les gràfiques de disponibilitat (pings, consulteu Gràfiques proveïdes) que proveïxen els servidors de gràfiques de la web de guifi.net.
Un extracte d'exemple:
# PathAdd: /usr/local/rrdtool-1.2.12/bin # LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi HtmlDir: /var/lib/snpservices/rrimg/ ImageDir: /var/lib/snpservices/rrimg/ LogDir: /var/lib/snpservices/rrdb/ LogFormat: rrdtool ThreshDir: /var/lib/snpservices/rrdb/ Forks: 25 Title[41295_ping]: Temps del ping de #CanaletTerrerRoigDGMRd1 PageTop[41295_ping]: <H1>Latència #CanaletTerrerRoigDGMRd1</H1> <TABLE <TR><TD>System:</TD> <TD>#CanaletTerrerRoigDGMRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> <TR><TD>IP:</TD> <TD>10.139.221.211</TD></TR> </TABLE> Target[41295_ping]: `/usr/share/snpservices/common/ping.sh 10.139.221.211` MaxBytes[41295_ping]: 2000 Options[41295_ping]: growright,unknaszero,nopercent,gauge LegendI[41295_ping]: Perduts LegendO[41295_ping]: Temps mig Legend1[41295_ping]: Temps max. en ms Legend2[41295_ping]: Temps min. en ms YLegend[41295_ping]: RTT (ms) Target[41295-0_traf]: \ath0:[email protected]: SetEnv[41295-0_traf]: MRTG_INT_IP="10.139.221.211" MRTG_INT_DESCR="#CanaletTerrerRoigDGMRd1" MaxBytes[41295-0_traf]: 104857600 Title[41295-0_traf]: Trànsit a TortosaCnltTrrrRgDGMRd1CPE0 de #CanaletTerrerRoigDGMRd1 PageTop[41295-0_traf]: <H1>Trànsit a TortosaCnltTrrrRgDGMRd1CPE0 de #CanaletTerrerRoigDGMRd1</H1> <TABLE> <TR><TD>System:</TD> <TD>#CanaletTerrerRoigDGMRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>TortosaCnltTrrrRgDGMRd1CPE0</TD></TR> <TR><TD>Max Speed:</TD> <TD>100 Mbytes/s</TD></TR> </TABLE>
IMPORTANT: Fixeu-vos que tot i ser mrtg s'utilitza rrdtool a través del paràmetre logformat!
A l'exemple es tracta d'una gràfica de pings (disponibilitat). Els pings es fan amb l'ordre:
/usr/share/snpservices/common/ping.sh 10.139.221.211
Aquest és el fitxer de log on es guarda el resultat d'executar l'script:
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php
Aquest script és executat per Cron cada mitjà hora (fitxer /etc/cron.d/snpservices)
$ sudo tail -f --lines=500 /var/log/snpservices/mrtgccfg.log ... Last: 2012/05/31 14:00:01 Now: 2012/05/31 14:30:01 ServerId: 48448 Sever CNML dated as: 2012/05/31 14:18:31 Waiting for 283.8 seconds 2012/05/31 14:34:47 Last: 2012/05/31 15:30:01 Now: 2012/05/31 15:00:02 ServerId: 48448 Still fresh. Last: 2012/05/31 15:30:01 Now: 2012/05/31 15:30:01 ServerId: 48448 Still fresh. Last: 2012/05/31 15:30:01 Now: 2012/05/31 16:00:01 ServerId: 48448 Sever CNML dated as: 2012/05/31 15:36:29 Waiting for 283.8 seconds 2012/05/31 16:04:50 Last: 2012/05/31 17:00:01 Now: 2012/05/31 16:30:01 ServerId: 48448 Still fresh.
Podeu observar els intervals de cada 30 minuts...
Aquest fitxers es poden observar la majoria d'errors:
$ sudo tail -f --lines=500 /var/log/snpservices/mrtg.log
També podeu forcar una execució manual de mrtg executant:
$ sudo su # env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l
L'aplicació ha estat creada principalment per Miquel Martos i a més es va empaquetar per a Debian amb el nom de paquet snpservices
Durant la instal·lació del paquet no només s'instal·len els fitxers sinó que a més es configura el servidor de gràfiques utilitzant Debconf. Aquesta configuració és interactiva amb l'usuari i es pot tornar a fer en qualsevol moment executant:
NOTA: Vegeu l'eina debconf-set-selections si esteu interessats en automatitzar/preseed l'instal·lació del paquet
Els fitxers que intervenen en la configuració del paquet els podeu trobar a l'interior del paquet o també a la carpeta /var/lib/dpkg/info
$ geany /var/lib/dpkg/info/snpservices. <-- Tabuleu dos cops snpservices.conffiles snpservices.list snpservices.postinst snpservices.templates snpservices.config snpservices.md5sums snpservices.postrm
El fitxer /var/lib/dpkg/info/snpservices.templates conté les plantilles de les preguntes que fa debconf:
Template: snpservices/SNPGraphServerId Type: string Default: 6559 Description: SNP Graph Server Id. (Default: bandoler=6559) Template: snpservices/rootZone Type: string Default: 3671 Description: rootZone: which is the ROOT zone. (Default: 3671) Template: snpservices/SNPDataServerurl Type: string Default: http://guifi.net Description: SNPDataServer_url: without ending backslash, the url where the data is. (Default: http://guifi.net) Template: snpservices/MRTGConfigSource Type: string Default: http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server= Description: MRTGConfigSource: mrtg csv data. (Only URL, Graph Server Id will be concatenated) Template: snpservices/CNMLSource Type: string Default: http://www.guifi.net/snpservices/common/qnodes.php?nodes=%s Description: CNMLSource: url for CNML node query, use sprintf syntax. Template: snpservices/rrddbpath Type: string Default: /var/lib/snpservices/rrdb/ Description: rrddb path. Template: snpservices/rrdimgpath Type: string Default: /var/lib/snpservices/rrimg/ Description: rddimg path. Template: snpservices/forcefetch Type: boolean Default: true Description: Force to fetch mrtg.cfg now.
Com podeu veure hi ha força preguntes però totes no us las farà durant la instal·lació (ni tan soses durant la reconfiguració). Les preguntes es mostres segons la prioritat que se'ls hi doni al fitxer:
$ cat /var/lib/dpkg/info/snpservices.config #!/bin/sh -e . /usr/share/debconf/confmodule MY_ARCH=`dpkg --print-architecture` if [ "$1" = configure -o "$1" = reconfigure ] ; then db_input high snpservices/SNPGraphServerId || true db_input medium snpservices/rootZone || true db_input medium snpservices/SNPDataServerurl || true db_input medium snpservices/MRTGConfigSource || true db_input medium snpservices/CNMLSource || true db_input medium snpservices/rrddbpath || true db_input medium snpservices/rrdimgpath || true db_input high snpservices/forcefetch || true db_go fi exit 0
Com podeu veure les úniques preguntes que es fan durant la instal·lació (Debconf per defecte només mostra preguntes high o superior) són:
db_input high snpservices/SNPGraphServerId db_input high snpservices/forcefetch
L'script que fa la feina durant la instal·lació del paquet és:
$ cat /var/lib/dpkg/info/snpservices.postinst #! /bin/sh # # $Id$ # set -e configfile='/etc/snpservices/config.php'; tmpfile=`/bin/tempfile -m 644`; case $1 in configure|reconfigure) . /usr/share/debconf/confmodule db_version 2.0 || [ $? -lt 30 ] db_get snpservices/SNPGraphServerId SNPGraphServerId=$RET db_get snpservices/rootZone rootZone=$RET db_get snpservices/SNPDataServerurl SNPDataServerurl=$RET db_get snpservices/MRTGConfigSource MRTGConfigSource=$RET db_get snpservices/CNMLSource CNMLSource=$RET db_get snpservices/rrddbpath rrddbpath=$RET db_get snpservices/rrdimgpath rrdimgpath=$RET db_get snpservices/forcefetch forcefetch=$RET /bin/cat << EOT > $tmpfile <?php // SNPGraphServerID: Default Graph Server ID \$SNPGraphServerId = $SNPGraphServerId; // rootZone: which is the ROOT zone \$rootZone = $rootZone; // SNPDataServer_url: without ending backs lash, the url where the data is \$SNPDataServer_url = '$SNPDataServerurl'; // MRTGConfigSource: mrtg csv data // As a input, could be either a local (to be created from // cached CNML file, or remote // \$MRTGConfigSource='http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php'; \$MRTGConfigSource='$MRTGConfigSource'.\$SNPGraphServerId; // \$MRTGConfigSource='/var/lib/snpservices/data/guifi_mrtg.csv'; // CNMLSource: url for CNML node query, use sprintf syntax // MySQL-drupal source // \$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node'; // Cached CNML source (prefered) \$CNMLSource='$CNMLSource'; \$CNMLData='/var/lib/snpservices/data/guifi.cnml'; // rrdtool parameters \$rrdtool_path='/usr/bin/rrdtool'; \$rrddb_path='$rrddbpath'; \$rrdimg_path='$rrdimgpath'; // mrtg local header \$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin # LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi HtmlDir: %s ImageDir: %s LogDir: %s LogFormat: rrdtool ThreshDir: %s Forks: 12 '; // mrtg ping template \$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s PageTop[%s_ping]: <H1>Latència %s</H1> <TABLE <TR><TD>System:</TD> <TD>%s</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> <TR><TD>IP:</TD> <TD>%s</TD></TR> </TABLE> Target[%s_ping]: \`/usr/share/snpservices/common/ping.sh %s\` MaxBytes[%s_ping]: 2000 Options[%s_ping]: growright,unknaszero,nopercent,gauge LegendI[%s_ping]: Perduts % LegendO[%s_ping]: Temps mig Legend1[%s_ping]: Temps max. en ms Legend2[%s_ping]: Temps min. en ms YLegend[%s_ping]: RTT (ms) '; \$mrtg_traffic_template='Target[%s_traf]: %s:[email protected]%s: SetEnv[%s_traf]: MRTG_INT_IP="%s" MRTG_INT_DESCR="%s" MaxBytes[%s_traf]: 3000000 Title[%s_traf]: Trafic a %s de %s PageTop[%s_traf]: <H1>Tràfic a %s de %s</H1> <TABLE> <TR><TD>System:</TD> <TD>%s</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>%s</TD></TR> <TR><TD>Max Speed:</TD> <TD>30.0 Mbits/s</TD></TR> </TABLE> '; ?> EOT /usr/bin/ucf --three-way --debconf-ok $tmpfile $configfile /bin/rm $tmpfile if [ $forcefetch ] then echo "Fetching mrtg.cfg"; if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php >> /var/log/snpservices/mrtgccfg.log 2>&1; fi fi # Force logrotate touch /var/log/snpservices/mrtg.log touch /var/log/snpservices/mrtgccfg.log /usr/sbin/logrotate -f /etc/logrotate.d/snpservices exit 0 ;; *) echo "postinst called with unknown argument \`$1'" 1>&2 exit 1 ;; esac exit 0
Bàsicament el que fa és:
IMPORTANT: Aquest apartat s'ha deixat només com a referència. Realment canviar la variable no és un tema important i a més cal llegir el text del final sobre com cal aplicar uns canvis al codi per que tingui una petita rellevància en el tema de les fonts.
Si editeu el fitxer:
$ sudo joe /usr/share/snpservices/common/config.php
Busqueu:
// which version does have this server? // currently supported versions are: // 1.2 // 1.3 $rrdtool_version = '1.3';
I canvieu per:
// which version does have this server? // currently supported versions are: // 1.2 // 1.3 #$rrdtool_version = '1.3'; $rrdtool_version = '1.4';
Compte que només canvia una qüestió de fonts i no pas que passem a utilitzar una versió diferent de RRDTOOL (s'utilitza el que hi ha instal·lat).
Consulteu:
Hola Sergi. No te va a funcionar solo con cambiar la variable a '1.4'. He hecho los cambios necesarios para que funcione en mi repositorio: https://gitorious.org/~pablog/guifi/pablogs-snpservices https://gitorious.org/guifi/snpservices/merge_requests/1 Al parecer el cambio solo sirve para añadir el tipo de fuente del texto de las gráficas. FWIW... changelog de rrdtool: http://oss.oetiker.ch/rrdtool/pub/CHANGES
Si utilitzeu CNML 2 mireu que la URL que heu definit al servidor de gràfiques no sigui:
http://www.iesebre.com/snpservices/graphs/graphs.php
Sinó:
http://www.iesebre.com/snpservices
Els dispositius han de tenir activat SNMP i posar la comunitat (community) a
public
També és important que el nom de la interfície de xarxa que volem monitoritzar tingui el mateix nom a la web de guifi.net (la podeu consultar al CNML o al fitxer CSV del servidor de gràfiques) que el que té en la realitat.
Les dues coses indicades anteriorment són d'especial importància sobretot si no s'utilitza unsolclic (per exemple en la configuració de nodes híbrids)
Aquestes són unes notes sobre el que s'ha tingut que tenir en compte a l'hora de migrar el servidor de gràfiques de un servidor a un altre servidor (la migració del servidor web de l'Institut de l'Ebre realitzada al desembre de 2011).
Inicialment el que vam fer va ser tornar a instal·lar i configurar des de zero un servidor snpservices al nou servidor. Això té un problema important:
IMPORTANT: Al migrar cal copiar les base de dades existents per tal de no perdre l'històric d'informació!
Per fer-ho cal migrar/copiar de la màquina antiga a la nova la carpeta:
/var/lib/snpservices/rrdb
Això em va passar per exemple al supernode de l'Hospital Verge de la Cinta:
A les gràfiques apareixen els dispositius amb valors -nan. En el meu cas l'error ha estat que hem indicat que el trasto és una RB800 quan realment és una RB1200 (és fa expressament així per poder crear radios). Per defecte el snpservices (servidor de gràfiques) busca les interfícies de xarxa wlan1, wlan2, wlan3... però la RB1200 de sèrie anomena ether1, ether2, ether3 a les interfícies de xarxa. L'error es pot veure al fitxer:
$ cat /var/log/snpservices/mrtg.log ... 2011-11-17 18:55:02: WARNING: Could not match host:'[email protected]:' ref:'Descr' key:'wlan5' ...
Si canvieu les interfícies de xarxa de la RB1200 a wlanX aleshores us funcionarà.
Cal tenir en compte que sempre l'ordre és:
IMPORTANT: TODO:Per tal que el servidor de gràfiques grafiqui correctament cal que la interfície es digui Wlan/LAN? quelcom similar es va comentar al SAX 2011
Block quote