<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://es.wiki.guifi.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://es.wiki.guifi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rogerpueyo</id>
		<title>Guifi.net - Wiki Hispano - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="http://es.wiki.guifi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rogerpueyo"/>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Especial:Contribuciones/Rogerpueyo"/>
		<updated>2026-07-29T05:21:15Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.22.0</generator>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2015-10-14T17:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNPServices es un servicio de gráficas.&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. El esquema general se puede consultar en [[Monitor]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor Cliente SNPServices ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
=== Servidor WEB ===&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento: [[Preparando el entorno de desarrollo]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor MASTER SNPServices ===&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este método de instalación depende de que el repositorio esté actualizado y a fecha de 07/11/2012 no lo está. &lt;br /&gt;
Me ha sido mas fácil la instalación mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
La diferencia entre ambos es que usan procedimientos diferentes en la ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así:&lt;br /&gt;
&lt;br /&gt;
# Nos creamos una cuenta en el repositorio Gitorious&lt;br /&gt;
# Clonamos el servicio snpservices para poder enviar nuestras mejoras&lt;br /&gt;
# Lo descargamos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio. Véase [[Configurar Repositorio apt guifi]].&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
 # apt-get install snpservices&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aquí: [[Servidor de gráficas]].&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServices.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creas la carpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
 mkdir /tmp&lt;br /&gt;
 chmod a+rw snpservices/tmp&lt;br /&gt;
&lt;br /&gt;
Crea el servicio en la base de datos usando esta dirección&lt;br /&gt;
 http://yourserver/snpservices&lt;br /&gt;
&lt;br /&gt;
te saldrá una pagina así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error ''&amp;quot;ERROR: No service specified&amp;quot;'', pero en este caso nosotros somos el root y aquí tenemos que poner uno que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podría valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí la dirección desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuración:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración del servicio MRTG creador de gráficas. Aquí le diremos donde almacenar los datos. Tienes que crear el directorio mrtg en /snpservices/mrtg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración para la creación de archivo [[CNML]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí almacenamos los datos CNML que recojamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de herramienta rrdtool. transforma tdatos en archivos .rrd para poder ser exportados. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de entorno MRTG. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado ''refresh.sh''. Más adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente.&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto es porque no hay configurado algún parámetro. Entramos en ''refresh.sh'' y este nos envia a ''refresh.cnml.php''.&lt;br /&gt;
&lt;br /&gt;
''refress.sh'' llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion ''refresh.cnml.php''&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php. Aquí vemos que error genera y podremos ir a ver donde está ocurriendo.&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo ''config.php''. Sino busca la plantilla ''config.php.template'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
si todo esta actualizado, ejecuta ''exit()'' y acaba.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es cuando empieza la búsqueda de cambios.&lt;br /&gt;
&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. Éstos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache. Mira el log de Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El sistema dentro de la web que crea el archivo [[CNML]] es un proceso de un modulo de Drupal del sistema guifi. Lo encontraras en ''/sites/all/modules/guifi/guifi_cnml.inc.php''.&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados ''guifi.cnml'' y ''guifi.cnml.tmp'' con los contenidos encontrados. También actualiza datos en ''/tmp/last_update.cnml'' que se usara nuevamente en la próxima actualización.&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servicio SNPService usará el servicio SNPService Master recien creado para preguntar información acerca un nodo de esta manera:&lt;br /&gt;
 http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo [[CNML]] como este:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuración puede que no funcione. Para ver errores, pedir a apache que nos muestre su log:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable.&lt;br /&gt;
Para solucionarlo se tiene que modificar el límite de memoria para php dentro de ''/etc/php5/apache/php.ini''. La variable se llama '''memory_limit = 128M'''. Si lo pones a -1 equivale a que no tenga limite [http://es1.php.net/manual/es/ini.core.php#ini.memory-limit].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo más, hago una consulta mas pequeña para poder probar el error que me salía es este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
He aprendido la causas aquí: http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si durant la migració al nou servidor s'ha canviat -respecte l'antic- l'adreça IP, el número de node, etc. cal actualitzar el servei a la pàgina corresponent de [http://www.guifi.net].&lt;br /&gt;
&lt;br /&gt;
=== Migración del servicio SNPServices a otra máquina ===&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices almacena datos históricos de los nodos que monitoriza. A la hora de migrar el servicio a otra máquina (por ejemplo, o una nueva) es conveniente mantener este histórico de gráficos, en vez de comenzar desde cero. Para hacerlo correctamente hay que seguir los siguientes pasos:&lt;br /&gt;
&lt;br /&gt;
* Instalar el servicio SNPServices en el nuevo servidor. Se recomienda utilizar la distribución [[Cloudy]], que automatiza el proceso y permite hacerlo a través del navegador web.&lt;br /&gt;
* Copiar la carpeta /var/lib/snpservices/rrdb (donde se guardan los datos históicos) del servidor antiguo al nuevo. Una vez copiada hay que asegurarse de que la carpeta pertenece al usuario del servidor web, con el siguiente comando:&lt;br /&gt;
:chown -R www-data:www-data /var/lib/snpservices&lt;br /&gt;
* Configurar el SNPServices del servidor nuevo utilizando el mismo identificador de servicio (ID) que tenía el servidor antiguo.&lt;br /&gt;
* Parar el servidor antiguo. Al cabo de unos minutos el servidor nuevo ya estará monitorizando los nodos y generando las gráficas.&lt;br /&gt;
&lt;br /&gt;
Si durante la migración al nuevo servidor ha cambiado -respecto al antiguo- la dirección IP, el número de nodo, etc. hay que actualizar el servicio en la página correspondiente de [http://www.guifi.net].&lt;br /&gt;
&lt;br /&gt;
==== Migración entre diferentes arquitecturas ====&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva usa una arquitectura distinta a la antigua (por ejemplo, ahora 64 bits y antes 32) los ficheros .rrd deben ser convertidos. Para ello hay que transformar los ficheros .rrd al formato XML y, luego, devolverlos al formato .rrd. Para ello, habrá que seguir los pasos anteriores, añadiendo lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* En la máquina antigua, antes de copiar la carpeta /var/lib/snpservices/rrdb, ejecutar:&lt;br /&gt;
:rrdtool dump fichero.rrd &amp;gt; fichero.xml&lt;br /&gt;
* Luego, tras copiar la carpeta al nuevo servidor, ejecutar:&lt;br /&gt;
:rrdtool restore fichero.xml&lt;br /&gt;
&lt;br /&gt;
Y el fichero .rrd resultante quedará convertido al formato correcto.&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;br /&gt;
[[ca:SNPServices]]&lt;br /&gt;
[[en:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2015-10-14T17:42:50Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNPServices es un servicio de gráficas.&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. El esquema general se puede consultar en [[Monitor]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor Cliente SNPServices ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
=== Servidor WEB ===&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento: [[Preparando el entorno de desarrollo]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor MASTER SNPServices ===&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este método de instalación depende de que el repositorio esté actualizado y a fecha de 07/11/2012 no lo está. &lt;br /&gt;
Me ha sido mas fácil la instalación mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
La diferencia entre ambos es que usan procedimientos diferentes en la ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así:&lt;br /&gt;
&lt;br /&gt;
# Nos creamos una cuenta en el repositorio Gitorious&lt;br /&gt;
# Clonamos el servicio snpservices para poder enviar nuestras mejoras&lt;br /&gt;
# Lo descargamos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio. Véase [[Configurar Repositorio apt guifi]].&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
 # apt-get install snpservices&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aquí: [[Servidor de gráficas]].&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServices.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creas la carpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
 mkdir /tmp&lt;br /&gt;
 chmod a+rw snpservices/tmp&lt;br /&gt;
&lt;br /&gt;
Crea el servicio en la base de datos usando esta dirección&lt;br /&gt;
 http://yourserver/snpservices&lt;br /&gt;
&lt;br /&gt;
te saldrá una pagina así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error ''&amp;quot;ERROR: No service specified&amp;quot;'', pero en este caso nosotros somos el root y aquí tenemos que poner uno que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podría valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí la dirección desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuración:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración del servicio MRTG creador de gráficas. Aquí le diremos donde almacenar los datos. Tienes que crear el directorio mrtg en /snpservices/mrtg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración para la creación de archivo [[CNML]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí almacenamos los datos CNML que recojamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de herramienta rrdtool. transforma tdatos en archivos .rrd para poder ser exportados. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de entorno MRTG. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado ''refresh.sh''. Más adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente.&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto es porque no hay configurado algún parámetro. Entramos en ''refresh.sh'' y este nos envia a ''refresh.cnml.php''.&lt;br /&gt;
&lt;br /&gt;
''refress.sh'' llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion ''refresh.cnml.php''&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php. Aquí vemos que error genera y podremos ir a ver donde está ocurriendo.&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo ''config.php''. Sino busca la plantilla ''config.php.template'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
si todo esta actualizado, ejecuta ''exit()'' y acaba.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es cuando empieza la búsqueda de cambios.&lt;br /&gt;
&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. Éstos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache. Mira el log de Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El sistema dentro de la web que crea el archivo [[CNML]] es un proceso de un modulo de Drupal del sistema guifi. Lo encontraras en ''/sites/all/modules/guifi/guifi_cnml.inc.php''.&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados ''guifi.cnml'' y ''guifi.cnml.tmp'' con los contenidos encontrados. También actualiza datos en ''/tmp/last_update.cnml'' que se usara nuevamente en la próxima actualización.&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servicio SNPService usará el servicio SNPService Master recien creado para preguntar información acerca un nodo de esta manera:&lt;br /&gt;
 http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo [[CNML]] como este:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuración puede que no funcione. Para ver errores, pedir a apache que nos muestre su log:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable.&lt;br /&gt;
Para solucionarlo se tiene que modificar el límite de memoria para php dentro de ''/etc/php5/apache/php.ini''. La variable se llama '''memory_limit = 128M'''. Si lo pones a -1 equivale a que no tenga limite [http://es1.php.net/manual/es/ini.core.php#ini.memory-limit].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo más, hago una consulta mas pequeña para poder probar el error que me salía es este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
He aprendido la causas aquí: http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si durant la migració al nou servidor s'ha canviat -respecte l'antic- l'adreça IP, el número de node, etc. cal actualitzar el servei a la pàgina corresponent de [http://www.guifi.net].&lt;br /&gt;
&lt;br /&gt;
=== Migración del servicio SNPServices a otra máquina ===&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices almacena datos históricos de los nodos que monitoriza. A la hora de migrar el servicio a otra máquina (por ejemplo, o una nueva) es conveniente mantener este histórico de gráficos, en vez de comenzar desde cero. Para hacerlo correctamente hay que seguir los siguientes pasos:&lt;br /&gt;
&lt;br /&gt;
* Instalar el servicio SNPServices en el nuevo servidor. Se recomienda utilizar la distribución [[Cloudy]], que automatiza el proceso y permite hacerlo a través del navegador web.&lt;br /&gt;
* Copiar la carpeta /var/lib/snpservices/rrdb (donde se guardan los datos históicos) del servidor antiguo al nuevo. Una vez copiada hay que asegurarse de que la carpeta pertenece al usuario del servidor web, con el siguiente comando:&lt;br /&gt;
:chown -R www-data:www-data /var/lib/snpservices&lt;br /&gt;
* Configurar el SNPServices del servidor nuevo utilizando el mismo identificador de servicio (ID) que tenía el servidor antiguo.&lt;br /&gt;
* Parar el servidor antiguo. Al cabo de unos minutos el servidor nuevo ya estará monitorizando los nodos y generando las gráficas.&lt;br /&gt;
&lt;br /&gt;
==== Migración entre diferentes arquitecturas ====&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva usa una arquitectura distinta a la antigua (por ejemplo, ahora 64 bits y antes 32) los ficheros .rrd deben ser convertidos. Para ello hay que transformar los ficheros .rrd al formato XML y, luego, devolverlos al formato .rrd. Para ello, habrá que seguir los pasos anteriores, añadiendo lo siguiente:&lt;br /&gt;
&lt;br /&gt;
* En la máquina antigua, antes de copiar la carpeta /var/lib/snpservices/rrdb, ejecutar:&lt;br /&gt;
:rrdtool dump fichero.rrd &amp;gt; fichero.xml&lt;br /&gt;
* Luego, tras copiar la carpeta al nuevo servidor, ejecutar:&lt;br /&gt;
:rrdtool restore fichero.xml&lt;br /&gt;
&lt;br /&gt;
Y el fichero .rrd resultante quedará convertido al formato correcto.&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;br /&gt;
[[ca:SNPServices]]&lt;br /&gt;
[[en:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2015-10-14T16:57:27Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: Actualizar traducciones&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNPServices es un servicio de gráficas.&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. El esquema general se puede consultar en [[Monitor]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor Cliente SNPServices ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
=== Servidor WEB ===&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento: [[Preparando el entorno de desarrollo]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor MASTER SNPServices ===&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este método de instalación depende de que el repositorio esté actualizado y a fecha de 07/11/2012 no lo está. &lt;br /&gt;
Me ha sido mas fácil la instalación mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
La diferencia entre ambos es que usan procedimientos diferentes en la ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así:&lt;br /&gt;
&lt;br /&gt;
# Nos creamos una cuenta en el repositorio Gitorious&lt;br /&gt;
# Clonamos el servicio snpservices para poder enviar nuestras mejoras&lt;br /&gt;
# Lo descargamos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio. Véase [[Configurar Repositorio apt guifi]].&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
 # apt-get install snpservices&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aquí: [[Servidor de gráficas]].&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServices.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creas la carpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
 mkdir /tmp&lt;br /&gt;
 chmod a+rw snpservices/tmp&lt;br /&gt;
&lt;br /&gt;
Crea el servicio en la base de datos usando esta dirección&lt;br /&gt;
 http://yourserver/snpservices&lt;br /&gt;
&lt;br /&gt;
te saldrá una pagina así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error ''&amp;quot;ERROR: No service specified&amp;quot;'', pero en este caso nosotros somos el root y aquí tenemos que poner uno que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podría valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí la dirección desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuración:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración del servicio MRTG creador de gráficas. Aquí le diremos donde almacenar los datos. Tienes que crear el directorio mrtg en /snpservices/mrtg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración para la creación de archivo [[CNML]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí almacenamos los datos CNML que recojamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de herramienta rrdtool. transforma tdatos en archivos .rrd para poder ser exportados. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de entorno MRTG. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado ''refresh.sh''. Más adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente.&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto es porque no hay configurado algún parámetro. Entramos en ''refresh.sh'' y este nos envia a ''refresh.cnml.php''.&lt;br /&gt;
&lt;br /&gt;
''refress.sh'' llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion ''refresh.cnml.php''&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php. Aquí vemos que error genera y podremos ir a ver donde está ocurriendo.&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo ''config.php''. Sino busca la plantilla ''config.php.template'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
si todo esta actualizado, ejecuta ''exit()'' y acaba.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es cuando empieza la búsqueda de cambios.&lt;br /&gt;
&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. Éstos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache. Mira el log de Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El sistema dentro de la web que crea el archivo [[CNML]] es un proceso de un modulo de Drupal del sistema guifi. Lo encontraras en ''/sites/all/modules/guifi/guifi_cnml.inc.php''.&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados ''guifi.cnml'' y ''guifi.cnml.tmp'' con los contenidos encontrados. También actualiza datos en ''/tmp/last_update.cnml'' que se usara nuevamente en la próxima actualización.&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servicio SNPService usará el servicio SNPService Master recien creado para preguntar información acerca un nodo de esta manera:&lt;br /&gt;
 http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo [[CNML]] como este:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuración puede que no funcione. Para ver errores, pedir a apache que nos muestre su log:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable.&lt;br /&gt;
Para solucionarlo se tiene que modificar el límite de memoria para php dentro de ''/etc/php5/apache/php.ini''. La variable se llama '''memory_limit = 128M'''. Si lo pones a -1 equivale a que no tenga limite [http://es1.php.net/manual/es/ini.core.php#ini.memory-limit].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo más, hago una consulta mas pequeña para poder probar el error que me salía es este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
He aprendido la causas aquí: http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fichero_32bits_.rrd &amp;gt; fichero.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el fichero a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fichero.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;br /&gt;
[[ca:SNPServices]]&lt;br /&gt;
[[en:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2015-10-14T16:57:02Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: Rogerpueyo movió la página SNPservices a SNPServices: Coherencia de mayúsculas en nomenclatura&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNPServices es un servicio de gráficas.&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. El esquema general se puede consultar en [[Monitor]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor Cliente SNPServices ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
=== Servidor WEB ===&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento: [[Preparando el entorno de desarrollo]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor MASTER SNPServices ===&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este método de instalación depende de que el repositorio esté actualizado y a fecha de 07/11/2012 no lo está. &lt;br /&gt;
Me ha sido mas fácil la instalación mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
La diferencia entre ambos es que usan procedimientos diferentes en la ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así:&lt;br /&gt;
&lt;br /&gt;
# Nos creamos una cuenta en el repositorio Gitorious&lt;br /&gt;
# Clonamos el servicio snpservices para poder enviar nuestras mejoras&lt;br /&gt;
# Lo descargamos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio. Véase [[Configurar Repositorio apt guifi]].&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
 # apt-get install snpservices&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aquí: [[Servidor de gráficas]].&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServices.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creas la carpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
 mkdir /tmp&lt;br /&gt;
 chmod a+rw snpservices/tmp&lt;br /&gt;
&lt;br /&gt;
Crea el servicio en la base de datos usando esta dirección&lt;br /&gt;
 http://yourserver/snpservices&lt;br /&gt;
&lt;br /&gt;
te saldrá una pagina así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error ''&amp;quot;ERROR: No service specified&amp;quot;'', pero en este caso nosotros somos el root y aquí tenemos que poner uno que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podría valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí la dirección desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuración:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración del servicio MRTG creador de gráficas. Aquí le diremos donde almacenar los datos. Tienes que crear el directorio mrtg en /snpservices/mrtg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración para la creación de archivo [[CNML]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí almacenamos los datos CNML que recojamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de herramienta rrdtool. transforma tdatos en archivos .rrd para poder ser exportados. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de entorno MRTG. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado ''refresh.sh''. Más adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente.&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto es porque no hay configurado algún parámetro. Entramos en ''refresh.sh'' y este nos envia a ''refresh.cnml.php''.&lt;br /&gt;
&lt;br /&gt;
''refress.sh'' llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion ''refresh.cnml.php''&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php. Aquí vemos que error genera y podremos ir a ver donde está ocurriendo.&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo ''config.php''. Sino busca la plantilla ''config.php.template'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
si todo esta actualizado, ejecuta ''exit()'' y acaba.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es cuando empieza la búsqueda de cambios.&lt;br /&gt;
&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. Éstos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache. Mira el log de Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El sistema dentro de la web que crea el archivo [[CNML]] es un proceso de un modulo de Drupal del sistema guifi. Lo encontraras en ''/sites/all/modules/guifi/guifi_cnml.inc.php''.&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados ''guifi.cnml'' y ''guifi.cnml.tmp'' con los contenidos encontrados. También actualiza datos en ''/tmp/last_update.cnml'' que se usara nuevamente en la próxima actualización.&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servicio SNPService usará el servicio SNPService Master recien creado para preguntar información acerca un nodo de esta manera:&lt;br /&gt;
 http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo [[CNML]] como este:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuración puede que no funcione. Para ver errores, pedir a apache que nos muestre su log:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable.&lt;br /&gt;
Para solucionarlo se tiene que modificar el límite de memoria para php dentro de ''/etc/php5/apache/php.ini''. La variable se llama '''memory_limit = 128M'''. Si lo pones a -1 equivale a que no tenga limite [http://es1.php.net/manual/es/ini.core.php#ini.memory-limit].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo más, hago una consulta mas pequeña para poder probar el error que me salía es este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
He aprendido la causas aquí: http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fichero_32bits_.rrd &amp;gt; fichero.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el fichero a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fichero.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;br /&gt;
[[ca:SNPservices]]&lt;br /&gt;
[[en:SNPservices]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPservices</id>
		<title>SNPservices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPservices"/>
				<updated>2015-10-14T16:57:02Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: Rogerpueyo movió la página SNPservices a SNPServices: Coherencia de mayúsculas en nomenclatura&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECCIÓN [[SNPServices]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2015-10-14T16:54:11Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: Añadir traducciones catalán e inglés&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNPServices es un servicio de gráficas.&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. El esquema general se puede consultar en [[Monitor]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor Cliente SNPServices ===&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
=== Servidor WEB ===&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento: [[Preparando el entorno de desarrollo]].&lt;br /&gt;
&lt;br /&gt;
=== Configuración de servidor MASTER SNPServices ===&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este método de instalación depende de que el repositorio esté actualizado y a fecha de 07/11/2012 no lo está. &lt;br /&gt;
Me ha sido mas fácil la instalación mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
La diferencia entre ambos es que usan procedimientos diferentes en la ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así:&lt;br /&gt;
&lt;br /&gt;
# Nos creamos una cuenta en el repositorio Gitorious&lt;br /&gt;
# Clonamos el servicio snpservices para poder enviar nuestras mejoras&lt;br /&gt;
# Lo descargamos&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio. Véase [[Configurar Repositorio apt guifi]].&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
 # apt-get install snpservices&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aquí: [[Servidor de gráficas]].&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServices.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creas la carpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
 mkdir /tmp&lt;br /&gt;
 chmod a+rw snpservices/tmp&lt;br /&gt;
&lt;br /&gt;
Crea el servicio en la base de datos usando esta dirección&lt;br /&gt;
 http://yourserver/snpservices&lt;br /&gt;
&lt;br /&gt;
te saldrá una pagina así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error ''&amp;quot;ERROR: No service specified&amp;quot;'', pero en este caso nosotros somos el root y aquí tenemos que poner uno que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podría valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla.&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí la dirección desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuración:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración del servicio MRTG creador de gráficas. Aquí le diremos donde almacenar los datos. Tienes que crear el directorio mrtg en /snpservices/mrtg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración para la creación de archivo [[CNML]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí almacenamos los datos CNML que recojamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de herramienta rrdtool. transforma tdatos en archivos .rrd para poder ser exportados. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuración de entorno MRTG. No hace falta hacer nada aquí.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado ''refresh.sh''. Más adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente.&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto es porque no hay configurado algún parámetro. Entramos en ''refresh.sh'' y este nos envia a ''refresh.cnml.php''.&lt;br /&gt;
&lt;br /&gt;
''refress.sh'' llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion ''refresh.cnml.php''&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php. Aquí vemos que error genera y podremos ir a ver donde está ocurriendo.&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo ''config.php''. Sino busca la plantilla ''config.php.template'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
si todo esta actualizado, ejecuta ''exit()'' y acaba.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es cuando empieza la búsqueda de cambios.&lt;br /&gt;
&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. Éstos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache. Mira el log de Apache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El sistema dentro de la web que crea el archivo [[CNML]] es un proceso de un modulo de Drupal del sistema guifi. Lo encontraras en ''/sites/all/modules/guifi/guifi_cnml.inc.php''.&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados ''guifi.cnml'' y ''guifi.cnml.tmp'' con los contenidos encontrados. También actualiza datos en ''/tmp/last_update.cnml'' que se usara nuevamente en la próxima actualización.&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servicio SNPService usará el servicio SNPService Master recien creado para preguntar información acerca un nodo de esta manera:&lt;br /&gt;
 http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo [[CNML]] como este:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuración puede que no funcione. Para ver errores, pedir a apache que nos muestre su log:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
También este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable.&lt;br /&gt;
Para solucionarlo se tiene que modificar el límite de memoria para php dentro de ''/etc/php5/apache/php.ini''. La variable se llama '''memory_limit = 128M'''. Si lo pones a -1 equivale a que no tenga limite [http://es1.php.net/manual/es/ini.core.php#ini.memory-limit].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo más, hago una consulta mas pequeña para poder probar el error que me salía es este:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
He aprendido la causas aquí: http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fichero_32bits_.rrd &amp;gt; fichero.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el fichero a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fichero.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;br /&gt;
[[ca:SNPservices]]&lt;br /&gt;
[[en:SNPservices]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Cloudy_plug-ins</id>
		<title>Cloudy plug-ins</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Cloudy_plug-ins"/>
				<updated>2015-04-22T15:11:25Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: Página creada.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ¿Qué e un plug-in? ==&lt;br /&gt;
&lt;br /&gt;
Cloudy es una distribución de Linux basada en Debian que proporciona a los usuarios una interfaz simple y cómoda para gestionar diferentes servicios que pueden usarse a través de una red comunitaria; en nuestro caso, Guifi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
https://github.com/Clommunity/Doc/tree/master/plugins/pastecat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Cloudy]]&lt;br /&gt;
[[ca:Cloudy_plug-ins]]&lt;br /&gt;
[[en:Cloudy_plug-ins]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_proxy</id>
		<title>Servidor proxy</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_proxy"/>
				<updated>2015-04-16T15:20:53Z</updated>
		
		<summary type="html">&lt;p&gt;Rogerpueyo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ¿Que es Guifi-proxy3? ==&lt;br /&gt;
Guifi-proxy3 es la ampliación del paquete guifi-proxy, creado por Carles Guaall, más un conjunto de configuraciones para tal de conseguir un proxy federado-cache en el momento de finalizar el asistente de configuración.&lt;br /&gt;
&lt;br /&gt;
Desde principios del 2013, el paquete guifi-proxy3 autentica los usuarios en una base de datos ldap, situados en ldap.guifi.net i ldap2.guifi.net.&lt;br /&gt;
&lt;br /&gt;
= Creación del servicio en la web de guifi =&lt;br /&gt;
Previamente tendremos que haber añadido un dispositivo tipo '''servidor''' en nuestro supernodo y asignarle una IP de guifi (dispositivo del supernodo &amp;gt; editar &amp;gt; sección de conexiones por cable &amp;gt; Rango de IPs destinado a los servers (se crea si no existe) &amp;gt; enchufe &amp;gt; Enlaza un dispositivo &amp;gt; create &amp;gt; Guardar y continuar modificando.&lt;br /&gt;
&lt;br /&gt;
# Crear contenido&lt;br /&gt;
# servicio guifi.net&lt;br /&gt;
## '''Service name:''' Servidor Proxy de XXXXXX&lt;br /&gt;
## '''Nombre corto:''' NOMCortoSupernode-PROXY&lt;br /&gt;
## '''Contactar:''' mail de contacto del administrador&lt;br /&gt;
## '''Dispositivo:''' empezamos a escribir el nombre de nuestro servidor y van a salir el nombre de los servidores que empiezan así&lt;br /&gt;
## '''Servicio:''' Acceso a Internet a través d'un Proxy  &lt;br /&gt;
## '''Estado:''' Estado del servicio&lt;br /&gt;
# Guardar&lt;br /&gt;
&lt;br /&gt;
Una vez Guardado volvemos a modificar y cambiamos los valores:&lt;br /&gt;
&lt;br /&gt;
# '''Proxy Parámetros:'''&lt;br /&gt;
## '''Descargar:''' Ancho de banda de bajada&lt;br /&gt;
## '''Subida:''' Ancho de banda de subida&lt;br /&gt;
# '''Federación del proxy:'''&lt;br /&gt;
##  Permitir a los usuarios acceder desde proxys '''OUT federated'''&lt;br /&gt;
## Permitir a los usuarios acceder desde proxys '''IN federated'''&lt;br /&gt;
# '''Nombre:''' IP o resolución interna del proxy&lt;br /&gt;
# '''Puerto:''' Puerto del proxy (normalmente 3128)&lt;br /&gt;
# '''Tipo:''' Normalmente HTTP&lt;br /&gt;
# Guardar&lt;br /&gt;
 &lt;br /&gt;
== ¿Cómo se instala? ==&lt;br /&gt;
Entramos por ssh a la máquina que vamos a destinar como servidor proxy y añadimos los repositorios de apt de guifi:&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
 # apt-get install guifi-proxy3&lt;br /&gt;
&lt;br /&gt;
== Configuración del guifi-proxy3 ==&lt;br /&gt;
Durante el proceso de instalación se piden los parametros:&lt;br /&gt;
* nº del nodo del servidor proxy (numero de nodo del servicio proxy en la web)&lt;br /&gt;
* nombre del servidor proxy (display que sale a los clientes que usen vuestro servidor proxy antes de empezar a navegar)&lt;br /&gt;
* e-mail de contacto. Es el correo que aparece a las páginas de error que muestra el squid.&lt;br /&gt;
* idioma de las páginas de error de squid Pues esto, dependiendo del idioma que definas las páginas de error saldran en un idioma u otro.&lt;br /&gt;
* espacio de disco par almacenar cache. (/var/spool/squid3) &lt;br /&gt;
* cantidad de memoria RAM dedicada a la cache.&lt;br /&gt;
&lt;br /&gt;
Al terminar este asistente (hay valores por defecto, por si hay dudas) ya tendrás un servidor proxy-cache federado a punto de ser usado, si no se quiere no se tiene que añadir ninguna otra configuración [ver más abajo].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ¿Cómo queda organizada la configuración de squid? ==&lt;br /&gt;
Al finalizar el asistente tendremos estos ficheros:&lt;br /&gt;
* /etc/squid3/squid.conf [NO TOCAR/EDITAR] --&amp;gt; configuración estàndard &lt;br /&gt;
* /etc/squid3/guifi.conf  [NO TOCAR/EDITAR] --&amp;gt; configuración generada durante el proceso de instalación de guifi-proxy3&lt;br /&gt;
* /etc/squid3/custom.conf --&amp;gt; fichero reservado para las configuraciones de los administradores del server proxy (por ejemplo las acl que cortan megaupload y demás)&lt;br /&gt;
&lt;br /&gt;
== Problemas frecuentes ==&lt;br /&gt;
* '''No funciona la autenticación de ningún usuario:''' Posiblemente hay o ha habido un problema con el servidor ldap, en este caso, prueba de reiniciar squid3 (service squid3 restart). Si sigue sin funcionar, ponte en contacto con la comunidad mediante la lista [https://llistes.guifi.net/sympa/info/guifi-dev guifi-dev].&lt;br /&gt;
&lt;br /&gt;
= Configuraciones avanzadas =&lt;br /&gt;
&lt;br /&gt;
* [[Servidor_Proxy_IM|Permitir conexiones de servicios de mensajería]]&lt;br /&gt;
* [[Servidor_Proxy_delaypools|Delay Pools]]&lt;br /&gt;
* [[Servidor_Proxy_videos|Proxy para vídeos]]&lt;br /&gt;
* [[Servidor_Proxy_logs|Cambiar formato de la hora de los logs]]&lt;br /&gt;
* [[Proxy_socks|Proxy Socks (Proxy para protocolos no http como pop o imap)]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Proxy]]&lt;br /&gt;
[[ca:Servidor_Proxy]]&lt;br /&gt;
[[en:Proxy_Server]]&lt;/div&gt;</summary>
		<author><name>Rogerpueyo</name></author>	</entry>

	</feed>