Monitorizando nuestras métricas de infraestructura con TICK y Grafana 1era Parte

Este es mi primer post en el blog, espero que les guste ya que no soy de mucho escribir, más de configurar. Una de las principales tareas que tenemos los administradores de red es la de monitorizar toda nuestra infraestructura, de la manera más automatizada posible. Hay varias partes en el monitoreo, uno de ellos es el almacenamiento de las métricas, que son las variables contables generadas por nuestros servidores. Para esta tarea existen disímiles tipos de base de datos, aunque se puede usar MySQL o PostgreSQL, existen un tipo específico que son de series de tiempo, las cuales están optimizadas para este tipo de tareas y pueden realizar consultas e inserción de datos a un rendimiento mayor. Algunas de las mejores bases de datos de este tipo son:

  • DalmatinerDB
  • InfluxDB
  • Prometheus
  • Graphite

Cada una con sus ventajas y desventajas, lo que todas sirven al mismo propósito, guardar métricas en el tiempo optimizando su almacenamiento. No es mi objetivo dar una explicación completa de por qué escoger este tipo de base de datos para ser usada.

En mi caso selecciono InfluxDB por ser una de las más rápidas que he probado, además de las pocas dependencias que trae ya que está programada en Go que permite crear un ejecutable único con todas sus dependencias internamente.

Otra de las características que me hizo optar por InfluxDB es que InfluxData, la empresa que lo programó, mantiene una stack llamada TICK que engloba toda la parte de monitorización y alerta compatibles entre ellas, ya lo veremos más adelante

TICK Stack

Lo anterior es lo que InfluxData define la interacción de TICK (Telegraf – InfluxDB – Chronograf – Kapacitor). Una ligera explicación sería:

Telegraf es el agente que se encarga de recolectar las métricas con los +100 plugins que tiene, lo interesante es un solo ejecutable con todos esos aditamentos dentro, sin muchas dependencias, por lo que la instalación es muy sencilla, con él podemos obtener las métricas de uso de CPU, RAM, HDD, SNMP, HTTP, PING, sensores de temperatura, sensores IPMI, entre otra gran cantidad que puede verse y analizarse en Plugins de Telegraf, en este repositorio al estar bien organizado, cada plugin trae su README donde todos podemos ver de qué se trata y cómo usarlo.

InfluxDB es la Base de Datos de tiempo que es el corazón de toda la obtención de la métrica, puesto que es donde se almacenan todos los datos, trae consigo un lenguaje semi SQL, por lo que los pedidos de datos son bastantes intuitivos si estamos familiarizados con SQL. Tiene consigo la posibilidad de especificar como se quiere almacenar los datos en el tiempo, por cuantos días, cuántos datos mantener después de que pase cierto tiempo, etc.

Chronograf viene a reemplazar la interfaz web que traía InfluxDB por defecto, pero ahora con esteroides, puesto que permite configurar además a Kapacitor (lo veremos más adelante) y representar algunas gráficas a manera de un simple dashboard con los datos. También permite visualizar el cluster de InfluxDB (porque soporta muy bien el escalado).

Kapacitor Es el procesador en «tiempo real» de los datos que son ingresados en InfluxDB permitiendo manipularlos o generar alertas en cuanto algún indicador especificado coincida. Todo este proceso, lo más interesante, es que se especifica a través de un script, el TICKscript que nos brinda un margen amplio de posibilidades, algo como «… cuando el cpu del servidor x se usa por encima del 60% en 2 min, envía una alerta por email a [email protected] o una alerta por un callback html …«, pero también permite modificar datos en el vuelo.

Una vez que tengamos los datos almacenados, toca mostrarlos a través de alguna herramienta, esta vez será Grafana, el por qué, un tanto gusto personal, como por las características que brinda (y más en su versión 5). Tiene una gran cantidad de entradas y tiene buenos plugin de componentes para visualizar, además de que la edición de los gráficos es muy intuitiva.

Manos a la obra

Después de una pequeña introducción vamos a lo que nos interesa, empezaremos con la instalación del TICK. Hay dos principales maneras de instalarlo, utilizando el repositorio para distribuciones basadas en debian (la que prefiero y uso) o descargando manualmente los release que están en GitHub, indico como hacerlo desde su repositorio.

Primero agregamos la llave de InfluxData:

curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -

Luego agregamos el nuevo source, preferiblemente en una nueva lista /etc/apt/source.list.d/influxdata.conf

deb https://repos.influxdata.com/debian stretch stable

Ya con esto actualizamos las listas e instalamos todos los componentes:

apt update
apt install influxdb telegraf chronograf kapacitor

#Solo para asegurarnos
systemctl start influxdb
systemctl start telegraf
systemctl start kapacitor
systemctl start chronograf

Luego de esto tenemos a InfluxDB escuchando por el 8086, Chronograf por el 8888 y Kapacitor por el 9092. Como se instaló Telegraf entonces por defecto envía las métricas al InfluxDB local, por lo que si vamos al http://localhost:8888 entonces podemos explorar los datos que por defecto obtiene.

La configuración del telegraf, que se encuentra en /etc/telegraf/telegraf.conf es tan intuitiva y tan bien documentada que solo con abrir el fichero y revisar el GitHub ya puedes configurarlo completo. La parte de configurar Kapacitor eso merece una entrada para ella, por lo que no lo tocaré en este.

Ahora que tenemos nuestro «backend», viene el turno del «frontend» con Grafana. Instalar Grafana es al igual que InfluxDB muy sencillo, está programado en nodejs y tiene paquetes para Debian (y otras distribuciones), lo que pasa es que la página de ellos está denegada para Cuba, pero alegremente el link de descarga directo no, puesto que está en otro servidor.

Para los que quieran compilárselo:

git clone https://github.com/grafana/grafana.git

Y para los que quieren el .deb este es el link directo de la versión 5.0.0:

wget -c https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.0.0_amd64.deb

luego lo instalan normalmente:

dpkg -i grafana_5.0.0_amd64.deb

# Por si acaso con las dependencias
apt install -f

# Asegurandonos
systemctl start grafana-server

Luego estaría el Grafana escuchando por el 3000 con usuario admin y password admin

Configurando la fuente de datos desde InfluxDB:

Una vez dentro de nuestro dashboard vacío podemos empezar a crear las visualizaciones, por ejemplo para medir el uso de CPU de un servidor:

Y hasta aquí esta base, con la cual podremos retomar todos los demás textos que se irán sumando.

Ir hacia la 2da parte

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.3 / 5. Recuento de votos: 4

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Luis Felipe Domínguez Vega 10 artículos
Administrador de Sistemas y Programador entusiasta de tecnologías libres.

4 comentarios

  1. Firefox 71.0 Firefox 71.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0

    Buenas Tardes puedo medir las metricas desde influxdb, telegraf y grafana pero solo localmente si agrego otro data source de otro Host no me lo permie necesito ayuda

    • Google Chrome 62.0.3202.89 Google Chrome 62.0.3202.89 GNU/Linux x64 GNU/Linux x64
      Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36

      Ese si creo que demora un poco, pues que Kapacitor tiene una graaaan cantidad de formas de hacerlo funcionar, yo lo he usado bastante y todavía me falta….

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*