Instalando Telegraf + InfluxDB + Chronograf + Grafana

Ya es hora de darle un poco a Telegraf, tengo pendientes unos cuantos posts que creo puedan resultar interesantes, así que si os parece bien, hoy veremos cómo montar la base, InfluxDB para almacenar métricas, Chronograf como su visualizador nativo; y, como no, Grafana, por que todos sabemos que es el mejor visualizador de métricas y haremos magia.

 

Lo dicho, usaremos este documento como base inicial para unos posts que iremos publicando en el blog para explotar nuestro sistema de monitorización. El stack de TICK (Telegraf, InfluxDB, Chronograf y Kapacitor) nos puede venir genial para abrazar y extender nuestro entorno de monitorización, personalmente para la visualización de determinadas métricas en tiempo real, y para ello el agente de Telegraf nos recopilará los datos que nos interese, los almacenará en nuestro InfluxDB y podremos visualizarlos en Chronograf. Aunque lo dicho, personalmente soy mucho más fan de Grafana por toda su elasticidad, pero Chronograf nos puede venir muy bien para aprender el lenguaje Flux. Ya que bueno, InfluxDB 1.x usaba como lenguaje de consultas InfluxQL y desde la versión 2.x se usa Flux, y a algunos nos cuesta el cambio 🙂   

Con Telegraf podremos recopilar métricas del equipo donde instalemos el agente o también de equipos remotos donde no se pueda instalar, por ejemplo, en un switch, y este tipo de máquinas les consultamos mediante SNMP. La idea final es tener unos dashboards de Grafana que nos muestren los datos que recopilemos, e insisto, para mí el punto fuerte es poder tener datos con intervalos de 1 segundo.

 

Instalación de InfluxDB

InfluxDB es una BD de series de datos TSDB (Time Series Database), de código abierto, mucho más eficiente para almacenar y procesar este tipo de datos. A la hora de publicar el post teníamos la versión 2.1, con los siguientes comandos, descargaremos el repositorio de InfluxDB e instalaremos InfluxDB, además de levantar el servicio y verificar su estado (ah, este post esta basado en un Ubuntu 20.04):

wget -qO- https://repos.influxdata.com/influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc)
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list > /dev/null

sudo apt-get update && sudo apt-get install influxdb2

sudo systemctl start influxdb
sudo systemctl status influxdb
sudo systemctl enable influxdb

 

Instalaremos a continuación Influx CLI, para posteriormente configurar mínimamente InfluxDB y bueno, como cliente CLI de línea de comandos para la gestión en caso de necesitarlo.

wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.2.0-linux-amd64.tar.gz
tar xvzf influxdb2-client-2.2.0-linux-amd64.tar.gz
sudo cp influxdb2-client-2.2.0-linux-amd64/influx /usr/local/bin/
rm -rf influxdb2-client-2.2.0-linux-amd64/

 

Vamos a configurar InfluxDB con influx CLI, con ‘sudo influx setup’ crearemos el usuario, contraseña, primera organización, y primer bucket para almacenar, la retención de datos para este bucket, y confirmamos:

sudo influx setup

> Welcome to InfluxDB 2.0!
? Please type your primary username influx_user
? Please type your password **************
? Please type your password again **************
? Please type your primary organization name Open Services IT
? Please type your primary bucket name Monitor
? Please type your retention period in hours, or 0 for infinite 0
? Setup with these parameters?
  Username:          influx_user
  Organization:      Open Services IT
  Bucket:            Monitor
  Retention Period:  infinite
 (y/N) y

 

Bueno, un par de notas ahora, para consultar cual es nuestra organización y su ID, ejecutamos:

sudo influx org list

ID                      Name
x4473x3a36x4d008        Open Services IT

 

Y si queremos listar nuestro Token:

sudo influx auth list
ID Description Token User Name User ID Permissions 08xx775x1706000 influx_user's Token Ts...Q== influx_user 08xx1253x3060 [read:/authoriza...

 

Instalando Chronograf

Para instalar Chronograf, el visualizador de InfluxDB, lo haremos así de rápido:

wget https://dl.influxdata.com/chronograf/releases/chronograf_1.9.1_amd64.deb
sudo dpkg -i chronograf_1.9.1_amd64.deb
sudo systemctl status chronograf
sudo systemctl enable chronograf

 

Abrimos un navegador y conectamos nuestro Chronograf con la BD de InfluxDB http://DIRECCIÓN_IP:8888

Comenzamos el asistente de configuración, pulsamos en “Get Started”,

 

