Infraestructura de monitorización basada en Grafana (más Influxdb y Telegraf). Primera parte

4 Ago

Como prueba de concepto comentaré los pasos que he seguido para disponer de un panel que muestre la analítica de un servidor web con Apache. Junto a Grafana, tendremos influxdb y Telegraf, los 3 elementos de nuestra infraestructura de medición y análisis que nos permitirá disponer de un potente framework  para realizar análisis en tiempo real de series históricas.

Grafana es una aplicación open source que nos permite, fácilmente, desarrollar cuadros de mandos sobre métricas basadas en series de tiempo, tanto para mostrar y analizar infraestructura (servidores, routers, sensores industriales, elementos domóticos, etc) como aplicaciones propias (ver demo). Suele ir acompañada de otras aplicaciones/plugins que la complementan; elasticsearch o influxdb1, por ejemplo, para proporcionarle las fuentes de datos que alimentan las gráficas y cuadros de mando creados. Y podemos crear nuestros propios plugins.

Grafana soporta 3 tipos de plugins:

  • Panel: el cuadro de mando propiamente dicho. Podemos crear todos los que queramos.
  • Datasource: proporciona los datos a los paneles.
  • App: una aplicación completa dentro de grafana que puede tener sus propios paneles, datasources, etc.

Como soy usuario de Debian, para la instalación de Grafana he seguidos los pasos indicados en http://docs.grafana.org/installation/debian/ (quitando debian de la URL anterior, accedemos a la página principal con la documentación referente al resto de distribuciones GNU/Linux, Mac OS X, Windows, Docker,…). La configuración la comentaré en otra entrada (quien quiera ir avanzando puede consultar esta guía: http://docs.grafana.org/installation/configuration/)

Como indicaba anteriormente, además de Grafana, vamos a instalar InfluxDB y Telegraf:

  • Telegraf será el encargado de recoger los datos que queremos medir. En este caso: CPU, RAM, Carga, Uso de la red, ….
  • InfluxDB será la base de datos donde Telegraf almacene la información que recolecta. Es flexible, escalable y, además, posee las llamadas aggregate functions que nos permitirán realizar análisis más profundos.

Para la instalación de estos 2 componentes, debemos:

  1. Añadir el repositorio a nuestro equipo (en /etc/apt/source.list)2
  2. Instalación de ambos: #apt-get install influxdb telegraf

Para “conectarlos” debemos configurarlos:

  • Telegraf: en /etc/telegraf/telegraf.conf debemos indicar, en la sección OUTPUTS, subsección [[outputs.influxdb]] dónde está influxdb (en urls y no es obligatorio que sea en el mismo servidor) y el nombre de la base de datos de influxdb donde se guardarán los datos (por ejemplo telegraf y que debemos haber creado antes en influxdb, si no existiera, tal y como se nos indica en los comentarios del fichero de configuración). En la sección de INPUTS debemos configurar la recolecta de los datos que necesitemos: [[inputs.cpu]], [[inputs.disk]], [[inputs.diskio]], [[inputs.men]]. Para recolectar los datos de Apache, debemos añadir la entrada [[inputs.apache]] con la opción urls = [“http://localhost/server-status?auto”]. Telegraf recoge los datos de /server-status de Apache (ver http://www.apache.org/server-status?auto y  la información sobre módulo mod_status aquí).
  • Influxdb. Una vez lanzado, en la URL http://IP_de_influxdb:8086 tenemos la web de control que nos proporciona influxdb. En ella, además de consultar datos, podemos crear las bases de datos que necesitemos (ver imagen 1).

Captura de pantalla de 2016-08-04 11:06:53Imagen 1.- Interfaz web de influxdb y la orden de crear la base de datos telegraf.

A partir de aquí tenemos la infraestructura3 y lo que nos falta es crear el cuadro de mando que necesitemos para monitorizar y analizar nuestro servicio. En la URL http://IP_de_Grafana:3000 tendremos la aplicación web que, fácilmente, nos lo permitirá. Un ejemplo se puede ver en la imagen 2, pero cómo hacerlo, lo dejo para otra ocasión.

Captura de pantalla de 2016-08-04 12:11:02Imagen 2. Grafana en acción

¡Espero que os sea útil!

(1) En este sitio se puede consultar una comparativa entre ElasticsearchGraphite e InfluxDB

(2) Para realizar este paso correctamente también debemos descargar e instalar la clave del repositorio (está en https://repos.influxdata.com/influxdb.key). Recordad que se instala con apt-key add

(3)Tenemos una infraestructura NO protegida. No hemos configurado ningún mecanismo de autenticación y autorización para consultar, guardar y/o borrar datos en influxdb y debemos hacer esto como mínimo. La información sobre cómo está aquí