Zum Hauptinhalt springen

Node Monitoring

In diesem Kapitel durchlaufen wir den Einrichtungsprozess eines lokalen Monoitoring-Systems der Validator Node.

Prerequisites

Sie müssen Ihre Collator Node fertig eingerichtet und aktiv haben.
Dieser Guide wurde unter dem Ubuntu 20.04 LTS Release getestet.

Prometheus Setup

Im ersten Schritt werden wir den Prometheus Server einrichten.

Benutzer und Ordner

Sie erstellen einen separaten Benutzer für die Überwachungszwecke, für den kein Home-Verzeichnis angelegt wird und der sich nicht einloggen kann.

$ sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

Als nächstes erstellen Sie Verzeichnisse für die ausführbaren Dateien und die Konfigurationsdateien.

$ sudo mkdir /etc/prometheus
$ sudo mkdir /var/lib/prometheus

Ändern Sie den Eigentümer der Verzeichnisse auf den neu erstellten Benutzer.

$ sudo chown -R prometheus:prometheus /etc/prometheus
$ sudo chown -R prometheus:prometheus /var/lib/prometheus

Prometheus installieren

Schauen Sie nach der aktuellsten Version auf der GitHub Release Seite.
Zum Zeitpunkt der Veröffentlichung ist dies v2.25.2. Setzen Sie die aktuellste Version in die folgenden Befehle ein.

# download prometheus
$ wget https://github.com/prometheus/prometheus/releases/download/v2.25.2/prometheus-2.25.2.linux-amd64.tar.gz

# unpack the binaries
$ tar xfz prometheus-*.tar.gz

# enter the unpacked directory
$ cd prometheus-2.25.2.linux-amd64

Nun kopieren Sie die Binaries in das lokale Verzeichnis.

$ sudo cp ./prometheus /usr/local/bin/
$ sudo cp ./promtool /usr/local/bin/

Als Besitzer der Dateien wird ebenfalls unser neuer Benutzer gesetzt.

$ sudo chown prometheus:prometheus /usr/local/bin/prometheus
$ sudo chown prometheus:prometheus /usr/local/bin/promtool

Danach kopieren Sie die Benutzeroberfläche und die Konfigurationsdateien.

$ sudo cp -r ./consoles /etc/prometheus
$ sudo cp -r ./console_libraries /etc/prometheus

Sie ahnen es sicher bereits, doch wir müssen mal wieder die Benutzer der Verzeichnisse ändern.

$ sudo chown -R prometheus:prometheus /etc/prometheus/consoles
$ sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Sie haben nun alles, was Sie aus dem heruntergeladenen Paket benötigen, also navigieren Sie einen Schritt zurück und räumen etwas auf.

$ cd .. && rm -rf prometheus*

Nun erstellen Sie eine YAML-Komnfigurationsdatei für Prometheus mit einem Editor Ihrer Wahl (nano / vim / pico).

$ sudo nano /etc/prometheus/prometheus.yml

Die Konfigurationsdatei ist in drei Bereiche gegliedert:

  • global: setzt die Standardwerte für das Abtastungsintervall scrape_interval und das Ausführungsintervall der Regeln evaluation_interval
  • rule_files: legt die Regel-Dateien fest, die Prometheus laden soll
  • scrape_configs: hier wird festgelegt welche Resourcen überwacht werden sollen

Wir werden uns auf die Grundsätze beschränken und folgende Konfiguration erstellen:

global:
scrape_interval: 15s
evaluation_interval: 15s

rule_files:
# - "weHaveNo.rules"

scrape_configs:
- job_name: "prometheus"
scrape_interval: 5s
static_configs:
- targets: ["localhost:9090"]
- job_name: "substrate_node"
scrape_interval: 5s
static_configs:
- targets: ["localhost:9615"]

Der erste Job exportiert Daten von Prommetheus selbst, der zweite exportiert die Metriken der HydraDX Node. Wir ändern das scrape_interval beider Jobs um ein detaillierteres Dashboard zu erstellen. Dies überschreibt die globalen Variablen. Das target in static_configs legt fest, wo die Exporter laufen, wir belassen dies bei den Standardwerten.

Nachdem die Konfiguration gespeichert wurde, wird erneut der Besitzer geändert.

$ sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

Prometheus starten

Damit Prometheus automatisch startet und im Hintergrund läuft werden wir systemd verwenden. Erstellen Sie eine neue Konfiguration (wieder mit einem Editor Ihrer Wahl):

$ sudo nano /etc/systemd/system/prometheus.service

Fügen Sie folgende Konfiguration ein und speichern sie ab.

[Unit]
Description=Prometheus Monitoring
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
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
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Danach führen Sie die drei folgenden Schritte aus: systemctl deamon-reload lädt neue Konfigurationen und aktualisiert die bestehende systemctl enable aktiviert Ihren neuen Service systemctl start startet den Service

Hiermit können Sie alle drei Befehle in einer Zeile ausführen:

