Instalar munin e importar/exportar gráficas

En la entrada de blog de hoy hablaremos de uno de los sistemas de monitorización más importantes a día de hoy, y es Munin. Es una herramienta opensource para monitorizar multitud de procesos (además hay cantidad de plugins hechos por la gente que aporta voluntariamente a Munin mejoras continuamente). Podemos monitorizar practicamente todo; apache, memoria, dns, red, cpu, uptime…..

munin-graph

No nos pararemos en exceso en como se instala, ya que es bastante sencillo. Hay que difereciar entre el munin-node (el cliente) y el munin (servidor), los dos paquetes están disponibles en repositorios oficiales.

Si queremos instalar el servidor, ejecutaremos:

apt-get install munin

Si queremos instalar el cliente, ejecutaremos:

apt-get install munin-node

En este caso hemos optado por la rama debian con apt, pero con yum install <paquete> valdría igualmente.

Configuración munin servidor

Para configurar el servidor, habrá que hacer unos pequeños ajustes previos a que todo funcione bien, que son estos:

Ahora editaremos el siguiente archivo /etc/munin/munin.conf, y veremos muchas opciones que nos permitirán configurar Munin a nuestro antojo. Por el momento nos enfocaremos en lo básico y necesario para que todo funcione. Veremos estos 5 parámetros comentados:

# dbdir   /var/lib/munin
# htmldir /var/cache/munin/www
# logdir  /var/log/munin
# rundir  /var/run/munin

# tmpldir /etc/munin/templates

Estos le indicarán a Munin lo siguiente:

  • El directorio donde se almacenarán los datos del proceso de monitoreo.
  • El directorio de acceso al servidor para visualizar la información recolectada.
  • El directorio para almacenar las bitácoras del proceso.
  • El directorio donde se encontrarán los archivos de ejecución.
  • El directorio que almacena las plantillas visuales.

Debemos descomentarlos (quitándole los #), y al parámetro htmldir indiquemos el directorio que usaremos en nuestro servidor web para acceder a Munin:

dbdir   /var/lib/munin
htmldir /var/cache/munin/www
logdir  /var/log/munin
rundir  /var/run/munin

tmpldir /etc/munin/templates

Por último veremos también en la parte inferior del archivo la configuración del host:

[localhost.localdomain]
    address 127.0.0.1
    use_node_name yes

Aquí es donde llamaremos a nuestro host local, para ser monitorizado. Podemos cambiarle el nombre por uno más común.

Cuando hagamos hecho todos los cambios, necesitamos reiniciar el servicio:

service munin-node restart

Configuración servidor web

En el servidor web, ya sea Apache o Nginx habrá que modificar poco, pero algo hay que hacer algo, destacamos en negrita lo que hemos modificado, para que veais las diferencias. Lo que hemos hecho ha sido proteger la web con usuario/clave


# Enable this for template generation
Alias /munin /var/cache/munin/www

<VirtualHost *:80>
errorlog /var/log/apache2/munin-error.log
<Directory /var/cache/munin/www>
Order allow,deny
#Allow from localhost 127.0.0.0/8 ::1
Allow from all
Options None

# This file can be used as a .htaccess file, or a part of your apache
# config file.
#
# For the .htaccess file option to work the munin www directory
# (/var/cache/munin/www) must have "AllowOverride all" or something
# close to that set.
#

AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType Basic
require valid-user

# This next part requires mod_expires to be enabled.
#

# Set the default expiration time for files to 5 minutes 10 seconds from
# their creation (modification) time.  There are probably new files by
# that time.
#

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault M310
</IfModule>

</Directory>

# Enables fastcgi for munin-cgi-html if present
#<Location /munin-cgi>
#    <IfModule mod_fastcgi.c>
#        SetHandler fastcgi-script
#    </IfModule>
#</Location>

#<Location /munin-cgi/static>
#       SetHandler None
#</Location>

# Enables fastcgi for munin-cgi-graph if present
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
<Location /munin-cgi/munin-cgi-graph>
Order allow,deny
#Allow from localhost 127.0.0.0/8 ::1
Allow from all
# AuthUserFile /etc/munin/munin-htpasswd
# AuthName "Munin"
# AuthType Basic
# require valid-user
<IfModule mod_fastcgi.c>
SetHandler fastcgi-script
</IfModule>
</Location>

ScriptAlias /munin-cgi/munin-cgi-html /usr/lib/munin/cgi/munin-cgi-html
<Location /munin-cgi/munin-cgi-html>
Order allow,deny
#Allow from localhost 127.0.0.0/8 ::1
Allow from all
# AuthUserFile /etc/munin/munin-htpasswd
# AuthName "Munin"
# AuthType Basic
# require valid-user
<IfModule mod_fastcgi.c>
SetHandler fastcgi-script
</IfModule>
</Location>
</VirtualHost>

Recordamos que siempre después de hacer cambios, hay que reiniciar el servicio como vimos arriba.

Configuración munin cliente

En el cliente solo debemos modificar una linea en el fichero :
/etc/munin/munin-node.conf

Y permitiendo que el servidor de munin “ataque” a ese servidor poniendo la IP en esta linea:

allow ^93\.46\.120\.122$
allow ^127\.0\.0\.1$
allow ^::1$

Nosotros hemos puesto la IP 93.46.120.122 para que pueda acceder. Las otras podemos borrarla si queremos, pero aqui para dar mas ejemplos las mantuvimos.

Y como siempre, reiniciamos el servicio para coger los nuevos datos.

**Nota: Munin automáticamente no coge las gráficas, hay que esperar un poco para que empiece a hacer gráficas. Su cron se encuentra en /etc/cron.d/munin (que es el encargado de hacer la recarga periodicamente)

Importar/exportar gráficas Munin

Es probable que en alguna ocasión nos veamos en la necesidad de mover nuestras gráficas a otro servidor porque queremos seguir manteniendo el historial de todo lo que tenemos monitorizado, pero claro Munin funciona sus gráficas con RRD son un poco puñeteras, por no decir otra cosa, a la hora de importarlas o exportarlas.

Las gráficas se almacenan (si no lo hemos modificado) en /var/lib/munin y dentro de cada directorio si hemos creado categorias.

Si queremos importarlas, necesitamos acceder al directorio, ej: /var/lib/munin/clientes

Y obtenerlas de la siguiente manera (esto lo haremos, obviamente, en el servidor que tenga las gráficas hasta el momento):

root@munin:~#for file in $( ls *.rrd );do rrdtool dump $file /tmp/rrd_dump/$file.xml;done

Con ese “script” casero, lo que hacemos es buscar en el directorio los *rrd y dumpearlos con el comando “rrdtool dump” al directorio deseado en formato .xml

A continuación, nos llevaremos esas gráficas al servidor nuevo y las importaremos de la siguiente manera:

root@munin:~#for i in ./*.xml; do rrdtool restore "$i" "${i%.xml}"; done

Con ese nuevo script lo que haremos será lo contrario, con “rrdtool restore” volcaremos las gráficas en xml convirtiendose en .rrd a secas.

Hay que tener en cuenta que ese comando último hay que ejecutarlo en la misma estructura de directorio que antes usabamos, es decir, /var/lib/munin/clientes, para que ahí almacene las gráficas en rrd y Munin sea capaz de cogerlas con todos los datos.

¡Déjanos una respuesta!