Full Node: Verbindungen tracken

Hey zusammen,

ich hab meine Full Node mittlerweile sauber am Laufen (Umbrel 1.5 auf Raspberry Pi) und bin super zufrieden. Die Blockchain ist komplett synchronisiert und ich habe im Schnitt so zwischen 30–40 Verbindungen.

Jetzt suche ich ein Tool, mit dem ich die Anzahl der Verbindungen über den Tag hinweg dokumentieren bzw. grafisch darstellen kann. Am liebsten als App direkt auf Umbrel, damit das Ganze einfach bleibt.

Daher meine Frage:

Kennt jemand von euch ein Tool oder eine einfache Lösung (App, Script, Add-on), mit dem ich die Peer-Connections meiner Full Node aufzeichnen und später auswerten kann? Gerne alles, was auf Umbrel läuft oder sich leicht integrieren lässt.

Danke schon mal für jeden Tipp! :raising_hands:

So etwas kannst du sicher easy mit einer KI erstellen. Ich habe deinen Post Grok gefüttert und es hat brauchbare Ergebnisse geliefert, du kannst ja noch spezifier sein wenn du willst.

Groks Antwort:

Hilfe zum Tracken von Full-Node-Verbindungen auf Umbrel

Hallo! Ich habe mir den Thread auf dem Blocktrainer-Forum angeschaut ( Full Node: Verbindungen tracken ). Du (oder der OP) suchst nach einer Möglichkeit, die Anzahl der Peer-Verbindungen deiner Bitcoin Full Node auf Umbrel 1.5 (auf Raspberry Pi) über einen Tag hinweg zu protokollieren und grafisch darzustellen – idealerweise als einfache App oder Script, das direkt auf Umbrel läuft. Der Thread ist leider noch unbeantwortet, also helfe ich dir gerne mit ein paar praktischen Vorschlägen. Ich halte es schrittweise und machbar, da Umbrel auf Linux (Debian-basiert) läuft und du über SSH oder die Konsole zugreifen kannst.

Warum ist das relevant?

  • Deine Node hat derzeit 30–40 Verbindungen – das ist gut! Aber um zu tracken, wie sich das über die Zeit ändert (z. B. durch Netzwerkverkehr, Tor-Nutzung oder Peers), brauchst du Logging.
  • Umbrel nutzt Bitcoin Core, wo die Anzahl der Peers mit bitcoin-cli getnetworkinfo abgefragt werden kann (Feld: connections).

Empfohlene Lösung: Ein einfaches Bash-Script mit Grafik

Da Umbrel keine dedizierte App dafür hat (und der App Store nichts Passendes bietet), schlage ich ein Python-Script vor, das:

  • Alle 5 Minuten die Peer-Anzahl abfragt.
  • Die Daten in eine CSV-Datei speichert.
  • Am Ende eine Grafik (PNG) erzeugt.

Das läuft lokal auf Umbrel, braucht keine Internetverbindung und ist ressourcenschonend für den Raspberry Pi. Du kannst es als Cron-Job automatisieren.

Voraussetzungen:

  • SSH-Zugriff auf Umbrel (Standard: ssh umbrel@umbrel.local oder IP, Passwort aus Umbrel-App).
  • Python ist auf Umbrel vorinstalliert (über python3).
  • Installiere benötigte Pakete: sudo apt update && sudo apt install python3-pip (falls nicht da), dann pip3 install pandas matplotlib (einmalig).

Schritt 1: Das Script erstellen
Erstelle eine Datei namens track_peers.py in deinem Home-Verzeichnis (~/):

nano ~/track_peers.py

Füge diesen Code ein (kopiere ihn direkt):

import subprocess
import pandas as pd
import matplotlib.pyplot as plt
import os
from datetime import datetime

# Funktion: Peer-Anzahl abfragen
def get_peer_count():
    try:
        result = subprocess.run(['bitcoin-cli', 'getnetworkinfo'], capture_output=True, text=True)
        info = eval(result.stdout)  # JSON parsen (einfach, da Bitcoin CLI JSON ausgibt)
        return info['connections']
    except Exception as e:
        print(f"Fehler beim Abfragen: {e}")
        return None

