226 - Chronograf y Kapacitor dos potentes herramienta para tu Raspberry
Chronograf y Kapacitor son potentes herramientas para crear dashboards o paneles de control para monitorizar cualquier parámetro imaginable
Hasta la fecha siempre he utilizado Grafana como herramienta para mis dashboards o paneles de control. La razón de utilizar Grafana frente a otras opciones, es por que se trata de la solución que estoy empleando en el trabajo. Se trata de una herramienta conocida, con lo que la implementación es fácil. Hace unos días, instalando InfluxDB, pensé en dar una nueva vuelta, al sistema de monitorización de mi Rasbperry. Así, añadí a las herramientas que estoy utilizando dos soluciones que no he empleado hasta el momento. Se trata de Chronograf y Kapacitor. Son dos herramientas que forman parte del stack de herramientas de influxdata, junto con InfluxDB y Telegraf, y en este sentido, pensé que quedaría todo mas recogido.
La razón para hacer esta prueba, es que en las últimas semanas, Grafana, me ha dado mas de una sorpresa desagradable, en el sentido de que el servicio estaba parado cuando he ido a verlo. En realidad, se trataba de un contenedor, con mas servicios, y no es que estuviera parado, mas bien, es que era inaccesible.
Así, en este nuevo episodio del podcast de hoy te voy a comentar sobre estas dos herramientas, como las puedes configurar, y como puedes monitorizar la temperatura y humedad relativa de tu casa. Pero no solo esto, sino que además conseguirás que Chronograf y Kapacitor te avisen cuando la temperatura caiga por debajo de un nivel determinado, o cualquier evento, que quieras considerar.
Chronograf y Kapacitor dos potentes herramienta para tu Raspberry
En que ando metido
Como todos los jueves quiero contarte en que ando metido para que sepas que encontrararás en atareao.es durante estos días.
Aplicaciones
Como sabes la semana pasada liberé la primera versión de Battery Status. Sin embargo, es muy probable que si lo has intentado durante estos días no la hayas podido instalar. La razón, es que los revisores de las extensiones de GNOME Shell, no aprobaron la versión que había subido.
Battery Status tenía dos errores y, afortunadamente, los detectaron. Con lo que durante este fin de semana, los he corregido, y además he aprovechado, para añadir mas características a la aplicación así como información adicional.
Información adicional como puede ser el voltaje en el momento de la medición, así como el voltaje original. Además, tienes la posibilidad de seleccionar tanto los niveles de aviso como los de peligro, al igual como los colores.
Por otro lado, como te conté en el podcast del lunes, he liberado la primera versión de Remote Rasberry. Una aplicación que te permitirá gestionar la Rasbperry desde tu ordenador.
Se trata de una experiencia piloto, en el sentido, que no solo verás como nace, crece y madura la aplicación, sino que además de acompañarme en su desarrollo, te contaré sobre los entresijos de la aplicación, y como puedes hacerla tu mismo, o mejor todavía, conocer mas a fondo las tripas de tu sistema operativo preferido.
Otros temas
Hace unos días publicaron la edición número 21, correspondiente a Octubre de 2020 de la revista SOLO LINUX. En esta ocasión, vas a encontrar todo tipo de información. Desde como listar paquetes instalados en Ubuntu y derivados, pasando por como crear un USB de arranque Windows con Linux, hasta consejos de seguridad en servidor Linux.
Se trata de una publicación muy recomendable, y que puedes descargar desde la página de Solo Linux.
Chronograf y Kapacitor dos potentes herramienta para tu Raspberry
De nuevo, aunque me centro en la Rasbperry, indicar que este stack lo puedes instalar en cualquier servidor o equipo Linux. Sin embargo, me centro en la Raspberry, porque al fin y al cabo, lo quiero utilizar para monitorizar temperatura y humedad relativa ambiente, y para esto me va a venir perfecto.
Sobre Chronograf
Lo primero, ¿que es Chronograf? Chronograg es una aplicación web Open Source, implementada en Go y React.js. Una aplicación que te proporciona las herramientas para visualizar toda la información que estés monitorizando.
Y con la información que estés monitorizando, no me refiero exclusivamente a la información del propio servidor. Puedes monitorizar cualquier cosa que te puedas imaginar. Desde, como estoy haciendo yo, temperatura y humedad relativa, hasta la variación de las divisas a lo largo del tiempo.
Una de las grandes ventajas y características de esta aplicación web, es que se integra a la perfección con el resto de herramientas del ecosistema de Influx. Me refiero por supuesto, a InfluxDB y a Telegraf, que son las otras piezas que he comentado, en anteriores episodios del podcast, que he estado utilizando, junto con Grafana, para realizar la monitorización.
Explorador de datos
Chronograf te va a facilitar enormemente la creación de tus propios paneles personalizados. Para ayudarte con esto, te pone algunas facilidades como,
- te permite generar y editar las consultas con InfluxQL
- Puedes utilizar plantillas para explorar con mas comodidad todos los datos que tienes a tu disposición
- Puedes crear vistas en forma de tabla de forma muy cómoda.
Sobre los dashboards
Otra característica que seguro te va a parecer realmente interesante, es que Chronograf* viene con una serie de dashboard o paneles de control preconfigurados para los diferentes complementos soportados por Telegraf. Así, por ejemplo, tienes paneles para,
- Apache
- Docker
- MySQL
- NGINX
- Para el propio sistema, con posibilidades para mostrar información de CPU, disco, memoria, porcesos, etc.
Kapacitor
La otra herramienta de la que quiero hablarte en este podcast, y que viene de la mando de Chromograf es Kapacitor. Kapacitor, es un framework, para el procesado, monitoreo y alertado.
Esta herramienta consta de dos piezas. Por un lado la interfaz para el terminal con la que puedes configurar las alertas. Por otro lado el demonio que se encarga de generar las alertas.
Kapacitor utiliza un lenguaje de scripts para crear las alertas. Sin embargo, no te tienes que preocupar por aprender un nuevo lenguaje de scripting. Y es que como te mencionaba anteriormente, Chronograf y Kapacitor, están perfectamente integrados. De esta forma, y de manera completamente visual y gráfica, puedes crear tus propias alertas, sin tener que entrar en la parte del scripting.
Instalación
Puedes pensar que la instalación de todo esto, va a resultar muy compleja. Nada mas lejos de la realidad. Además lo vas a instalar directo, sin Docker. En el caso de Rasbperry, tan solo tienes que ejecutar las siguientes instrucciones en un terminal,
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
A partir de aquí, instala todos los servicios que necesites,
sudo apt install influxdb
sudo apt install telegraf
sudo apt install chronograf
sudo apt install kapacitor
Una vez instalados, los puedes iniciar como cualquier otro servicio con Systemd. Si no conoces como trabajar con Systemd, te recomiendo el tutorial trabajando con Systemd, donde te explico como puedes trabajar con servicios en Systemd, o incluso como crear los tuyos propios.
Temperatura y humedad relativa
El problema que me he encontrado, es que el módulo de Python que utilizaba para obtener temperatura y humedad relativa había dejado de utilizarse. No hay problema, simplemente tienes que instalar la nueva versión. Para esto, ejecuta la siguietne instrucción en un terminal,
sudo apt install python3-pip
sudo pip3 install adafruit-circuitpython-dht
sudo apt-get install gpiod libgpiod-dev
Aquí estuve dando bastantes vueltas, porque no conseguía que los datos se leyeran por Telegraf. Y es que el usuario necesita los permisos adecuados para poder leer de los GPIO. Para esto, necesitas añadir al usuario telegraf
al grupo gpio
. Para hacer esto, ejecuta la siguientes instrucción,
sudo usermod -aG gpio telegraf
El script en Python
El script en Python para leer la temperatura y humedad relativa de la sonda que tengo en la Raspberry, es tan sencillo como lo que te muestro a continuación,
#!/usr/bin/env python3
import adafruit_dht as dht
import board
sensor = dht.DHT22(board.D4)
temperature = sensor.temperature
humidity = sensor.humidity
print('{"temperature": ' + str(temperature) + ',"humidity": ' + str(humidity) + '}')
Además tienes que añadir lo siguiente en el archivo /etc/telegraf/telegraf.conf
. Aquí además de la temperatura y humedad relativa de la habitación donde se encuentra la Rasbperry, también se muestra, la temperatura de la CPU y GPU de la propia Raspberry Pi,
[[inputs.file]]
files = ["/sys/class/thermal/thermal_zone0/temp"]
name_override = "cpu_temperature"
data_format = "value"
data_type = "integer"
[[inputs.exec]]
commands = ["/opt/vc/bin/vcgencmd measure_temp"]
name_override = "gpu_temperature"
data_format = "grok"
grok_patterns = ["%{NUMBER:value:float}"]
[[inputs.exec]]
commands = ["/usr/bin/python3 /usr/local/bin/sonda.py"]
timeout = "5m"
name_override = "room"
data_format = "json"
Imagen de portada de Carlos Muza en Unsplash
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.