Monitorizar tus hosts con Glances + InfluxDB + Grafana

Antes de entrar en profundidad con la instalación de cada componente, vamos a explicar que es cada uno de ellos y cual es su función:

  • Glances: es una herramienta de monitoreo de sistema multiplataforma escrita en Python que utiliza la librería psutil para conseguir la información de nuestro sistema.
  • InfluxDB: es una base de datos de series de tiempo abierto, esta escrita en Go y optimizada para almacenamiento rápido y de alta disponibilidad.
  • Grafana: nos permitirá consultar y visualizar nuestras métricas almacenadas en InfluxDB, a través de un dashboard para visualizar las métricas de forma más gráfica.

Dicho lo anterior se entiende que con el componente Glances vamos a recolectar información de una o varias máquinas, exportando la información a InfluxDB que será el encargado de almacenar la información y finalmente visualizaremos las métricas gracías a un dashboard que nos ofrece Grafana. 

Comentar que existen diversas herramientas que nos ofrecen mas o menos la misma función que cada uno de los componentes nombrados, también es cierto que tendremos que tener en cuenta la compatibilidad entre ellos, si queremos hacer uso de un escenario parecido a este.

 

ESCENARIO

 

INTRODUCCIÓN DE GLANCES 

Como hemos comentado al principio de la entrada, glances es multiplataforma y puede ser utilizado en casi cualquier sistema operativo. Pero en este escenario vamos a instalarlo bajo Ubuntu Xenial.

El paquete glances se encuentra incluido en los repositorios oficiales de Ubuntu Xenial, por lo tanto solo tendremos que instalarlo con la siguiente instrucción:

Los código de colores se representan como:

  • Verde – OK
  • Azul – CAREFUL
  • Magenta – ALERT
  • Rojo – CRITICAL

Podemos cambiar los umbrales a nuestras necesidades, De forma predeterminada están establecidos: (careful=50, warning=70 and critical=90).

Esto es configurable en el fichero de configuración /etc/glances/glances.conf.

Teclas de acceso rápido

Glances ofrece la posibilidad de encontrar mejor la información que muestra por pantalla con teclas de acceso rápido:

Guía accesos de teclado

Modos

Glances ofrece 3 modos de funcionamiento:

  • Standalone
  • Client/Server
  • Web Server

Standalone

Cuando simplemente queremos monitorear nuestra máquina local, tendremos que ejecutar:

Captura 1

Por defecto la pantalla se refresca cada segundo, podemos cambiar el intervalo de tiempo ejecutándolo así:

Client / Server

En el caso de que queramos monitorear  una máquina remota, esta se denominará “server” y desde otra máquina denominada “client” conseguiremos la información de server:

En la máquina server:

En la máquina cliente:

donde @server será la dirección IP o nombre del host del server.

En el modo server podemos definir la dirección de enlace con el parametro: -B ADDRESS y el puerto TCP por el cual va a escuchar: -p PORT

Por defecto glances server escuchará en todas las interfaces de red con 0.0.0.0 y como puerto 61209.

Captura 2 

Otra característica es que es compatible con IPv6, ejecutándolo de la siguiente forma:

Web Server

Si queremos monitorear cualquier máquina remota desde el navegador:

Desde el cliente introducir la URL:

Podemos incluso cambiar el intervalo de tiempo en segundos, en el cual se va refrescando la página, pasándolo en la url de la siguiente manera:

Logging

Podemos habitar los mensajes de depuración con el parámetro -d , por defecto el directorio donde se guarda el log es el directorio temporal /tmp

Por último sobre Glances es que podemos configurar la mayoria de visualizaciones del sistema, por ejemplo si queremos que se visualizen los discos con sistema de ficheros xfs, agregaremos en la sección fs en el fichero de configuración de la siguiente forma:

Y si quisiéramos ocultar el punto de montaje de /boot :

Otra opción que me ha resultado curiosa e interesante es monitorear directorios particulares:

Monitoreando carpetas

Podemos definir hasta un máximo de 10 carpetas, y configura añadiendo en la sección folders del fichero de configuración:

Nota: los umbrales se definen en MB.

Filtrar por procesos

También te permite filtrar un proceso por su nombre o que la linea de comando tenga ese nombre, los procesos de un usuario en concreto o los procesos que empiecen por /usr/bin por ejemplo:

Pulsamos <ENTER>:

Y escribimos por ejemplo chrome 

Por último también nos permite monitorear contenedores con Docker gracias a su API, espero añadir esta información muy pronto en esta entrada.

PREPARANDO LA MÁQUINA MONITOR

Instalación de influxdb y grafana sobre Ubuntu Xenial:

Descargar el influxdb.deb y lo instalamos directamente:

Habilitamos su arranque automático cada vez que inicie la máquina e iniciamos dicho servicio:

Posteriormente instalamos también grafana de la siguiente forma:

Descargar:

Instalar el paquete:

Y instalamos el .deb:

Habilitamos el inicio automático del servicio y lo iniciamos:

Ahora creamos con influxdb una base de datos para cada host ya sea mediante linea de comandos o su interfaz web, que conecta en el puerto :8083

Nota: en este caso se crea una base de datos por host, debido a que el recolector (glances) no almacena el host en el volcado de información a influxdb, no pudiendose diferenciar así la información de un host determinado si lo almacenáramos en una misma base de datos.

Si fuera por linea de comandos:

Para listar las bases de datos que tenemos en influxdb:

Para conectar con una base de datos especifica:

Para ver las mediciones:

PREPARANDO LOS CLIENTES

Instalación glances en Debian / Ubuntu

Primero actualizar los paquetes del repositorio:

Instalar estos paquetes que vamos a usar para instalar paquetes que dependen de python concretamente y para poder crear un entorno virtual python:

Creamos un nuevo directorio, donde crear el entorno virtual:

Activamos el entorno virtual y instalamos los siguientes paquetes:

Al instalar glances via pip, no se genera automáticamente el fichero de configuración en el directorio /etc, asi que vamos a copiar el de ejemplo y lo colocamos nosotros:

Y editamos la siguiente sección del fichero glances.conf:

Nota: el atributo prefix deberá modificarse por el prefijo que queramos, en este caso dejo localhost, ya que luego en grafana vamos a usar un dashboard creado por el creador de glances para mostrar las estadísticas. Por defecto, el prefix es localhost en el fichero json que importamos para ver las metricas, solo tendriamos que crear las query a nuestra medida o reemplazar localhost por nuestro prefix si usáramos este dashboard

Ahora procedemos a crear un enlace simbólico del ejecutable en /usr/local/bin/:

Por último vamos a crear una unidad en systemd para manejar el servicio glances y que se arranque automáticamente el importado de datos a influxdb de manera remota al iniciar la máquina:

Agregamos el siguiente código:

Nota: he tenido que agregar el parámetro –disable-ip ya que a los pocos segundos de ejecutar glances, se paraba debido a un pequeño bug que existe en las versiones que he instalado actualmente.

Finalmente habilitar el auto-inicio en el arranque del sistema y ejecutamos el servicio:

Instalación glances en CentOs 7

Primero añadir el repositorio EPEL si no lo tuviéramos:

Instalar:

Instalar glances y el módulo influxdb de python:

Descargar el fichero glances.conf:

Mover por ejemplo a /etc/glances/glances.conf:

Editar como en las máquinas anteriores:

Vemos donde se encuentra el binario de glances:

Una vez ubicada la ruta vamos a crear un demonio con systemd:

Añadir al fichero:

Habilitamos el demonio y su reinicio automático en el arranque del sistema:

Y listo tendríamos llegados este punto, las 3 máquinas clientes exportando los datos a las bases de datos almacenadas en la máquina que tiene influxdb instalada.

Mostrar las métricas con Grafana

Ahora en la máquina denominada Monitor y donde tenemos instalado influxdb y grafana server, accedemos por http a la aplicación web:

Usuario y password por defecto: admin

Despues de iniciar sesión nos desplazamos en el menú a la opción – Data Sources y hacemos clic en + Add data source

Ejemplo

Finalmente clic en Add

Crear un nuevo dashboard:

En el menú Dashboards – Import

Tenemos la posibilidad de:

  • Subir un fichero JSON de nuestra máquina
  • Pegar la id de un dashboard ya existente en www.grafana.com
  • Pegar el código JSON

En este ejemplo vamos a usar la URL del dashboard del creador de Glances: https://grafana.com/dashboards/2387

De todas formas os dejo el enlace al fichero JSON

Aquí un ejemplo de una consulta para sacar la carga de la cpu en diferentes intervalos de tiempos, almacenados en la tabla cpu donde glances ha guardado la información:

 

Galería

El pase de diapositivas requiere JavaScript.

Enlaces 

https://nicolargo.github.io/glances/

http://glances.readthedocs.io/en/latest/install.html

Autor entrada: CharlieJ

3 thoughts on “Monitorizar tus hosts con Glances + InfluxDB + Grafana

    Guido Rolon

    (9 febrero, 2018 - 2:06 pm)

    Muy interesante !, Gracias

    Rubén

    (27 abril, 2018 - 2:03 pm)

    Hola

    he leído tu post y estamos interesados en saber si estarías disponible para poder colaborar en un posible desarrollo en estas tecnologías

    Tenemos una oportunidad en un cliente, y podría salir, pero no tenemos conocimiento en estas tecnologías (Grafana + Influxdb)

    gracias
    Rubén

      CharlieJ

      (27 abril, 2018 - 10:33 pm)

      Buenas Rubén, actualmente estoy en varios proyectos aún así puedes contactar conmigo a través de mi correo carlosjsanchezortega@gmail.com.
      Y comentarme con más detalles la situación.

      Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *