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
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!