Skip to content

Instantly share code, notes, and snippets.

@0xobjectObject
Last active May 5, 2023 07:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save 0xobjectObject/c8e23610a641f29004c8490f6eca74b0 to your computer and use it in GitHub Desktop.
Save 0xobjectObject/c8e23610a641f29004c8490f6eca74b0 to your computer and use it in GitHub Desktop.

Updating Rocketpool & enabling metrics on multiple Nodes

Updating Rocketpool

After following the other guides, you'll have multiple Rocket Pool nodes on your computer, each of which you'll need to update separately.

For example, instead of changing the container tag once with rocketpool s c, you'll need to run rp1 s c, rp2 s c and so on for each node where you want to change the container tag.

Updating script

If you want to update all nodes at once to a new Rocket Pool version, use the following script, update-rocketpool.sh:

#!/bin/bash 
~/bin/rocketpool -c ~/.rocketpool service stop --yes
~/bin/rocketpool -c ~/.rocketpool2 service stop --yes
~/bin/rocketpool -c ~/.rocketpool3 service stop --yes
wget https://github.com/rocket-pool/smartnode-install/releases/latest/download/rocketpool-cli-linux-amd64 -O ~/bin/rocketpool
~/bin/rocketpool service install -d --yes -p ~/.rocketpool
~/bin/rocketpool service install -d --yes -p ~/.rocketpool2
~/bin/rocketpool service install -d --yes -p ~/.rocketpool3
echo "All Rocket Pool nodes have been updated, but not yet started. Run "rp1 s c" for each node to confirm any changes and start the node."

Change the download URL if you're using an arm or mac based computer. You'll need to add 2 new lines to the script for each node you want to update with it. (The example script assumes 3 nodes, remove one if you're just running 2.)

Enabling metrics for a second node

This guide assumes that you've already set up metrics for your first node using the default Docker project name rocketpool and want to set it up for the second node rocketpool2. Assumed config paths are ~/.rocketpool, ~/.rocketpool2 and all the default ports.

This will run a separate prometheus instance for each node to simplify the setup.

Preventing a second Node Exporter and Grafana instance

You only need one of each, so disable the other instances. Edit ~/.rocketpool2/override/grafana.yml so it looks like this:

services:
  grafana:
    x-rp-comment: Add your customizations below this line
    profiles:
      - donotstart

Edit ~/.rocketpool2/override/exporter.yml so it looks like this:

services:
  node-exporter:
    x-rp-comment: Add your customizations below this line
    profiles:
      - donotstart

Configure Prometheus

Edit ~/.rocketpool2/override/prometheus.yml so it looks like this:

services:
  prometheus:
    x-rp-comment: Add your customizations below this line
networks:
  monitor-net:
    name: rocketpool_monitor-net
    external: true

Now you can enable metrics in

rp2 s c

Configure Grafana

Connect the Grafana container to your second node's network. Edit ~/.rocketpool/override/grafana.yml so it looks like this:

services:
  grafana:
    x-rp-comment: Add your customizations below this line
    networks:
      - rocketpool2
networks:
  rocketpool2:
    name: rocketpool2_net
    external: true

Add a second Prometheus datasource to Grafana, and an explicit datasource for your first Prometheus instance. Add the following to the end of ~/.rocketpool/grafana-prometheus-datasource.yml:

  - name: Prometheus1
    type: prometheus
    access: proxy
    orgId: 1
    url: http://rocketpool_prometheus:9091
    basicAuth: false
    isDefault: false
    version: 1
    editable: true
  - name: Prometheus2
    type: prometheus
    access: proxy
    orgId: 1
    url: http://rocketpool2_prometheus:9091
    basicAuth: false
    isDefault: false
    version: 1
    editable: true

Restart Grafana to apply your changes:

rp1 s start

Now you can open the Grafana interface and add a new dashboard for your second node. Import the dashboard for your consensus client, and select Prometheus2 as the data source. You'll need to change the name and UID of the new dashboard to avoid overwriting your existing dashboard.

Also delete and replace your existing first dashboard with a new dashboard that uses the explicit Prometheus1 data source, instead of the default Prometheus.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment