Automatización de la herramienta de monitorización Munin con AnsibleEPS

En nuestra unidad, utilizamos varias herramientas de monitorización libres cuya configuración automatizamos con Ansible. Uno de ellos es Munin (para quien quiera conocer más sobre Munin, aquí tiene una guía de inicio). En esta entrada, vamos a ver cómo funciona y cómo podemos configurar el playbook de AnsibleEPS para Munin.

Como en todos los playbooks de AnsibleEPS para nuestra infraestructura, este nos permite realizar de manera centralizada, para todos los servidores que realizan el servicio, las tareas de configuración asociadas a él. En el caso de Munin: la configuración de la lista de clientes munin.

Lo primero que debemos tener en cuenta es que el playbook common.yml se encarga (entre otras muchas tareas: más información sobre este playbook aquí) de instalar y configurar el software de los clientes (munin-node). Además permitirá el acceso desde los servidores del grupo munin.

¿Cómo se realizan los cambios para Munin? Mediante  el fichero situado en roles/munin/templates/etc/munin/conf.d/hosts.j2  Dicho template no es mas que el fichero de configuración hosts del servidor Munin con la lista de clientes munin. El template obtiene todos los equipos del inventario excepto los del grupo nomunin y los introduce en la lista. Si queremos tener otros clientes munin que no se encuentren en el inventario, se creará a mano un fichero con la lista dentro del mismo directorio (ya existe un fichero así llamado hosts-outsiders).

La ejecución del playbook se realiza con la orden:  ansible-playbook munin.yml que afectará a todos los servidores incluidos en el grupo munin. Tras la ejecución de esta orden, tendríamos configurado en los servidores del grupo munin la recolección de datos de todos nuestros servidores excepto de aquellos que hayamos incluido en el grupo nomunin.

Si queremos que todo sea automático (hasta la inclusión de los servidores) disponemos de una aplicación de monitorización genérica que llamamos EPS-MS (el software está en Github) que descubre todos los servidores de la red que le indiquemos. Así, la diferencia entre ambos es que, mientras con EPS-MS los servidores se localizan automáticamente por la aplicación, en  AnsibleEPS los servidores los introduce el administrador en el inventario pero el resultado es que tendremos nuestro servidor/servidores de Munin monitorizando los servidores de nuestra infraestructura de los que necesitemos tener información (para nosotros, todos 😉 ).

¡Esperamos que os sea útil!

EPSMS: Instalación y configuración

Como comentábamos en una entrada anterior, EPSMS es una herramienta de administración de sistemas, que incluye varias utilidades para monitorizar alertas, visualizar gráficas de rendimientos, gestionar inventarios hardware/software y chequear vulnerabilidades.

Existe una demo online disponible en https://epsms.eps.ua.es (usuario: epsms contraseña: epsms) y una versión descargable desde Github https://github.com/EPSAlicante/EPSMS

En esta entrada explicaremos cómo instalar y configurar EPSMS para monitorizar un entorno de equipos como el de la Demo.

 

Continue reading “EPSMS: Instalación y configuración”

EPS Monitoring System: la herramienta imprescindible para cualquier administrador

Ya tenemos instalados nuestros servidores, y los servicios están configurados y funcionando. ¿Y ahora qué?

  • Sería muy interesante disponer de un sistema de monitorización de sistemas y servicios como Nagios, que detecte y avise de cualquier problema, haciendo que podamos solucionarlos antes de que los clientes puedan verse afectados.
  • También nos sería muy útil unas gráficas de rendimiento de los sistemas (CPU, memoria, red, discos, etc) como Munin, para poder comprobar el óptimo funcionamiento de nuestros servicios, y analizar problemas de rendimiento con datos actuales e históricos.
  • Mejor aún si además disponemos de un sistema de generación de cuadros de mando como Grafana, preconfigurado con la información obtenida de Nagios y Munin.
  • Igualmente útil, casi imprescindible, sería tener un inventario exhaustivo de todos nuestros servidores a nivel hardware, software y seguridad. Por supuesto dicho inventario tendría que realizarse de manera automática y permitir un acceso sencillo y personalizable, tanto a la información actual como a todos los cambios que se vayan produciendo.
  • A nivel de seguridad, necesitaremos un escaneador de vulnerabilidades como Openvas, con el que poder comprobar la seguridad de nuestros sistemas y servidores.

Todo esto lo realiza EPSMS: centraliza, gestiona, configura y controla todos estos sistemas tan necesarios para el control del correcto funcionamiento de nuestros servidores.

¿Puedo verlo en funcionamiento? Por supuesto, en la URL https://epsms.eps.ua.es (usuario: epsms contraseña: epsms) podemos acceder con el usuario indicado, con permisos de lectura y comprobarlo por nosotros mismos. Se trata de una instalación del software EPSMS en una red real, que nos muestra toda la información obtenida de la misma.

 

 

Podemos descargarnos el software EPSMS desde GitHub: https://github.com/EPSAlicante/EPSMS y seguir las instrucciones para ponerlo en funcionamiento con una sencillez sorprendente.

Crea tus propias gráficas con Munin

Como ya comentábamos en una entrada anterior sobre Munin, podemos personalizar las gráficas de Munin creándolas según nuestras necesidades; es realmente sencillo, pudiendo utilizar cualquier lenguaje de scripting o programación para generarlas.

