Diferencia entre revisiones de «SNPServices»

De Guifi.net - Wiki Hispano

(Configurar refresh.cnml.php)
(Configurar refresh.cnml.php)
Línea 326: Línea 326:
 
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.
 
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.
 
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion
 
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion
 +
 +
=== Prueba de servicio ===
 +
 +
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera
 +
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558
 +
 +
Esto nos devuelve un archivo CNML como este
 +
<pre>
 +
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned
 +
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working
 +
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned
 +
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working
 +
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working
 +
18809,#VicAGrifollRd2,10.138.14.104,6,Working
 +
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working
 +
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working
 +
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned
 +
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working
 +
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working
 +
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working
 +
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working
 +
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working
 +
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working
 +
</pre>
  
 
=== Migración de un servidor a otro ===
 
=== Migración de un servidor a otro ===

Revisión de 22:29 22 oct 2012

Servicio SNPServices =

SNPServices es un servicio de gráficas...


El sistema de monitorización de la red se realiza mediante 3 sistemas principales. Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor



Configuración de servidor Cliente SNPServices El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net. Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado. El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas


Servidor WEB El servidor web de guifi, única ente que accede a las bases de datos del sistema. Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo

Configuración de servidor MASTER SNPServices Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET. Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos. Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.

Instalacion del servicio SNPServices

El servicio SNPServices Master y Cliente se instala del mismo modo. A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.

Para instalarlo se hace así Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.


cd /var/www/html
git clone git://gitorious.org/guifi/snpservices.git


También se puede descargar mediante repositorio. http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi


Una vez configurado el repositorio, descargamos servicio.

# apt-get install snpservices

Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas

A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves

Configuración del servicio SNPServices Master

.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio

 Alias /snpservices /var/www/html/snpservices 

. Creas la rarpeta /tmp y le das permisos de escritura

mkdir /tmp
chmod a+rw snpservices/tmp

.Crea els ervicio en al base de datos usando esta direccion

 http://yourserver/snpservices

te saldra una pagina asi

ERROR: No service specified
CNML services
Version: 2.0
USAGE:
index.php?call=[service][&parameter[=value]]

services: help version phpinfo serverinfo [service]
  help
...sigue...

si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php. Es pro esto que nos sale el error "ERROR: No service specified", pero en este caso nosotros somos el roor y aqui tenemos que poner 3671 que representa al servidor web. Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla

Configuración del archivo config.php

Vamos al grano.

Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.

<?php

// snp_pat: full directory where snp services are located
$snp_path='/var/www/html/snpservices';


Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.

// SNPGraphServerID: Default Graph Server ID
$SNPGraphServerId = 6579;

Servicio root. El root de nuestro servidor guifi actual es el 3671

// rootZone: which is the ROOT zone
$rootZone = 3671;

Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion

// SNPDataServer_url: without ending backslash, the url where the data is
$SNPDataServer_url = 'http://guifi.net';

Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.


// MRTGConfigSource: mrtg csv data
// As a input, could be either a local (to be created from
// cached CNML file, or remote

El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML. Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs

$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';

Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice

//$MRTGConfigSource='../data/guifi_mrtg.csv';

Configuracino para la creacion de archivo CNML


// 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)

Aqui almacenamos los datos CNML que recojamos


$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';
$CNMLData='../data/guifi.cnml';


Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui


// rrdtool parameters
$rrdtool_path='/usr/bin/rrdtool';
$rrddb_path='/home1/comesfa/mrtg/logs/';
$rrdimg_path='/home1/comesfa/mrtg/images/';

// which version does have this server? 
// currently supported versions are:
// 1.2
// 1.3
$rrdtool_version = "1.3";

Configuracion de entorno MRTG. No hace falta hacer nada aqui


// 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>guifi@guifi.net</TD></TR>
     <TR><TD>Description:</TD><TD>ping</TD></TR>
     <TR><TD>IP:</TD>         <TD>%s</TD></TR>
     </TABLE>
Target[%s_ping]: `/etc/mrtg/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:public@%s:
SetEnv[%s_traf]: MRTG_INT_IP="%s" MRTG_INT_DESCR="%s"
MaxBytes[%s_traf]: 104857600
Title[%s_traf]: Trànsit a %s de %s
PageTop[%s_traf]: <H1>Trànsit a %s de %s</H1>
     <TABLE>
     <TR><TD>System:</TD>     <TD>%s</TD></TR>
     <TR><TD>Maintainer:</TD> <TD>guifi@guifi.net</TD></TR>
     <TR><TD>Description:</TD><TD>%s</TD></TR>
     <TR><TD>Max Speed:</TD>  <TD>100.0 Mbytes/s</TD></TR>
     </TABLE>
';


?>

Arrancamos y actualizamos datos

Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente

Lo he arrancado y me da el siguiente error

root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh 
Getting CNML file
Error redaing CNML source\nroot

Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php refress.sh llama a dos archivos php.

root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh 
#!/bin/bash
# Refreshing CNML local file (optional)
php refresh_cnml.php

Configurar refresh.cnml.php

Veamos ahora el archivo de configuracion refresh.cnml.php

Si queremos ejecutar este archivo lo hacemos mediante la llamada a php Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.


Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template

<?php

  if (file_exists("config.php")) {
    include_once("./config.php");
  } else {
    include_once("config.php.template");
  }

  $minX = 999;
  $minY = 999;
  $maxX = -999;
  $maxY = -999;

  $members = array();

Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no. si todo esta actualizado, ejecuta exit() y acaba.



  $hlastnow = @fopen($SNPDataServer_url."/guifi/refresh/cnml", "r")
    or die('Error reading last timestamp\n');
  $last_now = fgets($hlastnow);
  fclose($hlastnow);


  $hlast= @fopen("/tmp/last_update.cnml", "r");
  if (($hlast) and ($last_now == fgets($hlast))) {
    fclose($hlast);
    echo "No changes.\n";
    exit();

Si está mal configurado estos parámetros, tendremos el siguiente error

root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php 
Getting CNML file
Error reading last timestamp
root@webserver:/var/www/guifi/snpservices/common# 


Aqui es cuando empieza la búsqueda de cambios.


echo "Getting CNML file\n";
  $hcnml = @fopen($SNPDataServer_url."/guifi/cnml/".$rootZone."/detail", "r")
    or die ('Error redaing CNML source\n');
  $wcnml = @fopen("../data/guifi.cnml.tmp", "w");
  while (!feof($hcnml)) {
    $buffer = fgets($hcnml, 4096);
    fwrite($wcnml,$buffer);
  }
  fclose($hcnml);
  fclose($wcnml);
  exec ("/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml");

  $hlast= @fopen("/tmp/last_update.cnml", "w") or die('Error!');
  fwrite($hlast,$last_now);
  fclose($hlast);
?>
                  
  }

Si esta mal configurado, recibiremos este error

root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php 
Getting CNML file
Error redaing CNML source\n
root@webserver:/var/www/guifi/snpservices/common#

Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados. También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion

Prueba de servicio

Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558

Esto nos devuelve un archivo CNML como este

46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working
18809,#VicAGrifollRd2,10.138.14.104,6,Working
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working

Migración de un servidor a otro

Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.

Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.

En la máquina de 32bits ejecutamos esto:

rrdtool dump fitxer_32bits_.rrd > fitxer.xml

Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:

rrdtool restore fitxer.xml

Y queda generado el fichero .rrd

Herramientas personales