$ sudo systemctl daemon-reload && systemctl enable prometheus && systemctl start prometheus

Sie sollten nun in der Lage sein die Benutzeroberfläche von Prometheus unter http://localhost:9090/ aufzurufen.

Node Exporter

Wir werden Node Exporter installieren um Hardware-Werte für das Dashboard abzugreifen. Bitte schauen Sie hier nach, welches die aktuellste Version ist und ersetzen die Versionsnummer im folgenden Befehl.
Zum Veröffentlichungszeitpunkt war die aktuellste Version 1.1.2.

Node Exporter installieren

Laden Sie die neuste Version herunter.

$ wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz

Entpacken Sie das eben heruntergeladene Paket. Dadurch wird ein Verzeichnis mit dem Namen node_exporter-1.1.2.linux-amd64 erstellt.

$ tar xvf node_exporter-1.1.2.linux-amd64.tar.gz

Als Nächstes kopieren Sie die Binary in das lokale Applikationsverzeichnis und weisen es dem entsprechenden Benutzer zu.

# copy binary
$ cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin

# set ownership
$ sudo chown prometheus:prometheus /usr/local/bin/node_exporter

Sie können etwas aufräumen und das heruntergeladene Paket und die entpackten Dateien entfernen.

$ rm -rf node_exporter*

Einen Systemd Service erstellen

Genau wie bei Prometheus starten Sie Node Exporter als Service im Hintergrund. Erstellen Sie einen systemd Service mit einem Editor Ihrer Wahl.

$ sudo nano /etc/systemd/system/node_exporter.service

Und fügen Sie folgende Konfiguration ein.

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Aktivieren und starten Sie den Service mit folgendem Einzeiler.

$ sudo systemctl daemon-reload && systemctl enable node_exporter && systemctl start node_exporter

Scrape Job für Node Exporter hinzufügen

Der Node Exporter ist nun einsatzbereit, Sie müssen Prometheus jedoch noch anleiten die Daten zu erheben. Öffnen Sie die Konfiguration mit einem beliebigen Editor.

$ sudo nano /etc/prometheus/prometheus.yml

Fügen Sie ganz unten am Ende der Datei eine weitere Scrape-Konfiguration ein. Kopieren Sie folgenden Codeblock hinein und speichern die Datei.

  - job_name: 'node_exporter'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9100']

Um die neue Konfiguration anzuwenden muss der Prometheus Service neugestartet werden.

$ sudo systemctl restart prometheus.service 

Ihre Server-Metriken werden nun ausgelesen und können in der Prometheus Benutzeroberfläche eingesehen werden. Sie werden sie später für das Dashboard benötigen.

Grafana Setup

Sie können die Daten in der Benutzeroberfläche sehen, das war jedoch nicht das Ziel dieser Anleitung. Wir möchten die Daten hübsch angezeigt bekommen und da kommt Grafana ins Spiel.

Grafana installieren

Bitte überprüfen Sie mit diesem Link, welches die neuste Version von Grafana ist. Sie können entweder die Versionsnummer in folgendem Befehl anpassen oder die Befehle aus der verlinkten Seite kopieren und direkt benutzen. Zum Veröffentlichungszeitpunkt war die aktuellste Version 7.5.1.

$ sudo apt-get install -y adduser libfontconfig1
$ wget https://dl.grafana.com/oss/release/grafana_7.5.1_amd64.deb
$ sudo dpkg -i grafana_7.5.1_amd64.deb

Das Paket enthält einen fertigen systemd-Service, welchen Sie direkt verwenden können.

$ sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl start grafana-server

Die Benutzeroberfläche aufrufen

Sie können die Benutzeroberfläche von Grafana nun unter http://localhost:3000/ aufrufen. Die standardmäßigen Login-Daten für Grafana sind:
Benutzer: admin
Passwort: admin

Die Datenquelle konfigurieren

Bitte klicken Sie das Einstellungs-Zahnrad im Menü und wählen Datasources. Im nächsten Fenster klicken Sie Add Datasource und wählen Sie Prometheus.

Im nachfolgenden Formular müssen Sie nichts ändern außer die URL. Stellen Sie http://localhost:9090/ ein und klicken Save and Test.

Das Dashboard importieren

Bitte klicken Sie den Plus-Button im Hauptmenü und wählen import.

Sie können das HydraDX Dashboard nutzen und um es zu laden geben Sie einfach die ID 14158 ein und klicken auf Load.

Hier müssen Sie nicht viel einstellen, vergewissern Sie sich lediglich, dass Prometheus als Datasource eingestellt ist. Sie können den Importvorgang nun abschließen.

Sie sollten das Dashboard sofort mit ihren Daten sehen. Falls einzelne Panele leer sind, vergewissern Sie sich bitte, dass die Auswahlfelder ganz oben folgende Werte enthalten:

  • Chain Metrics: Substrate
  • Chain Instance: localhost:9615
  • Server Job: node_exporter
  • Server Host: localhost:9100