Català  

Diferencia entre revisiones de «Servidor de gráficas»

De Guifi.net - Wiki Hispano

 
(No se muestran 32 ediciones intermedias realizadas por 3 usuarios)
Línea 1: Línea 1:
Un servidor de gráficas es un servicio que corre permanentemente en una máquina, haciendo llamadas a la red a través del protocolo [[snmp]] para crear gráficas que, entre otras cosas, proveen disponibilidad de máquinas, tiempos de respuesta y tasas de transferencias de datos.
+
El servidor de gráficas se basa en el servicio de Guifi.net llamado [[SNPServices]].
  
Es una herramienta esencial para llevar a cabo un seguimiento de la evolución de la red y detectar en qué momento y lugar es necesario ampliarla.
+
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no
 +
necesita nada mas.
  
El software que genera las gráficas es el paquete llamado '''snpservices'''.
+
== Definición ==
 +
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará información a nuestro servidor cliente SNPServices.
  
= Instalación =
+
A continuación se muestra un esquema de esta definición:
Existen varios métodos para instalar un servidor de gráficas, aquí explicaremos dos: a partir de apt configurando el virtualhost de [[apache]] y el método a partir de dpkg, ambas para Debian/Ubuntu. Existe una tercer método que es a partir de la distro [[Guinux]] la cual ya provee, entre otros, un servidor de gráficas.
+
  
== A partir de apt + virtualhost ==
+
[[Archivo:SNPServices.png|center]]
  
Lo primero de todo será escojer un servidor víctima, en este caso fermat, que ya es un servidor que se dedica a ofrecer otros servicios a guifi, como la wiki.
+
=== Definición para expertos ===
  
 +
El cliente SNPServices consulta al Master SNPServices la lista de nodos a monitorizar, recogida previamente del servidor web mediante [[CNML]], se parsea la lista y formatea scripts mrtg y los ejecuta (pings y trafico) para generar un rrd. Con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imágenes y las muestra.
  
Entramos por ssh a la máquina y añadimos los repositorios de apt de guifi en el fichero /etc/apt/sources.list.
+
El servidor web de Guifi.net conoce la url del servidor de gráficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.
  
<pre># vi /etc/apt/sources.list
+
== Funcionamiento paso a paso ==
#repo guifi
+
deb http://repo.vic.guifi.net/debian/  ./</pre>
+
  
actualizamos el repositorio:
+
'''Paso 1'''. Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un número único que lo identifica. A este valor le llamamos '''$SNPGraphServerId'''.
  
<pre># apt-get update</pre>
+
En este servidor de gráficas se instalará un servicio Apache, con php y el paquete [[SNPServices]]. La dirección web la llamaremos '''$SNPDataServer_url'''.
  
e instalamos el paquete snpservices
+
Este servicio puede ser además supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''.
  
<pre># apt-get install snpservices</pre>
+
'''Paso 2'''. Al crearse este nodo, se actualiza la BBDD de la web. Esta base de datos contiene toda la información de los nodos, servicios y demás datos de Guifi.net.
  
snpservices con un conjunto de herramientas que permitirán capturar las gráficas de los nodos y supernodos que estén configurados a este servidor. Esta máquina tendrá que tener así salida a guifi.net y a internet, ya que hasta el momento el servidor de guifi.net es sólo accesible desde internet.
+
'''Pasos 3 y 4''' Antes de continuar con el trabajo que hace el servidor SNPServices client, el Master SNPServices debe hacer un trabajo.
Para leer las gráficas, el servidor de guifi.net preguntará a nuestro servidor, vía web las gráficas de los nodos que están configurados con este servidor.
+
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Esta pregunta la hace con el script php que se llama '''refresh_cnml.php.'''. El servidor web le devuelve una lista de nodos en formato [[CNML]] que almacena en un archivo llamado ''/var/lib/snpservices/data/guifi.cnml''.
  
El servidor va guardando la información que le mandan los nodos mediante unos scripts que vemos en /etc/cron.d/snpservices
+
Esta es la cabecera del archivo ''guifi.cnml'':
 +
<pre>
 +
<?xml version="1.0"?>
 +
<cnml version="0.1" server_id="1" server_url="http://guifi.net" generated="20121105 1247">
 +
</pre>
  
