Monitorización de servidores con MUNIN en DEBIAN
28/6/2012 - Actualización tras el comentario de jonhattan vemos que el paquete munin-libvirt-plugins sólo es necesario si nuestra máquina es virtualizada.
Munin es una aplicación, escrita en perl, de monitorización red/sistema que nos muestra gráficos a través de una interfaz web, con cerca de 500 plugins disponibles. Podremos supervisar el rendimiento de servidores, redes SAN y aplicaciones.
En este artículo voy a tratar de relatar cómo instalar y configurar Munin. Y digo tratar pues es mi primera toma de contacto con esta herramienta.
Empezamos con la instalación, munin y sus plugins:
$ aptitude -V install munin munin-node munin-plugins-extra
Si nuestra máquina fuera virtual:
$ aptitude -V install munin munin-node munin-libvirt-plugins
También sus dependencias:
$ aptitude install liblwp-useragent-determined-perl libvirt-bin libcache-cache-perl
A continuación deberemos de editar el fichero de configuración de munin para especificar el directorio de salida (asegurándonos de que el usuario munin tenga permisos de escritura sobre el) y el nombre del servidor a usar:
$ nano /etc/munin/munin.conf
dbdir /var/lib/munin
htmldir /var/www/stats.facine.es/web/
logdir /var/log/munin
rundir /var/run/munintmpldir /etc/munin/templates
includedir /etc/munin/munin-conf.d
[facine.es]
address 127.0.0.1
use_node_name yes
Si nuestra máquina fuera virtual, instalamos plugins virtualizados:
$ munin-libvirt-plugins-detect
Pedimos sugerencias de plugins (los prueba todos y es normal de que nos informe de que algunos pueden producir errores):
$ munin-node-configure --suggest
Aceptamos las sugerencias y las autoconfiguramos:
$ munin-node-configure --shell
Por defecto los plugins de munin se instalan en /usr/share/munin/plugins/ y para activarlos sólo tenemos que crear un enlace simbólico al plugin deseado en /etc/munin/plugins/, lugar donde iremos para revisar qué plugins se han auto instalado y configurado:
$ cd /etc/munin/plugins
Plugin para munin:
$ ln -s /usr/share/munin/plugins/munin_stats
Plugins para Apache:
$ ln -s /usr/share/munin/plugins/apache_accesses
$ ln -s /usr/share/munin/plugins/apache_processes
$ ln -s /usr/share/munin/plugins/apache_volume
Plugins para MySQL:
$ ln -s /usr/share/munin/plugins/mysql_bytes
$ ln -s /usr/share/munin/plugins/mysql_queries
$ ln -s /usr/share/munin/plugins/mysql_slowqueries
$ ln -s /usr/share/munin/plugins/mysql_threads
$ ln -s /usr/share/munin/plugins/mysql_ mysql_bin_relay_log
$ ln -s /usr/share/munin/plugins/mysql_ mysql_commands
$ ln -s /usr/share/munin/plugins/mysql_ mysql_connections
$ ln -s /usr/share/munin/plugins/mysql_ mysql_files_tables
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_bpool
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_bpool_act
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_insert_buf
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_io
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_io_pend
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_log
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_rows
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_semaphores
$ ln -s /usr/share/munin/plugins/mysql_ mysql_innodb_tnx
$ ln -s /usr/share/munin/plugins/mysql_ mysql_myisam_indexes
$ ln -s /usr/share/munin/plugins/mysql_ mysql_network_traffic
$ ln -s /usr/share/munin/plugins/mysql_ mysql_qcache
Plugins para Memcached (Si lo tenemos instalado):
$ ln -s /usr/share/munin/plugins/memcached_ memcached_rates
$ ln -s /usr/share/munin/plugins/memcached_ memcached_bytes
$ ln -s /usr/share/munin/plugins/memcached_ memcached_counters
Plugins para Varnish (Si lo tenemos instalado):
$ ln -s /usr/share/munin/plugins/varnish_ varnish_backend_traffic
$ ln -s /usr/share/munin/plugins/varnish_ varnish_expunge
$ ln -s /usr/share/munin/plugins/varnish_ varnish_hit_rate
$ ln -s /usr/share/munin/plugins/varnish_ varnish_memory_usage
$ ln -s /usr/share/munin/plugins/varnish_ varnish_objects
$ ln -s /usr/share/munin/plugins/varnish_ varnish_request_rate
$ ln -s /usr/share/munin/plugins/varnish_ varnish_threads
$ ln -s /usr/share/munin/plugins/varnish_ varnish_transfer_rates
$ ln -s /usr/share/munin/plugins/varnish_ varnish_uptime
Si tenemos instalado Fail2Ban sería buena idea monitorizarlo, para ello lo configuramos:
$ echo "[fail2ban*]
user root
" > /etc/munin/plugin-conf.d/fail2ban
Y lo activamos:
$ ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/
Si tenemos APC y queremos monitorizarlo tendremos que realizar un paso extra, la creación de un nuevo sitio, y activación, para colocar un fichero php necesario por el plugin y el cual incluye. Sitio que no será accesible.
$ nano /etc/apache2/sites-available/monitorizacion
<VirtualHost 127.0.0.1:80>
ServerName monitorizacion
ServerAlias 127.0.0.1
<Directory />
Order Deny,Allow
Deny from All
</Directory>
DocumentRoot /var/www/monitorizacion/web/
<Location />
Options +FollowSymLinks
Allow from all
</Location>
<Location /server-status>
SetHandler server-status
</Location>
<Location /server-info>
SetHandler server-info
</Location>
LogLevel error
ServerSignature Off
</VirtualHost>
$ mkdir -p /var/www/monitorizacion/web/
$ ln -s /etc/apache2/sites-available/monitorizacion /etc/apache2/sites-enabled/zzz-monitorizacion
Importante que este nuevo sitio lo activemos con el prefijo "zzz-" para asegurarnos de que se ejecuta en último lugar.
Descargamos el plugin de http://code.google.com/p/munin-php-apc/downloads/list, colocamos el fichero php en el sitio creado en el paso anterior y lo configuramos y activamos:
$ cd /tmp
$ wget http://munin-php-apc.googlecode.com/files/munin_plugin_php_apc-0.1.zip
$ unzip munin_plugin_php_apc-0.1.zip
$ cp -p php_apc/apc_info.php /var/www/monitorizacion/web/
$ mkdir -p /usr/local/share/munin/plugins/
$ cp -p php_apc/php_apc_ /usr/local/share/munin/plugins/
$ rm -R munin_plugin_php_apc-0.1.zip php_apc
$ echo "[php_apc_*]
user root
env.url http://localhost/apc_info.php?auto
" >> /etc/munin/plugin-conf.d/munin-node
$ ln -s /usr/local/share/munin/plugins/php_apc_ /etc/munin/plugins/php_apc_usage
$ ln -s /usr/local/share/munin/plugins/php_apc_ /etc/munin/plugins/php_apc_hit_miss
$ ln -s /usr/local/share/munin/plugins/php_apc_ /etc/munin/plugins/php_apc_purge
$ ln -s /usr/local/share/munin/plugins/php_apc_ /etc/munin/plugins/php_apc_fragmentation
$ ln -s /usr/local/share/munin/plugins/php_apc_ /etc/munin/plugins/php_apc_files
$ ln -s /usr/local/share/munin/plugins/php_apc_ /etc/munin/plugins/php_apc_rates
Antes de reiniciar apache y munin, debemos de revisar que los plugins tienen permisos de ejecución:
$ chmod -R 755 /usr/share/munin/plugins
$ service apache2 restart
$ service munin-node restart
Por último nos faltaría proteger el directorio con contraseña para que nadie pueda acceder a nuestras estadísticas, si no existiera el fichero: /var/www/stats.facine.es/web/.htaccess, con munin-cron forzamos que se genere el árbol de ficheros y ya podremos editarlo:
$ su - munin --shell=/bin/bash
$ munin-cron
$ exit
$ nano /var/www/stats.facine.es/web/.htaccess
AuthName "Acceso Privado"
AuthUserFile /var/www/stats.facine.es/.htpasswd
AuthGroupFile /dev/null
<limit GET PUT POST>
require valid-user
</limit>
$ htpasswd -c /var/www/stats.facine.es/.htpasswd admin
New password:
Re-type new password:
Adding password for user admin
Al cabo de un rato obtendremos algo así:
Fuente de la sabiduría: Pedro González (@NITEMAN_es).
Adjunto | Tamaño |
---|---|
Captura completa de munin | 2.78 MB |
Comentarios
No te ha quedado mal
Al menos gracias a ti la información le servirá a más gente ;)
Un par de apuntes
Buenas,
mola el artículo, me ha servido para revisar mi instalación de munin y pillar media docena de plugins que no tenía activos (no conocía el munin-node-configure --suggest).
Te hago un par de sugerencias / correcciones:
1/ no comentas que versión de debian estás usando, o si tiras de otros repositorios. AFAIK los paquetes munin-libvirt-plugins* sólo están disponibles en sid.
2/ para los plugins de apache también hace falta acceso al /server-status que has definido en el vhost para apc. Osea que si alguien sigue el artículo y no hace la parte de apc no le va a rular la de apache.
3/ para server-status y server-info hay que activar los módulos status e info respectivamente (a2enmod status info). Estos módulos ya traen directivas para que sólo se pueda acceder desde 127.0.0.1, ver:
/etc/apache2/mods-enabled/status.conf
/etc/apache2/mods-available/info.conf
.. por lo que las directivas en el vhost se pueden quitar. De manera análoga podrías restringir el acceso al script de apc sólo para localhost, sin necesidad de un vhost dedicado a ello.
4/ La restricción de acceso a munin la puedes poner en apache en vez de un .htaccess (siempre es mejor poner las directivas en la config de apache que en un .htaccess)
5/ Por último, y esto es más bien cuestión de gustos, yo prefiero munin.example.com que example.com/munin
y recuerda, a2ensite es tu amigo :)
Transcribo respuesta de
Transcribo respuesta de NITEMAN:
Los libvirt estan en squeeze o dotdeb:
deb-src http://packages.dotdeb.org stable all
Respecto a la restricción de vhost... Cuando tienes un Varnish en la misma máquina, el acceso desde 127.0.0.1 no es suficiente, tienes que separar a un virtualhost que se cargue el último, al menos yo no he encontrado otra manera de hacerlo.
Se me olvidaba...
Algunos plugins requieren algún paquete del sistema para poder funcionar. Si está instalado, en la página de gráficas de ese plugin sale un mensaje al pie. Por ejemplo el plugin iostat require del paquete systats.
Muchas gracias :)
Muchas gracias :)
Añadir nuevo comentario