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.

Puesta a punto del entorno

Instalar Grafana

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

Instala Prometheus & node exporter

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

Añadir las metricas a Prometheus

Antes de continuar, asegúrate de completar todos los pasos del resto de nodos.

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

Grafana monitor web

Añade la fuente de métricas Prometheus:

En el panel de grafana, Ir a Configuration > Data Sources > Add data source y selecciona Prometheus.

Crear un panel para tu stake pool desde cero

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

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

1. Seleccionamos la fuente de datos Prometheus

2. Seleccionamos la métrica específica

Ejemplo de gráfico:

3. Establece las propiedades de la gráfica

Cargar un dashboard desde archivo.

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

Ejemplo de panel version 1:

Última actualización

¿Te fue útil?