<pre>fermat:~# cat /etc/cron.d/snpservices
+
El archivo que abre exactamente es: http:// $SNPDataServer_url /guifi/cnml/ $rootZone /detail
*/30 *  * * *  root    if [ -x /var/www/snpservices/graphs ]; then cd /var/www/snpservices/graphs ; fi; if [ -x /usr/bin/php ] && [ -r /var/www/snpservices/graphs/mrtgcsv2mrtgcfg.php ]; then env LANG=C /usr/bin/php mrtgcsv2mrtgcfg.php >> /var/log/snpservices/mrtgccfg.log 2>&1;fi
+
*/5 *  * * *  root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] && [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l >> /var/log/snpservices/mrtg.log 2>&1; fi</pre>
+
  
Ahora ya sólo faltará añadir a la web de guifi nuestro servidor de gráficas.
+
El servidor web devuelve un archivo y el servidor SNPServices lo guarda en ''/var/lib/snpservices/data/guifi.cnml''. Este archivo se actualiza de tanto en tanto y es necesario hacerlo ya que los cambios en la web no se reflejarían en los servicios a monitorizar.
  
Si no tenemos ningún servidor en nuestro nodo, lo añadimos en la página del nodo:
+
'''Pasos 5 y 6'''. Volvemos al servidor cliente SNPServices que estamos montando.
  
Servidor computador.
+
El servidor SNPServices tiene una dirección donde buscar el archivo cnml creado por el Master SNPServices:
Si tenemos un supernodo asignamos la ip en editar la radio del supernodo > editar > sección de conexiones por cable > 1 interfaz > wLan/Lan > ip/red > enchufe > Enlaza un trasto (Fermat) > create.
+
$MRTGConfigSource = '$SNPDataServer_url . "/graphs/cnml2mrtgcsv.php?server" . =' . $SNPGraphServerId;
  
Con el servidor creado y con la ip si es posible, vamos al menú de arriba, crea contenidos y Guifi.net service.
+
En esta dirección se descarga la lista de nodos a monitorizar y transforma el contenido en un archivo que contiene los nodos a monitorizar y en un lenguaje que puede entender el servicio mrtg.
  
Rellenamos la información:
+
Esta es la cabecera del archivo ''mrtg.cfg'':
'''Nombre del servicio:''' Servidor de Gràfiques de Marsupi – BCNRossello208
+
<pre>
'''Nombre corto:''' BCNRossello208GRAF
+
# PathAdd: /usr/local/rrdtool-1.2.12/bin
'''Trasto:''' 23843-BCN, BCNrossello208 Fermat (este nombre lo generamos escribiendo el nombre de nuestro nodo, en mi caso BCNrossello208, y la ruedecilla de la derecha empezará a girar y saldrá en un menú desplegable los servidores disponibles en este nodo)
+
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi
'''Servicio:''' SNP Graph server
+
HtmlDir: /var/lib/snpservices/rrimg/
'''Estado:''' Operativo
+
ImageDir: /var/lib/snpservices/rrimg/
SNPgraphs configuración >
+
LogDir: /var/lib/snpservices/rrdb/
'''Versión:''' 2.0
+
LogFormat: rrdtool
'''url:''' http://graf1.marsupi.org (esta será la url por la que el servidor de guifi.net llegará a los datos de nuestro snmp, normalmente bajo /var/www/snpservices).
+
ThreshDir: /var/lib/snpservices/rrdb/
 +
Forks: 12
 +
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1
 +
</pre>
  
Guardamos y ahora en el nodo en la pestaña servicios vemos el servicio añadido.
+
Para ver esta lista en formato CSV desde web la podemos pedir así:
  
En este punto podemos acceder al servicio snpservices via web en la siguiente url:
+
$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId
  
<pre>http://ipdelservidor/snpservices</pre>
+
Ejemplo:
 +
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833
  
ahí nos saldran todo de letritas con algo de información del servicio y tal.
+
De paso, veremos si hasta ahora funciona todo.
  
Como nos gusta complicar las cosas (o dejarlas un poco ordenadas), vamos a crear un subdominio en nuestro dominio llamado graf1, voy al DNS y apunto el subdominio a la ip de internet de esta máquina y configuro el virtualhost en la máquina apuntando al directorio snpservices que es un link simbólico (atención añadir la opción FollowSymLinks). '''Este paso es opcional'''.
+
El log del sistema que guarda los movimientos de este proceso están en ''/var/log/snpservices/mrtgccfg.log''.
  
<pre><VirtualHost *:80>
+
Al instalar el servicio SNPServices, se nos añade un cron.
ServerAdmin marsupi@marsupi.org
+
Este cron (script que se ejecuta automáticamente según el tiempo definido) está en ''/etc/cron.d/snpservices''.
ServerAlias graf1.marsupi.org *.graf1.marsupi.org
+
ServerName graf1.marsupi.org
+
  
DocumentRoot /var/www/snpservices
+
<pre>
 +
*/30 *  * * *  root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php >> /var/log/snpservices/mrtgccfg.log 2>&1; fi
 +
*/5 *  * * *  root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] && [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l >> /var/log/snpservices/mrtg.log 2>&1; fi
 +
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php
 +
</pre>
  
#habilitar en cas de debugging
+
Este quiere decir que mediante el script ''/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php'', consulte el archivo ''guifi.cnml'' antes descrito y transforme el contenido en un XML disponible para el servicio mrtg. Lo almacena en ''/var/lib/snpservices/data/mrtg.cfg''.
#ErrorLog /var/log/apache2/graf1.marsupi.org_error.log
+
#LogLevel warn
+
#CustomLog /var/log/apache2/graf1.marsupi.org_access.log combined
+
  
<Directory />
+
Una vez que nuestro servidor SNPServices client tiene los datos de los nodos a monitorizar, es cuando se ejecuta el proceso de búsqueda de datos con el sistema mrtg. Lo hace con:
Options FollowSymLinks
+
/usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg
AllowOverride None
+
</Directory>
+
<Directory /var/www/snpservices>
+
Options FollowSymLinks
+
AllowOverride None
+
Order allow,deny
+
Allow from all
+
</Directory>
+
</VirtualHost></pre>
+
  
Por ultimo tendremos que comprobar que el snpservices de este servidor esté identificado por el numero que nos da la web de guifi. Si vamos al servicio es el numero que tenemos en la URL.
+
'''Paso 7'''. El servicio mrtg consulta los datos con ping y los envía a rrdtool que fabrica la gráfica.
  
<pre># vi /etc/snpservices/config.php
+
El log de los movimientos del servicio mrtg están en ''/var/log/snpservices/mrtgc.log''
$SNPGraphServerId = 35207;</pre>
+
  
A partir de ahora cuando configuremos nuestros nodos podremos usar este servidor de gráficas.
+
Los datos para hacer la gráfica se almacenan en ''/var/lib/snpservices/rrdb''.
  
El snpservices de nuestra máquina está configurado para consultarle a la web de guifi qué nodos tiene que guardar las gráficas. Los scripts se ejecutan cada 5 minutos para recolectar los datos y cada media hora para saber qué nodos graficar.
+
'''Paso 8'''. Los clientes que quieren información de los nodos, la buscan en el servidor web. Éste buscalos datos y los encuentra dentro de su  MySQL, pero las gráficas las busca en el servidor de gráficas de aquel nodo, es decir, en el servidor $SNPGraphServerId.
  
Si queremos hacer backup de los datos que está recolectando el servidor de graficas copiamos el contenido del directorio /var/lib/snpservices
+
== Véase también ==
 +
* [[Instalar servidor de gráficas en OpenWRT]]
 +
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get
 +
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache
 +
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg
 +
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido
 +
* [[Servidor de gráficas en una red mesh con QMP y Airmax]]
  
== A partir de dpkg ==
+
== Preguntas más frecuentes ==
Podemos descargar el paquete <code>snpservices</code> desde:
+
* [[Regenerar los ficheros rrd]]
 +
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.
  
wget http://repo.vic.guifi.net/debian/snpservices_0.2.1-18_all.deb
+
== Referencias ==
 +
* [http://www.guifi.net/proxy-debian manual debian de guifi.net]
 +
* [http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]
  
Tras descargar el paquete, lo instalamos:
+
== Enlaces externos ==
 +
* [http://www3.uji.es/~vrubert/guifi_linux/graph.html Tutorial servicio SNPServices]
  
dpkg -i snpservices_0.2.1-18_all.deb
+
[[ca:Servidor de gràfiques]]
 
+
Nos dará error de dependencias. Las instalamos
+
 
+
apt-get -f install
+
 
+
La instalación nos pedirá que introduzcamos el ID del servidor de gráficas. Ese número lo obtendremos del nodo que hemos creado en la web, en este caso de guifi.net/es/node/24562, es decir, 24562 (para otros lugares será un número distinto).
+
 
+
También nos preguntará si queremos recuperar en este momento el archivo mrtg.cfg. Aceptamos. Una vez instalado no tendremos que configurar nada más en el servidor, comenzará a servir gráficas inmediatamente.
+
 
+
Debemos modificar el nodo del servicio de gráficas para añadirle la URL del mismo, que será del tipo maquina/snpservices. También hay que establecer la versión 2.0.
+
 
+
= Resolución de problemas habituales =
+
 
+
Al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.
+
 
+
= Referencias =
+
 
+
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]
+
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]
+
 
+
= Enlaces externos =
+
 
+
* [http://acacha.org/mediawiki/index.php/Snpservices Manual extenso] (en catalán)
+
 
+
[[Categoría:Servidor]]
+
 
+
[[ca:Servidor_de_gràfiques]]
+

Última revisión de 00:31 14 feb 2014

El servidor de gráficas se basa en el servicio de Guifi.net llamado SNPServices.

El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no necesita nada mas.

Definición

Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará información a nuestro servidor cliente SNPServices.

A continuación se muestra un esquema de esta definición:

SNPServices.png

Definición para expertos

El cliente SNPServices consulta al Master SNPServices la lista de nodos a monitorizar, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los ejecuta (pings y trafico) para generar un rrd. Con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imágenes y las muestra.

El servidor web de Guifi.net conoce la url del servidor de gráficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.

Funcionamiento paso a paso

Paso 1. Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un número único que lo identifica. A este valor le llamamos $SNPGraphServerId.

En este servidor de gráficas se instalará un servicio Apache, con php y el paquete SNPServices. La dirección web la llamaremos $SNPDataServer_url.

Este servicio puede ser además supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos $rootZone.

Paso 2. Al crearse este nodo, se actualiza la BBDD de la web. Esta base de datos contiene toda la información de los nodos, servicios y demás datos de Guifi.net.

Pasos 3 y 4 Antes de continuar con el trabajo que hace el servidor SNPServices client, el Master SNPServices debe hacer un trabajo. El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Esta pregunta la hace con el script php que se llama refresh_cnml.php.. El servidor web le devuelve una lista de nodos en formato CNML que almacena en un archivo llamado /var/lib/snpservices/data/guifi.cnml.

Esta es la cabecera del archivo guifi.cnml:

<?xml version="1.0"?>
<cnml version="0.1" server_id="1" server_url="http://guifi.net" generated="20121105 1247">

El archivo que abre exactamente es: http:// $SNPDataServer_url /guifi/cnml/ $rootZone /detail

El servidor web devuelve un archivo y el servidor SNPServices lo guarda en /var/lib/snpservices/data/guifi.cnml. Este archivo se actualiza de tanto en tanto y es necesario hacerlo ya que los cambios en la web no se reflejarían en los servicios a monitorizar.

Pasos 5 y 6. Volvemos al servidor cliente SNPServices que estamos montando.

El servidor SNPServices tiene una dirección donde buscar el archivo cnml creado por el Master SNPServices:

$MRTGConfigSource = '$SNPDataServer_url . "/graphs/cnml2mrtgcsv.php?server" . =' . $SNPGraphServerId;

En esta dirección se descarga la lista de nodos a monitorizar y transforma el contenido en un archivo que contiene los nodos a monitorizar y en un lenguaje que puede entender el servicio mrtg.

Esta es la cabecera del archivo mrtg.cfg:

# PathAdd: /usr/local/rrdtool-1.2.12/bin
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi
HtmlDir: /var/lib/snpservices/rrimg/
ImageDir: /var/lib/snpservices/rrimg/ 
LogDir: /var/lib/snpservices/rrdb/
LogFormat: rrdtool
ThreshDir: /var/lib/snpservices/rrdb/
Forks: 12
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 

Para ver esta lista en formato CSV desde web la podemos pedir así:

$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId

Ejemplo:

http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833

De paso, veremos si hasta ahora funciona todo.

El log del sistema que guarda los movimientos de este proceso están en /var/log/snpservices/mrtgccfg.log.

Al instalar el servicio SNPServices, se nos añade un cron. Este cron (script que se ejecuta automáticamente según el tiempo definido) está en /etc/cron.d/snpservices.

*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php >> /var/log/snpservices/mrtgccfg.log 2>&1; fi
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] && [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l >> /var/log/snpservices/mrtg.log 2>&1; fi
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php 

Este quiere decir que mediante el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulte el archivo guifi.cnml antes descrito y transforme el contenido en un XML disponible para el servicio mrtg. Lo almacena en /var/lib/snpservices/data/mrtg.cfg.

Una vez que nuestro servidor SNPServices client tiene los datos de los nodos a monitorizar, es cuando se ejecuta el proceso de búsqueda de datos con el sistema mrtg. Lo hace con:

/usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg

Paso 7. El servicio mrtg consulta los datos con ping y los envía a rrdtool que fabrica la gráfica.

El log de los movimientos del servicio mrtg están en /var/log/snpservices/mrtgc.log

Los datos para hacer la gráfica se almacenan en /var/lib/snpservices/rrdb.

Paso 8. Los clientes que quieren información de los nodos, la buscan en el servidor web. Éste buscalos datos y los encuentra dentro de su MySQL, pero las gráficas las busca en el servidor de gráficas de aquel nodo, es decir, en el servidor $SNPGraphServerId.

Véase también

Preguntas más frecuentes

  • Regenerar los ficheros rrd
  • tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.

Referencias

Enlaces externos

Herramientas personales