Hay que tener en cuenta que el versionado de nuestros clientes es algo que tenemos que estar pendiente y va a depender de cual estemos usando nosotros, para esta actividad creamos una guia que te va a ayudar a mantener tu nodo o validador actualizado,
También es importante que sepamos utilizar herramientas para monitorear nuestro validador asi podremos ver que informacion estamos exponiendo sobre nuestro Nodo, hacer seguimiento de inconvenientes que tengamos y como se comporto nuestro Nodo ante ese inconveniente, prevenir errores al ver que se estan consumiendo mas recursos de lo comun, para esto hoy vamos a ver como monitorear nuestro nodo dando como ejemplo la red de Holesky.
Para este caso utilizamos Nethermind y Teku al momento de instalacion, para los mismos utilizamos Sedge, podes ver como utilizar esta herramienta te será muy util nuestro tutorial que utilizaremos como ejemplo de punto de partida:
{% embed url="https://www.youtube.com/watch?v=7kQDpSjIiKA" %}
Prometheus es un proyecto de monitoreo de sistemas de código abierto. Recolecta y almacena diferentes métricas en una base de datos especializada. Proporciona todas esas métricas a cualquier otra herramienta que desee consultarlas de manera flexible, eficiente y sencilla. En nuestra configuración, recopilará métricas de Node Exporter y opcionalmente de clientes Ethereum, y las proporcionará a solicitud a Grafana.
{% embed url="https://dvt-homestaker.stakesaurus.com/monitoring-maintenance-and-updates/set-up-monitoring-suite/installing-and-configuring-prometheus" %}
Node Exporter es un proyecto de código abierto que expone las métricas de hardware y sistema operativo. En nuestra configuración, proporcionará las métricas de nuestro sistema a Prometheus.
Grafana es un proyecto de código abierto utilizado para visualizar métricas. Puede usarse para crear paneles que muestren fácilmente las métricas en las que está interesado. En nuestra configuración, consultará las métricas almacenadas en Prometheus para mostrarlas en un navegador con gráficos.
Descarga la ultima version de Prometheus acá: https://prometheus.io/download/
Una vez que lo descargamos, abrimos la terminal en el directorio que este el archivo y ejectuamos el comando: sha256sum [nombre-archivo].tar.gz
para comprobar que este correcto, comprobamos que el resultado sea igual a la columna SHA256 Checksum que nos indica la pagina
Vemos que coincide, perfecto, vamos a repetir este proceso 2 veces mas adelante de forma mas resumida, es importante que entiendas porque hacemos esto.
Extraemos los archivos con el comando:
Copy
tar -xzvf [nombre-archivo].tar.gz
Ahora los movemos dentro de /usr/local/bin
y /etc/prometheus
para mas practicidad.
Copy
sudo cp prometheus-2.52.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.52.0.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.52.0.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.52.0.linux-amd64/console_libraries /etc/prometheus
(opcional) Despues podemos eliminar el archivo .tar.gz y el prometheus que se extrajo.
Creamos una cuenta (prometheus)
sin acceso al servidor para que Prometheus se ejecute como un servicio en segundo plano para mas seguridad.
Copy
sudo useradd --no-create-home --shell /bin/false prometheus
Creamos un directorio para que Prometheus almacene los datos del monitoreo. Despues, establecemos al usuario prometheus
como propietario de este directorio y del directorio /etc/prometheus
para que este usuario pueda leer y escribir sobre los directorios
Copy
sudo mkdir -p /var/lib/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus
Creamos un archivo de configuración para que Prometheus sepa de dónde obtener los datos.
Copy
sudo nano /etc/prometheus/prometheus.yml
Pegamos los siguientes parámetros de configuración en el archivo:
1) General + parametros execution client (Nethermind):
Copy
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
- job_name: node_exporter
static_configs:
- targets:
- localhost:9100
- job_name: nethermind
static_configs:
- targets:
- localhost:9091
2) Parametros consensus client (Teku):
De acuerdo con su consensus client seleccionado, agreguamos los siguientes bloques a los parámetros generales + parámetros del execution client anteriores.
Copy
- job_name: "teku-dev" #for consensus client
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
static_configs:
- targets: ["localhost:8009"]
- job_name: "teku-validator" #for validator client
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
static_configs:
- targets: ["localhost:8108"]
Una vez que hayamos copiado todo, guardamos con Ctrl+O
y le damos a Enter
. Nos deberia quedar asi:
despues salimos con Ctrl+x
volviendo a donde estabamos
Luego, creamos un archivo de configuracion systemd para que el servicio de Prometheus se ejecute en segundo plano
Copy
sudo nano /etc/systemd/system/prometheus.service
Pegamos la configuracion dentro del archivo:
Copy
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
Una vez copiado, guardamos con Ctrl+O
le damos a Enter
y salimos con Ctrl+X
.
Recargamos el systemd deamon para registrar los cambios que hicimos, iniciamos Prometheus y verificamos que su estado para comprobar que esta corriendo.
Copy
sudo systemctl daemon-reload
sudo systemctl start prometheus.service
sudo systemctl status prometheus.service
Deberiamos obtener la siguiente salida:
(Presionamos Ctrl+C
para salir y Promtheus va a seguir corriendo)
Usamos el siguiente comando para checkear los logs por si hay algun warning o algun error:
Copy
sudo journalctl -fu prometheus -o cat | ccze -A
Observacion: si no tenemos ccze lo instalamos
Salida esperada:
Presionamos Ctrl+C
para salir.
Si el servicio de Prometheus esta funcionando sin problemas, ahora podemos habilitarlo para que se inicie automaticamente al reiniciar el sistema:
Copy
sudo systemctl enable prometheus.service
Ahora, podemos proceder con la instalación de Node Exporter
Descargamos la ultima versión de node_exporter del siguiente link: https://prometheus.io/download/#node_exporter
Corremos sha256sum
para verificar que este todo correcto y lo comparamos con la tabla
Vemos que coincide, podemos seguir.
Descomprimimos el archivo usando tar -xzvf [nombre.archivo].tar.gz
y los copiamos a /usr/local/bin
para mas practicidad.
Creamos una cuenta de node_exporter
sin acceso al servidor para que Node Exporter se ejecute como un servicio en segundo plano para mas seguridad.
Copy
sudo useradd --no-create-home --shell /bin/false node_exporter
Creamos un archivo de configuración de systemd para que el servicio de Node Exporter se ejecute en segundo plano.
Copy
sudo nano /etc/systemd/system/node_exporter.service
Pegamos los siguientes parámetros de configuración en el archivo:
Copy
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Una vez que lo copiemos, guardamos con Ctrl+O
y le damos a Enter
, despues salimos con Ctrl+X
.
Recargamos systemd para registrar los cambios realizados, iniciamos el servicio de Node Exporter y verificamos su estado para asegurarnos de que esté funcionando.
Copy
sudo systemctl daemon-reload
sudo systemctl start node_exporter.service
sudo systemctl status node_exporter.service
Salida esperada: La salida debe indicar que Node Exporter está "active (running)". Presiona Ctrl+C
para salir y Node Exporter continuará ejecutándose.
Usa el siguiente comando para verificar los registros del proceso de sincronización de Teku Beacon Node. Pon atención a cualquier advertencia o error.
Copy
sudo journalctl -fu node_exporter -o cat | ccze -A
Salida esperada:
Le damos a Ctrl+C
para salir del monitoreo.
Si el servicio de Node Exporter está funcionando sin problemas, ahora podemos habilitarlo para que se inicie automáticamente al reiniciar el sistema.
Copy
sudo systemctl enable node_exporter.service
Esta dependencia es específica del cliente de la capa de ejecución Nethermind para permitir que el panel de monitoreo de Grafana funcione correctamente.
Descargamos la última versión:
Extraemos los archivos y los movemos al directorio (/usr/local/bin)
para que sea mas practico.
Copy
tar xvf pushgateway-1.7.0.linux-amd64.tar.gz
cd pushgateway-1.7.0.linux-amd64
sudo cp pushgateway /usr/local/bin
Creamos una cuenta (pushgateway)
sin acceso al servidor para que Pushgateway se ejecute como un servicio en segundo plano.
Creamos el archivo de configuración de systemd para ejecutar Pushgateway.
Copy
sudo nano /etc/systemd/system/pushgateway.service
Paste the following contents into the configuration file.
Copy
[Unit]
Description=Prometheus Pushgateway
After=network.target
Wants=network.target
[Service]
User=pushgateway
Group=pushgateway
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/pushgateway
[Install]
WantedBy=default.target
Una vez que lo hagas, guardamos con Ctrl+O
y Enter
, despues salimos con Ctrl+X
.
Iniciamos el servicio Pushgateway:
Copy
sudo systemctl daemon-reload
sudo systemctl start pushgateway
sudo systemctl enable pushgateway
sudo systemctl status pushgateway
Salida esperada: La salida debería indicar que Pushgateway está "activo (ejecutándose)". Presionamos Ctrl+C
para salir y Pushgateway seguirá ejecutándose.
Monitoreamos para identificar las causas de los mensajes de error, si los hubiera.
Copy
sudo journalctl -fu pushgateway -o cat | ccze -A
Instalamos Grafana utilizando el gestor de paquetes APT: descarga la clave GPG de Grafana, añade Grafana a las fuentes de APT, actualiza la caché de apt y verifica que Grafana se haya añadido al repositorio de APT.
Copy
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update
apt-cache policy grafana
Salida esperada: Asegúrate de que la versión más reciente coincida con la última versión aquí: https://grafana.com/grafana/download
Corremos el comando de instalación:
Copy
sudo apt install -y grafana
Copy
sudo systemctl start grafana-server
sudo systemctl status grafana-server
La salida debería indicar que Grafana está "activo (ejecutándose)". Presiona CTRL-C para salir y Grafana seguirá ejecutándose.
Utilizamos el siguiente comando para verificar los registros en busca de advertencias o errores:
Copy
sudo journalctl -fu grafana-server -o cat | ccze -A
Usamos Ctrl+C
para salir
Si el servicio de Grafana está funcionando sin problemas, ahora podemos habilitarlo para que se inicie automáticamente al reiniciar el sistema:
Vamos a nuestro navegador y ingresamos a http://localhost:3000/login
Ingresamos admin
como usuario y como contraseña
A continuacion nos deja setear una nueva password, es recomendable hacerlo.
Vamos a data sources
Luego en Add data source
seleccionamos Prometheus y ingresamos http://localhost:9090 como URL.
Bajamos
Ingresamos la URL
Vamos a dashboards en el menu de la izquierda
Seleccionamos el boton de new
y le damos import
Vamos abajo a la parte del JSON y copiamos lo siguiente (JSON especifico de Nethermind):
Si usaste otro cliente:
- Besu: Ingresamos el dashboard ID -
10273
- Geth: Ingresamos el dashboard ID -
13877
Le damos a import
- Teku: Ingresamos el dashboard ID -
16737
- Nimbus: Paste the JSON text from the options below
- Lodestar: Pegamos el JSON desde acá
- Lighthouse: Pegamos el JSON desde acá
- Prysm: Pegamos el JSON desde acá
Pegamos el JSON de acá:
Importante!!! Seleccionar Prometheus en el campo desplegable "Selecciona una fuente de datos de Prometheus aquí"
Ya vamos a empezar a ver como en Node exporter nos trae la data, el execution client y el consensus client no deberian tener data si todavia estan sincronizando, vamos a tener que esperar si es el caso.
Esta forma es bastante automatica en si, en caso de que quisieramos podriamos conectar todo esto via la app de Beaconcha.in (https://beaconcha.in/)
Una alternativa mas simple es descargar Team Viewer
(https://www.teamviewer.com/latam/) y configurarlo de forma que donde tenemos el Nodo cada vez que querramos acceder no se nos pida permiso con la cuenta que estemos usando, de esta forma cada vez que querraamos ver la pantalla en vivo de nuestro nodo podemos conectarnos sin estar fisicamente cerca del Nodo.