Monitorización con Grafana & Prometheus

En este tutorial vamos a crear un panel de monitorización con grafana para nuestra stake pool, esta consta de 3 nodos relays y 1 nodo core.
Uno de los relays, el número 3, lo usaremos para levantar el servicio de Grafana con su interfaz web. El resto de nodos relays y el core siguen los mismos pasos.

Vamos a monitorizar tanto las métricas generadas por
cardano-node
, como las métricas generales del servidor con node-exporter
de Prometheus.Relay3 host
Relay1 & relay2 & core
Añadimos el key al apt :
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Añadimos el repositorio al apt:
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Actualizamos los paquetes(ya tenemos el repo verificable de grafana en apt)
sudo apt update
Instalamos grafana:
sudo apt install grafana
Cambiamos el puerto donde se desplegará Grafana:
sudo vim /etc/grafana/grafana.ini
# The http port to use
http_port = 5009
Elige el puerto de tu elección(también puedes dejar el puerto por defecto):
http_port = <port>
Inicia el servicios de grafana y haz que se inicie automáticamente si se reinicia el servidor.
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Comprueba el estado de grafana:
sudo systemctl status grafana-server
Otras opciones:
sudo systemctl restart grafana-server
sudo systemctl stop grafana-server
Abre el puerto establecido en
grafana.ini
con ufw:sudo ufw allow proto tcp from any to any port <port>
Ahora todo el mundo puede acceder al login de la web de:
http://<ip-address>:<port>
La primera vez que accedes, 'admin' es el
usuario
y contraseña
, después cambia la contraseña.Puede pensar en establecer un nombre de dominio a la dirección ip para hacer el acceso mas amigable.
Finalmente, instala el plugin Clock:
grafana-cli plugins install grafana-clock-panel
sudo apt-get install -y prometheus prometheus-node-exporter prometheus-alertmanager
Busca el archivo de configuración de
prometheus-node-exporter
:sudo find / -name prometheus-node-exporter.service
sudo vim path-to/prometheus-node-exporter.service
Elige el puerto de tu elección, busca la siguiente linea:
ExecStart=/usr/local/bin/node_exporter
Cámbiala por:
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:<port>
Start the services and enable them to init when reboot:
Inicia el servicio y haz que se inicie automáticamente si se reinicia el servidor.
sudo systemctl start prometheus
sudo systemctl start prometheus-node-exporter
sudo systemctl enable prometheus
sudo systemctl enable prometheus-node-exporter
Una vez que todos los servicios está instalados y funcionando, vamos a editar el archivo de configuración de prometheus para añadir la fuente de las métricas de todos los nodos(incluído el localhost). Buscamos el archivo de configuración:
sudo find / -name prometheus.yml
sudo vim <path-to>/prometheus.yml
Reemplaza el contenido por:
# global configs
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
scrape_configs:
- job_name: 'cardano' # To scrape data from the running cardano-node
scrape_interval: 15s
static_configs:
- targets: ['<ip-address1>:12798']
labels:
alias: 'relay1'
type: 'cardano-node'
- targets: ['<ip-address2>:12798']
labels:
alias: 'relay2'
type: 'cardano-node'
- targets: ['<ip-address3>:12798']
labels:
alias: 'core'
type: 'cardano-node'
- targets: ['127.0.0.1:12798']
labels:
alias: 'relay3-host'
type: 'cardano-node'
- job_name: 'node' # To scrape data from a node exporter to monitor the linux host metrics.
scrape_interval: 15s
static_configs:
- targets: ['<ip-address1>:<node-exporter-port>']
labels:
alias: 'relay1'
type: 'host-system'
- targets: ['<ip-address2>:<node-exporter-port>']
labels:
alias: 'relay2'
type: 'host-system'
- targets: ['<ip-address3>:<node-exporter-port>']
labels:
alias: 'core'
type: 'host-system'
- targets: ['127.0.0.1:<node-exporter-port>']
labels:
alias: 'relay3-host'
type: 'host-system'
Date cuenta que el relay3 es el host de grafana, entonces solo necesitamos especificar la ip
127.0.0.1
para esta fuente, porque está todo en la misma máquina.BAsegúrate de reemplazar
<ip-address>
y <node-exporter-port>
con tus valores.Reiniciamos el servicio para cargar la nueva configuración:
sudo systemctl restart prometheus
sudo apt-get install -y prometheus-node-exporter
sudo find / -name prometheus-node-exporter.service
or
systemctl status prometheus-node-exporter.service
Edita el servicio:
vim path-to/prometheus-node-exporter.service
Elige el puerto donde se lanzarán las métricas de
node-exporter
. Cambia la siguiente línea:ExecStart=/usr/local/bin/node_exporter
Por:
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:<node-exporter-port>
Start the services and enable them to init when reboot: Inicia el servicios y haz que se inicie cada vez que reinicia el servidor.
sudo systemctl start prometheus-node-exporter.service
sudo systemctl enable prometheus-node-exporter
Vamos a encontrar el archivo de configuración usado por
cardano-node
:sudo find / -name mainnet-config.json
vim path-to/mainnet-conf.json
Cambia el campo
hasPrometheus
:"hasPrometheus": [ "127.0.0.1", 12798 ]
Por:
"hasPrometheus": [ "0.0.0.0", 12798 ]
Después de editar el archivo, tienes que reinicar el nodo para que cargue los nuevos valores de configuración.
Abrimos el puerto para una dirección ip específica, en este caso, para el relay3-host.
sudo ufw allow from <host-ip-address3> to any port 12798
sudo ufw allow from <host-ip-address3> to any port <node-exporter-port>
Felicidades! Hemos hecho que
cardano-node
genere metricas accesibles desde el puerto 12798 y que node-exporter
genere métricas sobre el servidor en el puerto <port>.En el panel de grafana, Ir a Configuration > Data Sources > Add data source y selecciona Prometheus.

En el menú izquierdo de grafana, vete a + > Create > Dashboard.

Crear un gráfico que muestre los
peers
conectados a cardano-node
.

Ejemplo de gráfico:


En el panel de grafana, Ir a + > Create > Import > introduce el contenido json.
Ejemplo de panel version 1:

Última actualización 1yr ago