¿QUÉ ES GRAFANA, INFLUXDB Y TELEGRAF?
Jenkins es un servidor de automatización Open Source escrito en Java. Está basado en el proyecto Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre.
Conexión entre componentes
Grafana
Grafana es un software libre basado en licencia de Apache 2.0, que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB y OpenTSDB. Originalmente comenzó como un componente de Kibana y luego se ha ido bifurcando.
Grafana es multiplataforma y también se puede implementar con Docker. Está escrito en lenguaje Go y tiene un HTTP API completo.
Además de administrar cuadros de mando clásicos (adiciones, eliminaciones, favoritos), Grafana ofrece compartir un cuadro de mando actual mediante la creación de un enlace o una instantánea estática del mismo.
Todos los paneles de control y las fuentes de datos están vinculados a una organización, y los usuarios de la aplicación están vinculados a organizaciones a través de roles.
Grafana evita que los usuarios sobrescriban accidentalmente un panel de control. Existe una protección similar cuando se crea un nuevo panel de control cuyo nombre ya existe.
La herramienta ofrece la posibilidad de configurar alertas.
Web: https://grafana.com/
InfluxDB
InfluxDB es una base de datos basada en series de tiempo (time-series database). Las bases de datos de este tipo, han experimentado un crecimiento exponencial los últimos años. Las bases de datos de series de tiempo necesitan de un sistema que maneje de forma eficiente esas series de datos, con miles de datos por segundo, y de los que se necesitan hacer cálculos de manera optima y eficiente, como son las medias, mínimos, máximos, búsquedas en el tiempo, etc, y todo ello en tiempo real. InfluxDB es una base de datos que permite hacer análisis de datos en tiempo real.
InfluxDB permite trabajar con millones de puntos de datos y como puede trabajar en clúster, nos ofrecerá resultados en tiempo real con una alta precisión en el tiempo.
InfluxDB dispone de una versión gratuita de código abierto (open source) y permite trabajar con ella perfectamente. Tiene algunas características que solo están disponibles en la versión empresarial aunque su precio es bastante elevado. Dispone de un completo ecosistema que nos permite recolectar, guardar y tomar decisiones en base a los datos que recolecta otorgando la posibilidad de generar gráficos, alertas y notificaciones incluso en tiempo real.
Web: https://www.influxdata.com/
Telegraf
Telegraf es un servicio que recopila y envía métricas de datos de diferentes sistemas. Puede recopilar datos del sistema en el que se ejecuta, como por ejemplo el uso de disco, la carga del sistema, uso de la memoria RAM, carga de la CPU, el número de conexiones y muchas más cosas. Además, incluye una enorme lista de plugins de entrada, como Apache, consul, couchDB, Docker, Elasticsearch, Fluentd, HAproxy, http POST, etc... La salida de Telegraf, por norma general, se envía a una base de datos de tipo serie de tiempos como InfluxDB.
Web: https://www.influxdata.com/time-series-platform/telegraf/
Monitorizar estadísticas en tiempo real SI es posible
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con GNU/Linux Debian
- Otro PC con GNU/Linux o una VM para hacer como cliente
- Conexión a Internet (obligatorio)
2.- ESQUEMA DE RED
El esquema de red para este tutorial será muy sencillo. Tendremos solamente 2 equipos. El primer equipo tendrá instalado Grafana, InfluxDB y Telegraf. El segundo equipo tendrá solamente Telegraf para monitorizar algunos recursos del sistema.
Esquema de red
3.- INSTALACIÓN DE INFLUXDB
Instalar InfluxDB es muy sencillo en un equipo con GNU/Linux Debian. Antes de la instalación, haremos un update del los repositorios e instalamos los siguientes paquetes:
raul@debian:~$ sudo apt-get update
raul@debian:~$ sudo apt-get install -y apt-transport-https software-properties-common wget
Añadimos los repositorios oficiales de InfluxDB:
raul@debian:~$ wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
raul@debian:~$ source /etc/os-release
raul@debian:~$ echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Y ahora si, instalaremos InfluxDB con el siguiente comando:
raul@debian:~$ sudo apt-get install influxdb
Con el siguiente comando comprobaremos que el servicio de InfluxDB está arrancado:
raul@debian:~$ sudo /etc/init.d/influxdb status
● influxdb.service - InfluxDB is an open-source, distributed, time series database
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-03-27 10:35:16 CET; 1min 14s ago
Docs: man:influxd(1)
Main PID: 1066 (influxd)
Tasks: 8 (limit: 1138)
Memory: 11.1M
CGroup: /system.slice/influxdb.service
└─1066 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
4.- INSTALACIÓN DE TELEGRAF
Telegraf es el agente encargado de recolectar los datos y enviarlos a InfluxDB. Para instalar telegraf en el servidor y así poder recolectar el estado del mismo, es tan sencillo como ejecutar el siguiente comando:
raul@debian:~$ sudo apt-get install telegraf
En el fichero de configuración /etc/telegraf/telegraf.conf, deberemos configurar principalmente la dirección IP y el puerto a donde se enviarán las métricas. A modo de resumen, los parámetros básicos para editar son los siguientes:
urls = ["http://127.0.0.1:8086"]
database = "telegraf"
precision = "s"
timeout = "5s"
Ahora es momento de reiniciar el servicio para que los cambios se apliquen. Lanzaremos el siguiente comando:
raul@debian:~$ sudo service telegraf restart
5.- INSTALACIÓN DE GRAFANA
Grafana nos permite la visualización de los datos de forma visual con unos estupendos gráficos y dispone miles de opciones y plugins. Para instalar Grafana en el servidor ejecutaremos los siguientes comandos previos a la instalación:
raul@debian:~$ sudo apt-get update
raul@debian:~$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Y ahora si, con los siguientes comandos añadiremos el repositorio a nuestra lista de repositorios e instalaremos grafana:
raul@debian:~$ sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
raul@debian:~$ sudo apt-get install grafana
Ahora para asegurarnos, reiniciaremos Grafana:
raul@debian:~$ sudo service grafana-server restart
Desde un navegador, abriremos la dirección del servidor donde está Grafana y el puerto 3000. En este ejemplo la URL utilizada es http://192.168.1.47:3000/. Introduciremos el usuario por defecto "admin" y la contraseña por defecto "admin". Podremos cambiarla si queremos en el siguiente paso:
Pantalla de Login de Grafana
Ahora, en la pantalla principal lo primero que hay que hacer es añadir un Origen de datos. Haremos click en el icono de "Add data source":
Añadir origen de datos
Seleccionaremos como origen de los datos InfluxDB:
Seleccionar base de datos tipo InfluxDB
Ahora toca configurar los datos de InfluxDB. Lo mas importante es marcar la casilla Default e introducir la URL y el puerto donde corre InfluxDB. Cómo estamos instalando todo en la misma máquina, la URL de InfluxDB respecto a Grafana será http://127.0.0.1:8086:
URL del servidor de InfluxDB
Introduciremos el nombre, el usuario y la contraseña configurada en InfluxDB:
Detallas de la base de datos
Y ya podemos guardar y comprobar la configuración.
Guardar y comprobar
El siguiente paso es añadir un Dashboard donde visualizaremos los datos. Haremos click en "New Dashboard":
Añadir nuevo cuadro de mandos
Lo primero es añadir la Query (consulta bbdd). La query es seleccionar QUÉ datos queremos extraer de la base de datos para luego visualizarlos:
Añadir Query
Aunque hay millones de opciones en las consultas (consultar la web oficial si es necesario), en la siguiente Query añadiremos el % de uso del disco sda1 en el servidor debian donde está instalado Grafana:
Query uso de disco sda1 en %
Ahora seleccionaremos el tipo de gráfica que queremos para los datos extraídos. Para este ejemplo usaremos una gráfica de tipo "Gauge":
Viualización Gauge
Configuramos el Título de la gráfica:
Configuración del cuadro
A continuación gradamos el Dashboard:
Guardamos Dashboard
Como se pude ver, en el Dashboard creado, sale la gráfica que hemos añadido. Para añadir mas gráficas podremos hacerlo desde el icono con el símbolo de + en la parte superior:
Añadir nuevas gráficas
Añadimos una nueva gráfica de líneas con el cpu load de 1minuto, 5mins y 15 minutos:
Nueva gráfica añadida
Si queremos añadir usuarios a Grafana, podemos hacerlo haciendo click en "Add Users":
Añadir usuarios
En la siguiente pantalla podremos ver el listado de usuarios y crear nuevos usuarios a Grafana:
Usuarios en Grafana
6.- INSTALACIÓN DE TELEGRAF EN NODO CLIENTE
En el nodo cliente, instalaremos solamente el cliente de Telegraf que será el encargado de recolectar los datos y enviarlos al servidor InfluxDB:
raul@debian:~$ sudo apt-get update
raul@debian:~$ sudo apt-get install -y apt-transport-https software-properties-common wget
raul@debian:~$ wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
raul@debian:~$ source /etc/os-release
raul@debian:~$ echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
raul@debian:~$ sudo apt-get install telegraf
En el fichero de configuración /etc/telegraf/telegraf.conf, deberemos configurar principalmente la dirección IP y el puerto a donde se enviarán las métricas. A modo de resumen, los parámetros básicos para editar son los siguientes:
urls = ["http://192.168.1.47:8086"]
database = "telegraf"
precision = "s"
timeout = "5s"
Ahora es momento de reiniciar el servicio para que los cambios se apliquen. Lanzaremos el siguiente comando:
raul@debian:~$ sudo service telegraf restart
Desde el panel de control de Grafana, añadiremos las gráficas exactamente igual pero seleccionando el equipo cliente como se ve a continuación:
Añadir métricas de un PC cliente
ENJOY!