Como ejemplo usaremos un script hecho en bash para la generación de una gráfica que nos muestre la cantidad de procesos stunnel (software para el cifrado de comunicaciones) en un momento dado, y la cantidad de conexiones que tenemos al puerto 636 (utilizamos stunnel para cifrar las comunicaciones mediante este puerto) en un servidor con GNU/Linux.

La programación de las gráficas se componen de dos partes bien diferenciadas: una primera que genera el formato de la gráfica, y una segunda para la obtención de los valores a mostrar.

(1) Formato de la gráfica

Sirve para definir cómo vamos a mostrar los datos, tipos de gráfica, medidas, etc

Una posible configuración podría ser:

if [ “$1” = “config” ]; then

          echo ‘graph_title Stunnel4’
          echo ‘graph_args –base 1000 -l 0’
          echo ‘graph_vlabel procesos y conexiones Stunnel4’
          echo ‘graph_category Stunnel’
          echo ‘procesos.label Procesos stunnel’
          echo ‘procesos.draw LINE2’
          echo ‘procesos.min 0’
          echo ‘procesos.warning 100’
          echo ‘procesos.critical 200’
          echo ‘conexiones.label Conexiones stunnel’
          echo ‘conexiones.min 0’
          echo ‘conexiones.draw LINE2’
          echo ‘conexiones.warning 150’
          echo ‘conexiones.critical 250’
          exit 0

fi

La primera parte define el formato general de la gráfica:

  • graph_title define el título de la gráfica como ‘Stunnel4’
  • graph_args define la escala en base 1000 y configura el límite menor en 0 (si no se especifican los límites, estos serán configurados dinámicamente por munin según los valores a mostrar)
  • graph_vlabel define la etiqueta vertical (situada a la izquierda de la gráfica) como ‘procesos y conexiones Stunnel4’
  • graph_category define la categoría (las gráficas se agrupan en categorías a las que se puede acceder directamente desde un enlace en la página general)

La parte final configura el formato con el que se mostrarán cada uno de los conjuntos de valores, en este caso el que corresponde a los procesos y las conexiones:

  • procesos.label define la etiqueta que tendrá la leyenda bajo la gráfica para los datos de procesos
  • procesos.draw define el formato de representación (líneas, áreas, etc.) de los datos de procesos como ‘LINE2’ (se corresponde a una línea de un grosor medio)
  • procesos.min define el valor mínimo de los datos recogidos de los procesos
  • procesos.warning define el umbral de warning de los datos recogidos de los procesos (una vez superado éste, el enlace a la gráfica desde la página general se mostrará en color amarillo)
  • procesos.critical define el umbral de error de los datos recogidos de los procesos (una vez superado éste, el enlace a la gráfica desde la página general se mostrará en color rojo)

Estas características se definen para cada uno de los conjuntos de datos recogidos (en este caso se realizará también para los datos de conexiones).

(2) Obtención de valores de procesos y conexiones

Hasta ahora hemos definido la gráfica y la representación de los datos recogidos pero todavía no hemos indicado cómo vamos a obtener los datos de procesos y conexiones.

Para obtener el número de procesos stunnel, añadiremos a nuestro script:

echo -n “procesos.value ”
ps xau|grep “/usr/bin/stunnel”|grep -v “grep”|wc -l

De la misma manera, para obtener el número de conexiones establecidas al puerto 636, añadiremos al script:

echo -n “conexiones.value ”
netstat -an|grep “ESTABLISHED”|grep ESTABLISHED|tr -s ‘ ‘|cut -d’ ‘ -f4|cut -d’:’ -f2|grep ‘^636$’|wc -l

Una vez terminado el script, lo copiaremos al directorio de los plugins ‘/usr/share/munin/plugins’ con permiso de ejecución, creamos el enlace desde ‘/etc/munin/plugins’ al fichero creado, y reiniciamos el cliente de munin: munin-node.

La gráfica no estará disponible hasta unos minutos después (cuando el servidor Munin se conecte al equipo para recoger los datos). La gráfica que obtendremos tendrá un aspecto similar a esta:
munin-stunnel
Sin embargo, si queremos probarlo antes (o si hay algún problema y queremos verificar el correcto funcionamiento del plugin), realizaremos los siguientes pasos:

(1) Primero probaremos la ejecución desde el mismo equipo para comprobar que no hay errores en la programación del plugin

  • Para probar la información de configuración de la gráfica teclearemos munin-run stunnel config
  • Para probar la obtención de valores teclearemos munin-run stunnel

(2) Finalmente probaremos la ejecución desde el servidor Munin, ya que puede haber algún problema de falta de permisos o comunicación con el equipo

  • Dentro del servidor Munin abriremos una sesión telnet al puerto 4949 del equipo: telnet equipo 4949
  • Podemos ver la lista de plugins (nombres de los enlaces creado en ‘/etc/munin/plugins’) tecleando list
  • Obtendremos el formato de la gráfica tecleando config stunnel
  • Obtendremos los datos del plugins tecleando fetch stunnel
  • Cerraremos la conexión tecleando quit

 

Más información sobre la personalización de los plugins en la web oficial de Munin