Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Configuracion de munin
1. ADMINISTRACIÓN DE REDES | Configuracion de Munin
Tecnológico Nacional de
México Tecnológico de
Tehuacán
Administración de redes
Instalación y configuración
de Munin
Juan Carlos Guevara Rivera
Luis Angel Martinez Cruz
Prof. Francisco Vázquez Guzmán
Tehuacán, Pue. Mayo de 2014
2. ADMINISTRACIÓN DE REDES | Configuracion de Munin
¿Qué es Munin?
Munin es un programa que permite monitorizar uno o varios equipos.
Además, presenta la información a través de un servidor web, está hecho en
Perl y permite el uso de plugins, lo cual lo hace realmente versátil. También
muestra una gran cantidad de información mediante unas gráficas creadas
con la librería (biblioteca — library) gráfica RRDtool.
Munin se divide en tres componentes principales:
Servidor
Un demonio que corre en todas las maquinas monitoreadas por default en el
puerto 4949. Su función es configurar y llamar a los plugins. Cuando se habla
de munin-node, nos referimos al servidor.
Plugins
Cada uno de los agentes de recolección de datos que son invocados por
munin-node. Dan la información que monitorean, y son también capaces de
describir su función y configuración.
Cliente
Proceso que corre periódicamente (normalmente cada 5 minutos) desde un
nodo central, interrogando a cada uno de los servidores munin-node, y
generando las páginas web con los resultados.
3. ADMINISTRACIÓN DE REDES | Configuracion de Munin
Como configurar Munin
Instalando Munin
Munin está incluido en el repositorio oficial de Debian, por lo que sólo hay que
actualizar el equipo e instalarlo.
# aptitude update
# aptitude install munin # si vamos a emplear el equipo como servidor
# aptitude install munin-node # si vamos a leer datos de él
Munin puede usarse para monitorizar uno o varios equipos, por lo que munin-
node debe instalarse en los equipos cliente y munin en el equipo que actuará
a modo de servidor y que provee de servicio web.
Una manera rápida de instalar y configurar el programa para un sólo equipo
se detalla en el apartado de Enlaces.
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
4. ADMINISTRACIÓN DE REDES | Configuracion de Munin
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
5. ADMINISTRACIÓN DE REDES | Configuracion de Munin
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
7. ADMINISTRACIÓN DE REDES | Configuracion de Munin
$ 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
ExtendedStatus On
<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>
8. ADMINISTRACIÓN DE REDES | Configuracion de Munin
<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
9. ADMINISTRACIÓN DE REDES | Configuracion de Munin
$ 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
10. ADMINISTRACIÓN DE REDES | Configuracion de Munin
AuthType Basic
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
Y tendremos nuestro Munin corriendo
11. ADMINISTRACIÓN DE REDES | Configuracion de Munin
Ficheros de configuración
Munin cuenta con varios ficheros y directorios que hay que conocer.
/etc/munin/munin.conf. Es el fichero de configuración general y, más
concretamente, donde se configura el lado servidor de munin. En
este fichero se especifican los directorios a emplear y la
configuración de las diferentes máquinas. Debe estar configurado
en el servidor.
/etc/munin/munin-node.conf. El fichero de configuración del nodo.
Munin ve a cada equipo que monitoriza como el nodo de una red y
mediante este fichero se especifica la configuración. Debe existir en
cada equipo.
/etc/munin/plugins/. Es el directorio donde munin lee los plugins a
emplear. Éstos son simples enlaces al directorio real de los plugins
(/var/lib/munin/plugins/) y se pueden añadir y quitar de la manera
más simple, creando o borrando un enlace. La lista de plugins es
bastante larga y, en caso de no contar con el que necesitamos, se
puede programar en cualquier lenguaje con que nos manejemos.
/var/www/munin/. Directorio donde se vuelca por defecto el código
HTML generado con los informes. Se puede cambiar en munin.conf.
Debe pertenecer al usuario y grupos munin.
/var/lib/munin/. Directorio donde se guardan todos los datos de los
diferentes nodos y con los que se generan las gráficas.
/var/log/munin/. Directorio de registros del sistema o logs. En las
configuraciones de red es interesante el fichero munin-nodes.log,
que detalla la información enviada y transmitida desde el nodo.
/etc/cron.d/munin. Fichero del cron que se ejecuta cada cinco
minutos y que actualiza los datos del equipo en la base de datos de
munin.
12. ADMINISTRACIÓN DE REDES | Configuracion de Munin
/etc/cron.d/munin-node. Fichero del cron que se ejecuta cada cinco
minutos y que actualiza los datos de los nodos que estén dados de
alta.
/etc/init.d/munin-node. Script para reiniciar la solicitud de
información a los nodos.
Configurando el servidor
Editamos el fichero /etc/munin/munin.conf y lo dejamos de la siguiente
manera:
# Example configuration file for Munin, generated by 'make build'
dbdir /var/lib/munin
htmldir /var/www/munin
logdir /var/log/munin
rundir /var/run/munin
tmpldir /etc/munin/templates
#graph_period minute
#
[indo.n1mh.org]
address la.ip.de.indo
local_address la.ip.de.indo
use_node_name yes
#
[coyote.n1mh.org]
address 127.0.0.1
local_address 127.0.0.1
use_node_name yes
13. ADMINISTRACIÓN DE REDES | Configuracion de Munin
Aquí se especifican los directorios y ficheros a emplear para guardar los datos
(dbdir), los informes generados (htmldir), los logs (logdir), las plantillas html
(tmpldir), los semáforos (rundir), etc… También se especifican los equipos
que son nodos, es decir, a los que debe conectarse y obtener la información
de los plugins.
Al igual que antes, si no especifico la dirección local (local_address) que tiene
el equipo, munin no genera las gráficas, con lo que se incluye la dirección IP
por partida doble.
Configurando un nodo
Editamos el fichero /etc/munin/munin-node.conf y lo dejamos de la siguiente
manera:
#
# Example config-file for munin-node
#
log_level 4
log_file /var/log/munin/munin-node.log
port 4949
pid_file /var/run/munin/munin-node.pid
background 1
setseid 1
host *
user root
group root
setsid yes
ignore_file ~$
ignore_file .bak$
14. ADMINISTRACIÓN DE REDES | Configuracion de Munin
ignore_file %$
ignore_file .dpkg-(tmp|new|old|dist)$
ignore_file .rpm(save|new)$
host_name coyote.n1mh.org
allow ^xxx.xxx.xxx.xxx$
Las líneas más importantes de este fichero son las que comienzan
con host_name yallow. La primera especifica el nombre con que el servidor
identifica a esta máquina y no deberíamos tocarla a no ser que no se
reconozcan, pero lo cierto es que nunca me ha funcionado ningún nodo hasta
que no he habilitado esta opción.
La segunda línea específica desde que dirección IP dejaremos que se
conecten, es decir, pondremos la dirección IP del servidor munin. Sin esta
configuración no obtendremos más que errores de conexión. Por cierto, hay
que escribir la IP como una expresión regular, tal y como se muestra (^ indica
el inicio y $ el final de la expresión).
Arrancando munin
Munin se ejecuta cada cinco minutos como un trabajo del cron. Los scripts
están en/etc/cron.d/ y se pueden modificar para que ejecute lecturas cada
minuto y así realizar pruebas.