# Daten sammeln (z. B. für 1 Tag, alle 5 Min = 288 Messungen)
data = []
for i in range(288):  # Passe an: Anzahl der Intervalle
    peers = get_peer_count()
    timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    data.append({'Zeit': timestamp, 'Peers': peers})
    print(f"Gemessen: {timestamp} - {peers} Peers")
    time.sleep(300)  # 5 Minuten warten (import time oben hinzufügen!)

# In CSV speichern
df = pd.DataFrame(data)
csv_file = os.path.expanduser('~/peer_connections.csv')
df.to_csv(csv_file, index=False)
print(f"Daten gespeichert: {csv_file}")

# Grafik erzeugen
plt.figure(figsize=(12, 6))
plt.plot(pd.to_datetime(df['Zeit']), df['Peers'], marker='o', linestyle='-')
plt.title('Peer-Verbindungen über 24 Stunden')
plt.xlabel('Zeit')
plt.ylabel('Anzahl Peers')
plt.grid(True)
plt.xticks(rotation=45)
plt.tight_layout()
plot_file = os.path.expanduser('~/peer_connections.png')
plt.savefig(plot_file)
plt.show()  # Optional: Zeigt Plot an (auf Pi mit Display)
print(f"Grafik gespeichert: {plot_file}")

Hinweis: Füge ganz oben import time hinzu (nach den anderen Imports), falls nicht schon da.

Schritt 2: Script ausführen

  • Starte es: python3 ~/track_peers.py
  • Es läuft 24 Stunden (passe die Range an, z. B. für Test: range(12) für 1 Stunde).
  • Ergebnis: Eine CSV-Datei zum Analysieren und eine PNG-Grafik.

Schritt 3: Automatisieren mit Cron
Um es täglich zu tracken:

  • Öffne Crontab: crontab -e
  • Füge hinzu: 0 */5 * * * /usr/bin/python3 /home/umbrel/track_peers.py >> /home/umbrel/peer_log.txt 2>&1 (alle 5 Min, loggt Output).
  • Für eine tägliche Grafik: Passe das Script an, um nur zu loggen, und ein separates Script für die Grafik (z. B. via 0 0 * * * um Mitternacht).

Alternative: Einfacheres Tool ohne Coding

  • Prometheus + Grafana auf Umbrel: Installiere die Apps aus dem Umbrel App Store (falls verfügbar). Konfiguriere Bitcoin Core als Exporter für Metrics (Peers werden über RPC exposed). Grafana erzeugt schöne Dashboards. Suche im Umbrel Store nach „Prometheus“ oder „Grafana“ – das ist „plug-and-play“.
  • btcpay-server Dashboard: Wenn du BTC-Pay auf Umbrel hast, schau ins integrierte Dashboard; es trackt manchmal Peers.
  • Externe Tools: Nutze netstat oder ss für grobe Logs: watch -n 300 "ss -tuln | grep :8333 | wc -l" (zeigt TCP-Verbindungen auf Bitcoin-Port, alle 5 Min).
  • Bitcoin Core Logging: Aktiviere detailliertes Logging in bitcoin.conf (unter ~/umbrel/bitcoin/bitcoin.conf): Füge debug=net und printtoconsole=1 hinzu, dann bitcoin-cli stop && bitcoin-cli start. Logs in debug.log filtern mit grep "Added connection".

Tipps & Warnungen

  • Ressourcen: Auf Pi spart das Script wenig CPU (Bitcoin CLI ist schnell). Teste mit kürzeren Intervallen.
  • Sicherheit: Stelle sicher, dass RPC nur lokal zugänglich ist (Umbrel-Standard).
  • Erweiterung: Für mehr Details (z. B. Peer-IPs) erweitere mit bitcoin-cli getpeerinfo | jq '.[] | .addr'.
  • Wenn du Tor nutzt, könnten Verbindungen schwanken – tracke auch getnetworkinfo für networks (z. B. reachable).

Falls das Script nicht läuft (z. B. Fehler bei bitcoin-cli), schick mir die Fehlermeldung, oder sag Bescheid, ob du eine andere Variante brauchst (z. B. nur Bash ohne Python). Ich kann es auch anpassen! Viel Erfolg mit deiner Node – lass hören, wie’s klappt. :blush:

1 „Gefällt mir“

Danke für die Rückmeldung. Ich hab es auch schon mit KI probiert, leider ist Umbrel OS nur sehr eingeschränkt über das Terminal nutzbar. Daher hatte ich die Hoffnung, dass es vielleicht eine App gibt. Ich schau mir Grafana mal an :+1: