Usando Munin

From PostgreSQL wiki
Jump to navigationJump to search

¿Qué es Munin?

Munin es un programa de monitorización de servidores que genera estadísticas sobre su funcionamiento de los recursos de nuestros servidores, como memoria, disco duro y servicios. Utiliza las herramientas RRDTool para generar gráficas de rendimiento de los parámetros del sistema analizados. Utiliza una interfaz web para mostrar las gráficas generadas, permite trabajar de forma distribuida, mostrando la información de varios servidores. Para ello se instala en una SERVER la parte servidora de Munin y en el resto la parte cliente, que mandará los datos recopilados al servidor para que éste los muestre. Está hecho en perl y permite el uso de plugins, lo cual lo hace realmente versátil.

Instalando munin

Munin está incluido en el depósito oficial de diferentes distribuciones:

    root@lolo:~# apt-get install munin                # si vamos a emplear el equipo como servidor
           O
    root@lolo:~# yum install munin
    root@lolo:~# apt-get install munin-node           # si vamos a leer datos de él
           O
    root@lolo:~# yum install munin-node

Munin puede usarse para monitorizar uno o varios equipos, por lo que munin-node debe instalarse en los equipos de los cuales se recopilarán los datos y munin en el equipo que actuará a modo de servidor y que provee de servicio web.

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.
  • /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.
  • /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:

    # Example configuration file for Munin, generated by 'make build'
    dbdir /var/lib/munin ## directorio para guardar los datos y ficheros a
    emplear  
    htmldir /var/www/munin ## los informes generados
    logdir /var/log/munin  ## los logs
    rundir /var/run/munin  ## los semáforos
    tmpldir /etc/munin/templates ## las plantillas html
    #graph_period minute
    #
    [server1.etecsa.cu]
    address la.ip.de.server1
    local_address la.ip.de.server1
    use_node_name yes
    #
    [localhost.etecsa.cu]
    address 127.0.0.1
    local_address 127.0.0.1
    use_node_name yes
    **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:

    #
    # 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$
    ignore_file %$
    ignore_file \.dpkg-(tmp|new|old|dist)$
    ignore_file \.rpm(save|new)$
    host_name localhost.etecsa.cu  ## nombre con que el servidor identifica a
                                      esta máquina 
    allow ^127\.0\.0\.1$           ## dirección IP dejaremos que se
                                      conecten...pondremos la dirección IP del
                                      servidor munin

Configurando el usuario de acceso para la interfaz web

    htpasswd -cm /etc/munin/munin-htpasswd muninadmin

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.

Iniciar el cliente en todas las máquinas:

 root@lolo:~# /etc/init.d/munin-node start

Accediendo a la información

 Introducimos en el navegador la dirección de htmldir, en este caso file:///var/www/munin/ 
  ó http://localhost/munin (si contamos con un servidor web).

Plugins para PostgreSQL

El uso de plugins mejora la versatilidad de munin. A partir de la version 1.4 Munin incluye los plugins necesarios para monitorear PostgreSQL.

Instalación de los plugins

A continuacion vamos a describir como instalarlo y configurarlo.

Todo los plugins están programados en perl y necesitan el modulo DBD::Pg Perl.

Para Debian

 root@lolo:~# apt-get install libdbd-pg-perl

Para Centos

 root@lolo:~# yum install perl-DBD-Pg

Necesitamos activar los parámetros de recolección de estadistica y monitoreo en Postgresql.

Para ello editamos el postgresql.conf:

 logging_collector = on
  • - Query/Index Statistics Collector -
 track_activities = on
 track_counts = on
 update_process_title = on
  • - Statistics Monitoring -
 log_parser_stats = on
 log_planner_stats = on
 log_executor_stats = on
 log_statement_stats = off

Instalar plugins de Munin es muy sencillo. Lo único que tienes que hacer es copiarlos a /usr/share/munin/plugins/

Para Centos

Descompactando el archivo: muninpgplugins-0.2.2.tar.gz

 root@lolo:~# tar xvzf muninpgplugins-*.tar.gz
 root@lolo:~# cd plugins

Para Debian

root@lolo:~# apt-get install munin-plugins-extra

Descripción de los plugins

pg__connections Este plugin muestra el numero de conexiones en idle, espera y conectadas.

pg__db_size Este plugin muestra el tamaño de base de datos suministrado por pg_database_size('my_db');

pg__locks Este plugin muestra todos los posibles bloqueos desde postgresql.

pg__stat_database Este plugin muestra todos datos desde una base de datos para una vista especifica.

pg__stat_tables Este plugin muestra todos las columnas en pg_stat_*_tables (excepto *vacuum y *analyze). Este información es utilizada para agregar gráficos en el munin.conf (like ratio). Con el parametro especial (statscope) especificamos si utilizamos pg_stat_all_tables, pg_stat_user_tables o pg_stat_sys_tables (user es valos por defecto).

pg__statio_tables Este plugin muestra todos las columnas en pg_statio_*_tables. ste información es utilizada para agregar gráficos en el munin.conf (like ratio). Con el parametro especial (statscope) especificamos si utilizamos pg_stat_all_tables, pg_stat_user_tables o pg_stat_sys_tables (user es valos por defecto).

pg__stat_bgwriter Este plugin muestra todos las columnas en pg_stat_bgwriter. Este información es utilizada para agregar gráficos en el munin.conf (like ratio). Como todas las bases de datos tienen algún valor en esta tabla, no es necesario especificar la base de datos.

Para activar los plugins

Tener en cuenta que si el nombre del plugin es por ej. postgres_ significa que cuando crees los enlaces simbólicos en /etc/munin.d/plugins según lo que pongas después va a monitorizar una cosa u otra. Lo mejor es ver el código del plugin en cuestión para ver que parámetros soporta:

Creamos los enlaces simbólicos en /etc/munin/plugins.

 ln -s '/usr/share/munin/plugins/postgres_autovacuum'     '/etc/munin/plugins/postgres_autovacuum'
 ln -s '/usr/share/munin/plugins/postgres_bgwriter'       '/etc/munin/plugins/postgres_bgwriter'
 ln -s '/usr/share/munin/plugins/postgres_cache_'         '/etc/munin/plugins/postgres_cache_ALL'
 ln -s '/usr/share/munin/plugins/postgres_checkpoints'    '/etc/munin/plugins/postgres_checkpoints'
 ln -s '/usr/share/munin/plugins/postgres_connections_'   '/etc/munin/plugins/postgres_connections_ALL'
 ln -s '/usr/share/munin/plugins/postgres_connections_db' '/etc/munin/plugins/postgres_connections_db'
 ln -s '/usr/share/munin/plugins/postgres_locks_'         '/etc/munin/plugins/postgres_locks_ALL'
 ln -s '/usr/share/munin/plugins/postgres_querylength_'   '/etc/munin/plugins/postgres_querylength_ALL'
 ln -s '/usr/share/munin/plugins/postgres_size_'          '/etc/munin/plugins/postgres_size_ALL'
 ln -s '/usr/share/munin/plugins/postgres_transactions_'  '/etc/munin/plugins/postgres_transactions_ALL'
 ln -s '/usr/share/munin/plugins/postgres_users'          '/etc/munin/plugins/postgres_users'
 ln -s '/usr/share/munin/plugins/postgres_xlog'           '/etc/munin/plugins/postgres_xlog'

Ejemplos de posibles configuraciones

Para adicionar el llamado a los plugins editamos el fichero /etc/munin/plugin-conf.d/munin-node:

Las varibles a configurar son:

env.PGHOST = cual servidor de base de datos usar. Defaults para 'localhost'.
env.PGDATABASE = cual base de datos usar. Defaults para template1.
env.PGUSER = cual cuanta de usuario de Postgresql usar. Defaults para 'postgres'. Puede ser el mismo usuario,que ejecuta los plugins de Munin.
env.PGPASSWORD = cual es la clave del usario correspondiente. Default para . Guada relación con el tipo de acceso en el pg_hba.conf.
  • ejemplo1
[pg_*]
user postgres
  • ejemplo2--Uso base de datos foobase.
[pg_foobase*]
user foouser
env.PGDATABASE foobase
  • ejemplo3--Uso servidor local, ident autentificación con usuario 'postgres'.
[postgres_*]
user postgres
  • ejemplo4--Uso servidor, TCP autentificación con usuario y contraseña.
[postgres_*]
env.PGHOST localhost
env.PGUSER someuser
env.PGPASSWORD somepassword

Para probar el funcionamiento de los plugins

Reiniciamos munin

root@lolo:~# /etc/init.d/munin-node restart

y esperamos a que empiece a recopilar información para leer los logs a ver si todo funciona en condiciones, O bien de forma directa,

root@lolo:~# /usr/share/munin/plugins/postgres_activate_lock