Monitorizando Raspberry Pi con Telegraf
Tenía pendiente desde hace tiempo publicar algunos posts sobre Telegraf y algunas maravillas que podemos hacer. En este documento sencillito veremos cómo podemos recopilar métricas de rendimiento de una Raspberry Pi y mostrarlas en tiempo real con Grafana!
Suponiendo que ya tenemos Influxdb montado y funcional en un servidor, así como Grafana (si no, revisa esto), pues es hora de recopilar métricas, empezamos con algo sencillo, una máquina Linux (basada en Debian), y qué mejor que una Raspberry Pi, donde además de obtener las métricas comunes, obtendremos también las de las temperaturas de CPU y GPU.
¡Empezamos! Instalaremos el agente de Telegraf en la Raspberry Pi para indicarle las métricas que queremos enviar al Influxdb, lo primerito, descargamos las claves del repo de Influx:
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
Y añadimos el repositorio con (ojo, seleccionaremos nuestra versión de debian correcta (bullseye, buster, stretch…) :
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Y ahora sí, instalamos Telegraf:
sudo wget -O - https://repos.influxdata.com/influxdb.key | sudo apt-key add - sudo apt-get update sudo apt install telegraf -y
A continuación, tenemos que tocar el fichero de configuración de Telegraf (/etc/telegraf/telegraf.conf), así que lo abrimos y lo editamos, cambiaremos varias cosas, según nuestras necesidades. Comenzamos con ‘interval’ y con ‘flush_interval’, el primero indica cada cuanto checkeara, y el segundo cada cuanto lo manda a la BD, si queréis a nivel de 1 segundo nos quedaría así, no es necesario quizá tan agresivo, pero queda luego muy impresionante en Grafana, ver cómo refresca al segundo…:
... [agent] interval = "1s" flush_interval = "1s" ...
En la sección de los Inputs, descomentaremos las métricas que queramos recibir, ejemplo:
... # Input Plugins [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = false [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs"] [[inputs.io]] [[inputs.mem]] [[inputs.net]] [[inputs.system]] [[inputs.swap]] [[inputs.netstat]] [[inputs.processes]] [[inputs.kernel]] ...
Y finalmente, en los Outputs, en la salida, a donde lo mandamos las métricas, descomentamos y configuramos correctamente la sección de Influxdb:
... [[outputs.influxdb]] urls = ["http://DIRECCION_IP:8086"] # required database = "NOMBREBD" username = "usuario" password = "XXXXXXXX" skip_database_creation = true ...
Tras grabar el fichero, podemos probar si la configuración es correcta con:
telegraf --test
Reiniciamos los servicios de Telegraf para que carge la configuración recién modificada, vemos que arrancó e indicamos que inicie Telegraf con el sistema:
sudo systemctl start telegraf sudo systemctl status telegraf sudo systemctl enable telegraf
Si además de estas métricas standard queremos además añadir métricas que nos de la temperatura de la CPU y/o la temperatura de la GPU de la Raspberry Pi, seguimos con, añadiendo al usuario de Telegraf al grupo de video para que pueda leer dichos datos:
sudo usermod -G video telegraf
A continuación podremos crearnos un fichero de configuración para este menester, por ejemplo le llamamos ‘/etc/telegraf/telegraf-raspberrypitemp.conf’ y con el siguiente contenido:
[[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}"]
Recargamos Telegraf para que lea esta configuración nueva y lo tendríamos listo:
sudo systemctl restart telegraf
Con esto los datos ya se estarían almacenando en Influxdb, ahora para visualizarlo desde Grafana pues lo de siempre, si no tenemos el Data Source contra Influxdb lo creamos, y lo siguiente y más cómodo será bajarse un Dashboard que nos guste y haya echo la comunidad 🙂 Yo he probado con este Dashboard, que como véis es tan sencillo como a la hora de crear un nuevo Dashboard en nuestro Grafana, importar su ID, en este caso el ‘10578’, pero vamos que hay muchos otros dashboards o vosotros en un periquete os lo modificaréis. Por cierto el Dashboard este es de Jorge de la Cruz, así que gracias por tu ratito!!
Y seguro que en un momentito tendréis algo tan chulo como esto! o vaya, mucho mejor!!! Ya podemos visualizar en tiempo real el rendimiento de nuestra Raspberry Pi, le vemos las distintas CPUs, Memorias, Uso de discos, tráfico de red, carga, temperaturas…
Bueno, me despido como siempre agradeciendo a todos los que leéis estas chapas, a los que queréis aprender, a los que compartis en redes sociales contenido divulgativo!
Abrazos!