Mantener el orden en un servidor puede convertirse en una tarea tediosa y angustiosa a medida que las aplicaciones que este contiene se vuelven más utilizadas y pesadas, al punto de tener una alta cantidad de procesos ejecutándose. La situación se torna complicada cuando un servidor que es sometido bajo muchas tareas empieza a fallar en algún lado, encontrar el error puede tomar horas o incluso días de dedicación. Esta semana te traemos una solución para estas ocasiones donde el estrés y la incertidumbre no serán parte de la rutina de análisis, veamos más con Munin.
¿Qué es Munin?
Esta herramienta de
código abierto permite monitorear los recursos de un servidor mediante un proceso residente en el mismo que va almacenando históricamente lo que sucede y construye múltiples gráficas indicando un gran número de estadísticas lo cual nos permite observar y analizar todo lo que ocurre dentro del servidor. Esto nos facilita la identificación (y prevención) de los problemas que pudiesen ocurrir como reinicios de algún proceso, desbordamientos de memoria de alguna aplicación, fallos en algún proceso de base de datos, entre otros.
Una de las ventajas de Munin, es su extensibilidad por medio de
plugins, hay muchos creados por la comunidad para diferentes servicios o hardware específicos lo cual hará más eficiente el análisis debido a la recolección especializada de datos para cada caso.
Otra gran ventaja de Munin es su arquitectura basada en nodos, es decir, una instancia maestra puede recolectar información de varios servidores (que serán los nodos) para tener una recopilación de toda tu arquitectura de servidores de manera que no es necesario que tengas que revisar y analizar el estado de cada servidor por separado.
En esta entrada nos enfocaremos en la recolección de información de una única instancia, la que resida en el servidor que deseamos analizar.
Instalación
La información que nos proveerá Munin está diseñada para ser consultada mediante la exposición del servicio a la red. Por ello necesitaremos tener instalado un servidor web en nuestro equipo. En esta entrada haremos uso de
nginx, pero si lo deseas puedes utilizar Apache, Lighttpd o el de tu preferencia.
La manera más sencilla de instalar Munin es utilizando los manejadores de paquetes del sistema operativo como YUM o apt-get. En esta entrada estaremos utilizando un ambiente de prueba Ubuntu 12.04.
La última versión de Munin al momento de este escrito es 2.1.5. Sin embargo en Ubuntu 12.04 solo es posible instalar nativamente hasta la versión 1.4.6.
Tan solo debemos instalarlo del repositorio oficial:
|
$ sudo apt-get update
...
$ sudo apt-get install munin
...
|
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/www/codehero/monitoreo
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
|
Cambiemoslo a algo más a nuestro estilo:
|
[monitorCodehero]
address 127.0.0.1
use_node_name yes
|
Debemos asegurarnos que el directorio de acceso web que especificamos exista, de lo contrario lo crearemos:
|
$ cd /var/www
$ mkdir codehero
$ cd codehero
$ mkdir monitoreo
|
IMPORTANTE: Le damos permiso a Munin para que pueda escribir en el directorio.:
|
$ sudo chown munin:munin -R /var/www/codehero/
|
Y reiniciaremos el servicio de Munin:
|
$ sudo service munin-node restart
|
Configuración servidor web
Bien, ahora solo nos falta configurar nuestro servidor web para que podamos acceder a Munin.
En esta entrada como estamos utilizando
nginx abriremos el archivo de configuración (normalmente ubicado en
/etc/nginx/sites-available/default
) y lo dejaremos luciendo algo así:
1
2
3
4
5
6
7
8
9
10
11
12
|
server {
listen 80;
root /var/www;
index index.html index.htm;
server_name localhost;
location /codehero/monitoreo {
auth_basic "Inicio de sesion de Administrador";
auth_basic_user_file /var/www/.htpasswd;
}
}
|
El location
que especificamos nos permitirá restringir el acceso a dicha dirección para evitar que cualquiera pueda entrar en él. No queremos que nadie ande ojeando data tan sensible como esta.
Para esto último debemos definir el usuario en el archivo que indicamos:
|
$ htpasswd -c /var/www/.htpasswd usuarioMonitoreador
Adding password for usuarioMonitoreador.
New password: 1234
Re-type new password: 1234
|
Prueba
Ahora solo debemos reiniciar nuestro servidor web y entrar a nuestra nueva dirección de Munin.
Para entrar usaremos el usuario que definimos anteriormente.
Tendremos un pequeño menu mostrándonos los nodos que este “maestro” monitorea, ya que estamos usando una sola instancia sirviéndose a sí mismo solo tendremos una.
Si recibes un error de que no se puede encontrar nada es probable que no haya pasado suficiente tiempo para que Munin genere su primera salida, dale unos minutos.
Si accedemos al segundo enlace veremos varias gráficas indicándonos distintos métricas referente a variables como disco, tráfico, firewall, NFS (sistemas de archivos en red), procesos, memoria y más.
Haz click en la imagen para agrandarla.
Es posible tener estadísticas de este tipo de servicios particulares con el uso de los plugins.