Ir al contenido principal

Monitoreando Geth con InfluxDB y Grafana

clientesnodos
Intermedio
Mario Havel
13 de enero de 2021
5 minuto leído minute read

Este tutorial le ayudará a configurar el monitoreo de su nodo Geth para que pueda comprender mejor su rendimiento e identificar problemas potenciales.

Pre requisitos

Monitorización

Un cliente de Ethereum recopila muchos datos que pueden ser leídos en forma de una base de datos cronológica. Para facilitar el monitoreo, usted puede alimentar esto en software de visualización de datos. Hay varias opciones disponibles:

También hay Geth Prometheus Exporter(opens in a new tab), una opción preconfigurada con InfluxDB y Grafana. Puedes configurarlo fácilmente usando docker y Ethbian OS(opens in a new tab) para RPi 4.

En este tutorial configuraremos su cliente Geth para enviar datos a InfluxDB para crear una base de datos y Grafana para crear una visualización gráfica de los datos. Hacerlo manualmente le ayudará a entender el proceso mejor, modificarlo, e implementarlo en diferentes entornos.

Configurando InfluxDB

Primero, vamos a descargar e instalar InfluxDB. Varias opciones de descarga se pueden encontrar en Influxdata release page(opens in a new tab). Elige el que se adapte a tu entorno. También puede instalarlo desde un repositorio(opens in a new tab). Por ejemplo en la distribución basada en Debian:

1curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
2source /etc/lsb-release
3echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
4sudo apt update
5sudo apt install influxdb -y
6sudo systemctl enable influxdb
7sudo systemctl start influxdb
8sudo apt install influxdb-client

Después de instalar InfluxDB, asegúrese de que se está ejecutando en segundo plano. Por defecto, es accesible en localhost:8086. Antes de usar el cliente influx, tienes que crear un nuevo usuario con privilegios de administrador. Este usuario servirá para una gestión de alto nivel, creando bases de datos y usuarios.

1curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"

Ahora puede utilizar el cliente influx para ingresar InfluxDB shell(opens in a new tab) con este usuario.

1influx -username 'username' -password 'password'

Directamente comunicándose con InfluxDB en su shell, puede crear bases de datos y usuario para las métricas geth.

1create database geth
2create user geth with password choosepassword

Verificar entradas creadas con:

1show databases
2show users

Deja el shell de InfluxDB.

1exit

InfluxDB se está ejecutando y configurado para almacenar métricas de Geth.

Preparando Geth

Después de configurar la base de datos, necesitamos habilitar la recolección de métricas en Geth. Presta atención a METRICS AND STATS OPTIONS en geth --help. Se pueden encontrar múltiples opciones, en este caso queremos que Geth envíe datos a InfluxDB. La configuración básica especifica el endpoint donde InfluxDB es accesible y la autenticación para la base de datos.

1geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"

Estos parámetros pueden ser añadidos a un comando que inicia el cliente o guardados en el archivo de configuración.

Puede verificar que Geth está enviando datos con éxito, por ejemplo listando métricas en la base de datos. Deja el shell de InfluxDB:

1use geth
2show measurements

Configurando Grafana

El siguiente paso es instalar Grafana que interpretará los datos gráficamente. Siga el proceso de instalación para su entorno en la documentación de Grafana. Asegúrese de instalar la versión OSS si no desea otra cosa. Ejemplo de pasos de instalación para las distribuciones de Debian utilizando el repositorio:

1curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
2echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
3sudo apt update
4sudo apt install grafana
5sudo systemctl enable grafana-server
6sudo systemctl start grafana-server

Cuando tengas a Grafana funcionando, debería ser accesible en localhost:3000. Utilice su navegador preferido para acceder a esta ruta, luego inicie sesión con las credenciales predeterminadas (usuario: admin y contraseña: admin). Cuando se le solicite, cambie la contraseña por defecto y guárdela.

Serás redirigido a la página principal de Grafana. Primero, configura tus datos de origen. Haga clic en el icono de configuración de la barra izquierda y seleccione "Fuentes de datos".

No hay ninguna fuente de datos creada todavía, haga clic en "Añadir fuente de datos" para definir una.

Para esta configuración, seleccione "InfluxDB" y proceda.

La configuración de la fuente de datos es bastante directa si está ejecutando herramientas en la misma máquina. Necesita configurar la dirección de InfluxDB y los detalles para acceder a la base de datos. Consulte la siguiente imagen.

Si todo está completado e InfluxDB es alcanzable, haga click en "Save and test" y espere que se muestre la confirmación.

Grafana ahora está configurado para leer datos de InfluxDB. Ahora necesitas crear un panel que se encargará de interpretarla y mostrarla. Las propiedades de los paneles están codificados en archivos JSON que pueden ser creados por cualquier persona y fácilmente importados. En la barra lateral, haga click en "Create and Import".

Para un panel de monitoreo de Geth, copie el ID de este panel(opens in a new tab) y péguelo en la "página de Importación" de Grafana. Luego de guardar el panel, debería verse así:

Puedes modificar tus paneles. Cada panel puede ser editado, movido, removido o agregado. Puedes cambiar tus configuraciones. ¡Tú decides! Para leer más sobre el funcionamiento de los paneles, consulte la documentación de Grafana(opens in a new tab). También puede que muestres interés en Alerting(opens in a new tab). Esto te permite configurar notificaciónes de alertas para cuando las métricas alcancen ciertos valores. Varios canales de comunicación están soportados.

Última edición: @bunturx(opens in a new tab), 21 de febrero de 2024

¿Le ha resultado útil este tutorial?