Y cumplimentamos los siguientes datos:

  • Connection URL: IP o hostname de InfluxDB y el puerto (por defecto 8086), podría ser http://127.0.0.1:8086 si es la misma máquina.
  • Connection Name: Le indicamos un nombre a la conexión.
  • Organization: Indicamos el nombre de la organización de InfluxDB.
  • Token: Pegamos el Token de acceso.
  • Telegraf Database Name: Opcional, si queremos otro nombre de BD, por defecto se llamará ‘telegraf’.

Pulsamos en “Add Connection” y finalizamos el asistente de conexión.

 

Instalando Telegraf

Bueno, obviamente dependerá del SO donde tengamos que instalar Telegraf, ya que podemos instalarlo en Windows, Mac, Ubuntu, Centos, RedHat, Debian, contenedores… así que si necesitas, echa un vistazo a su web oficial. Este ejemplo sería para sistemas Ubuntu/Debian:

wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdb.asc >/dev/null
source /etc/os-release
echo "deb https://repos.influxdata.com/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update
sudo apt-get install -y telegraf

 

El fichero de configuración de Telegraf lo tendremos en ‘/etc/telegraf/telegraf.conf’ y si lo editamos tendremos infinitas posibilidades de obtención de datos, del equipo local (o de otro remoto en caso necesario). Y esto es lo que iremos viendo en futuros posts, así que lo que os dejo aquí será la configuración común, que será decirle a Telegraf que mande los datos a nuestro InfluxDB, así que la configuración del output sería al menos la siguiente:

 ...
 [[outputs.influxdb_v2]]
  urls = ["http://DIRECCION_IP_INFLUXDB:8086"] # required
  organization = "Open Services IT"
  bucket = "Monitor"
  token = "T...Q=="
...

 

Y nada, iniciamos, habilitamos y vemos el estado del servicio de Telegraf con:

sudo systemctl enable telegraf
sudo systemctl restart telegraf
sudo systemctl status telegraf

 

Y si volvemos a nuestro Chronograf, y exploramos las métricas de nuestro bucket, podremos comenzar a visualizar que esto ya recopila datos!

 

Instalando Grafana

Y bueno, venga acabando que es gerundio… si queremos, en la misma máquina podemos montar Grafana, y crear un conector contra InfluxDB para pues eso, visualizar, tratar los datos y hacer magia, viendo los datos en mapas, tablas, quesitos, gráficas de barras. líneas…

 

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana

 

Y nada, iniciamos, habilitamos y vemos el estado del servicio de Grafana con:

sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable grafana-server

 

Si accedemos con un navegador a http://DIRECCION_IP_GRAFANA:3000 nos validaremos con el usuario predeterminado admin y contraseña admin, que deberemos por favorcito cambiar según nos logueemos.

 

Lo siguiente será eso, crear un conector contra InfluxDB para visualizar los datos que a futuro almacenemos ahí, vamos a “Configuration” > “Data sources” > “Add data source”.

 

Mirar el listado, es impresionante de donde podemos visualizar datos… imaginaros las BBDD internas que tengáis en la empresa… venga que me lio, buscamos InfluxDB y lo seleccionamos.

 

Y creamos el conector, indicando:

  • Name: Nombre de la conexión.
  • Query Language: Flux
  • URL: http://DIRECCION_IP_INFLUXDB:8086
  • Organization: El nombre de la organización de InfluxDB
  • Token: Pegamos el Token de acceso.
  • Default bucket: Indicamos el bucket que usaremos.

Y pulsamos en “Save & Test”, si hemos seguido todos los pasos bien, esto conectará!

 

Y si creamos un Dashboard nuevo, creamos un nuevo Panel, indicamos por ejemplo un Time Series, o sea, la típica visualización de líneas. Y ponemos la consulta de Flux, ya podremos ver los datos! Ahora toca jugar con las opciones de visualización, otro tipo de Panel… y por supuesto, comenzar a alimentar esto! Si no sabemos Flux, lo más sencillo será copiar las queries desde Chronograf. O… directamente importarte Dashboards en Grafana de gente que ya se los haya currado 🙂 Y veremos muchos ejemplos, ya veréis como mola…

Os contaría muchas cosas, pero es tarde, es un post largo y vamos a ir viendo en futuros posts muchas ideas que seguro que llaman vuestra atención. Si estáis aburridos echar un vistazo a cosas que se le pueden añadir a Grafana…

Lo dicho, muchas gracias si has llegado hasta aquí, gracias por compartir en redes sociales, por los likes y esas cosas, que hay que ser agradecido 🙂 

¡Éxitos!