Cum să vă monitorizați validatorul Eth2 și să vă analizați P&L

blogul 1NewsDevelopersEnterpriseBlockchain Explained Evenimente și conferințe ApăsațiBuletine informative

Aboneaza-te la newsletter-ul nostru.

Adresa de email

Vă respectăm confidențialitatea

AcasăBlogDezvoltatori

Cum să vă monitorizați validatorul Eth2 și să vă analizați P&L

de Coogan Brennan 15 ianuarie 2021 Postat pe 15 ianuarie 2021

Călătoria mea pentru a deveni validator pe Ethereum 2 0 Partea 3

Dacă sunteți nou în această serie despre cum să vă rulați propriul validator Eth2, asigurați-vă că ați verificat partea 1 și partea 2. Ar trebui să verificați toți cei de la Ben Edgington Buletin informativ Eth2.News fsau actualizări esențiale, remedieri de erori și știri despre foaia de parcurs viitoare. Baza noastră de cunoștințe Eth2 este utilă dacă aveți nevoie de mai multe informații despre termenii cheie, fazele și produsele Eth2 ale ConsenSys.

Introducere 

A trecut o lună și jumătate de când a început geneza lanțului Ethereum 2.0 Beacon. Deja, 2.515.170 ETH au fost mizați (aproximativ 2,9 miliarde de dolari la ratele pieței actuale) cu 61.561 validatori unici și alți 16.687 în așteptare. În ciuda interesului extraordinar pentru miză, a fost de fapt o lună și jumătate destul de lipsită de evenimente: nu au existat perturbări majore, doar câteva tăieturi și participarea validatorului în percentila 98 de cele mai multe ori. Acum este un moment bun pentru a lua o respirație pentru a face bilanțul a ceea ce am făcut până acum. 

În această postare de blog voi acoperi monitorizarea și analiza financiară a validatorului dvs. Eth2. Ofer o prezentare generală despre cum să accesați valorile Teku, să configurați notificările Beaconcha.in și cum să interogați nodul. Îmi împărtășesc și P-ul meu actual&L defalcare. În ultima versiune a acestei serii, voi discuta despre cum să migrați în siguranță și (sperăm) cu succes un nod Teku de la un server la altul.

Monitorizarea

În această secțiune, voi parcurge modul de citire a valorilor nodului validatorului. Rularea unui validator Ethereum 2.0 este executarea infrastructurii pentru un sistem distribuit. O parte crucială a întreținerii infrastructurii este posibilitatea de a vedea ce se întâmplă. Din fericire, Teku vine cu o suită excelentă de instrumente de monitorizare activate cu semnalizatorul „–metrics-enabled” din comanda noastră de pornire, evidențiat mai jos:

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<puternic> puternic> <puternic>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE puternic> <puternic>–validator-keys = / home / ubuntu / validator_key_info / KEYSTORE-M_123456_789_ABCD.json: /home/ubuntu/validator_key_info/validator_keys/KEYSTORE-M_123456_789_ABCD.txt puternic> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <puternic>–baza de date-cale = / var / lib / tekustrong>Limbaj cod: HTML, XML (xml)

Trebuie să urmăm câțiva pași înainte de a putea citi datele.

Pentru cei care nu rulează un client Teku: În primul rând, de ce? În al doilea rând, puteți vedea valorile minime furnizate de toți clienții în Specificațiile Ethereum 2.0 aici.

Instalarea lui Prometeu

Mai întâi, trebuie să instalăm Prometeu, un program de monitorizare open source și Grafana, o aplicație web de analiză open-source și vizualizare interactivă. Prometeu extrage datele și Grafana le afișează.

Pe linia de comandă Ubuntu, descărcați cel mai recent Prometheus stabil:

curl -JLO <a href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gza>Limbaj cod: HTML, XML (xml)

Decomprimați fișierul astfel:

tar -zxvf <a href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">prometheus-2.23.0.linux-amd64.tar.gza>Limbaj cod: HTML, XML (xml)

Mutați binarul astfel încât să fie disponibil din linia de comandă:

Cd prometheus-2.23.0 Limbajul codului: CSS (css) sudo mv prometheus promtool / usr / local / bin /

Verificați pentru a vă asigura că a fost instalat corect:

prometeu – versiune promtool –versiune

Creați un fișier de configurare YML prometheus:

sudo nano prometheus.yml Limbaj cod: CSS (css)

Lipiți acești parametri în fișierul de configurare:

global: scrape_interval: 15s scrape_configs: – job_name: "prometeu" static_configs: – target: ["localhost: 9090"] – numele locului de munca: "teku-dev" scrape_timeout: 10s metrics_path: / metrics scheme: http static_configs: – target: ["localhost: 8008"] Limbaj cod: PHP (php)

Acest lucru îl instruiește pe Prometeu să vă sondeze nodul Teku la fiecare 10 secunde pe portul 8008. Apăsați comanda-X și apăsați Y pentru a salva bufferul

Acum, să creăm un director pentru a pune fișierul nostru de configurare Prometheus:

sudo mkdir / etc / prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml

Vom crea un alt director pentru alte fișiere Prometheus și vom muta modulele console și console_libraries în / etc / prometheus

sudo mkdir / var / lib / prometheus sudo mv consoles / console_libraries / / etc / prometheus / Limbaj cod: JavaScript (javascript)

Vom crea un utilizator prometeu pentru a rula un serviciu systemd, așa cum am făcut pentru Teku (citiți mai multe aici despre modul în care accesul utilizatorului bazat pe roluri este cea mai bună practică pentru securitatea serverului) și acordați-i acces la fișierele corespunzătoare:

sudo useradd –no-create-home –shell / bin / false prometheus sudo chown -R prometheus: prometheus / var / lib / prometheus sudo chown -R prometheus: prometheus / etc / prometheus sudo chown -R prometheus: prometheus / usr / local / bin / Limba codului: JavaScript (javascript)

În cele din urmă, creați un serviciu systemd care poate rula în fundal și reporniți singur dacă nu reușește:

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

În acest fișier (care ar trebui să fie gol), vom introduce o serie de comenzi pentru ca sistemul să fie executate atunci când pornim serviciul. Copiați următoarele în editorul de text:

[Unitate] Descriere = Prometheus Wants = network-online.target After = network-online.target [Service] Type = simplu User = prometheus Group = prometheus Restart = întotdeauna RestartSec = 5 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. biblioteci = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Instalare] WantedBy = multi-user.target Limbaj cod: JavaScript (javascript)

Tastați comanda-X, apoi tastați „Y” pentru a salva modificările

Trebuie să repornim systemctl pentru a-l actualiza:

sudo systemctl daemon-reload

Porniți serviciul:

sudo systemctl începe prometheus

Verificați pentru a vă asigura că funcționează bine:

sudo systemctl status prometheus

Dacă vedeți erori, obțineți mai multe detalii executând:

sudo journalctl -f -u prometheus.service Limbaj cod: CSS (css)

Puteți opri serviciul Prometheus executând:

sudo systemctl stop prometheus

Instalați Grafana

Vom folosi managerul de pachete APT pentru Linux pentru a instala Grafana. Acest lucru ne va economisi o cantitate bună de muncă și ne va oferi ceea ce avem nevoie. Vom urma pașii din pagina de instalare Grafana:

sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add -Limba cod: JavaScript (javascript)

Adăugăm depozitul Grafana stabil pentru actualizări:

ecou "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list Limbaj cod: PHP (php)

Apoi rulăm APT:

sudo apt-get update sudo apt-get install grafana Limba codului: JavaScript (javascript)

Pachetul configurează un serviciu systemd pentru noi (inclusiv un utilizator grafana), deci trebuie doar să rulăm:

sudo service grafana-server start sudo service grafana-server status sudo update-rc.d grafana-server implicit Limbaj cod: CSS (css)

Tunelare SSH

Grafana creează un tablou de bord foarte elegant, unde ne putem vizualiza valorile. Acel tablou de bord este de obicei disponibil în browser, dar din moment ce rulăm versiunea de server a Ubuntu 20.04, totul este linia de comandă. Deci, cum accesăm Grafana?

Introduceți tuneluri SSH. Este același protocol pe care îl folosim pentru a accesa AWS din linia noastră de comandă, dar îl vom configura astfel încât să creăm un port oglindă pe computerul nostru local care se conectează la un port specific din instanța noastră AWS. În acest fel, când apelăm portul la nivel local, spuneți deschizând browserul către http: // localhost: 3000, de fapt, ne uităm la portul 3000 de pe instanța noastră AWS.

Pentru a face acest lucru în mod corespunzător, veți avea nevoie de cheia SSH pentru AWS și informațiile despre AWS IP. De asemenea, trebuie să știți la ce port doriți să vă conectați. În acest caz, știm că instanța noastră Grafana rulează pe portul 3000, deci instrucțiunile din linia de comandă vor avea această structură generică:

ssh -N -L 3000: localhost: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Limba codului: CSS (css)

Acest lucru ne permite să mergem la http: // localhost: 3000 pe mașina noastră locală și vedeți tabloul de bord Grafana. Dar nu avem încă unul, așa că trebuie să facem următoarele:

Adăugați Prometeu ca sursă de date:

Accesați „adăugați o nouă sursă de date”

Faceți clic pe „Prometeu” din meniul derulant

Faceți clic pe „Salvați și testați”

Faceți clic pe + în meniul din stânga și selectați „import tabloul de bord”

Adăugați ID-ul Teku Grafana: 13457

Și, bada-bing! Avem tabloul nostru de bord, vizibil din confortul propriului browser:

Aplicația Beaconcha.in

Tabloul de bord Grafana este excelent, iar Prometheus stochează informații pentru noi. Cu toate acestea, există și alte opțiuni pentru a verifica starea validatorului.

Am folosit-o Aplicație mobilă Beaconcha.in Dashboard pentru Android. Este o interfață simplă, ceea ce este bine, deoarece nu este serviciul meu principal de monitorizare. Îmi permite să arunc o privire rapidă pe telefonul meu pentru a verifica starea validatorului și oferă notificări dacă ceva nu este în regulă cu validatorul.

Introduceți adresa validatorului pe care doriți să o urmăriți și cam atât! Din nou, nu monitorizarea grea (asta oferă feedul Grafana Teku). Dar este bine ca un serviciu secundar și binar „funcționează sau nu validatorul”:

Interogarea nodului

O altă modalitate de a „monitoriza” clientul nostru validator Ethereum este să îl interogați! La fel ca un client Ethereum 1.0, clientul nostru validator Ethereum stochează și menține un stat mondial. Este mult mai mic comparativ cu Ethereum 1.0, dar este totuși date în lanț stocate și întreținute de clientul dvs. validator. 

Acestea sunt aceleași date consumate de fluxul de lucru Prometheus / Grafana. Pur și simplu ne apropiem de metal (practic vorbind) interogând noi înșine nodul. Iată un eșantion al datelor disponibile (lista completă aici):

  • Informații despre lanțul de balize (bloc de geneză, anteturi de bloc și rădăcină etc.)
  • Informații despre validator (lista validatorilor, soldul validatorului, responsabilitățile validatorului etc.)
  • Informații despre noduri (starea generală, lista colegilor etc.)

răsuci

Primul mod de a face acest lucru este din linia de comandă. Când am început Teku, am adăugat steagul -rest-api-enabled = true. Aceasta deschide un punct final API la portul implicit 5051 (puteți specifica un alt port utilizând semnalizatorul –rest-api-port =). Puteți verifica dacă portul dvs. este deschis executând sudo lsof -i -P -n | grep ASCULTĂ.

După ce ați confirmat că portul 5051 este deschis de Teku, îl vom folosi răsuci a trimite ODIHNĂ apeluri către punctul final Teku API la http: // localhost: 5051. De exemplu, iată modul în care verificăm soldul celui mai performant validator (conform Beaconcha.in):

curl -X GET "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5"Limbaj cod: PHP (php)

Iată răspunsul pe care l-am primit înapoi la mijlocul lunii ianuarie 2021 (în Gwei): 

{"date": [{"index":"4966","echilibru":"32607646851"}]} Limba codului: JSON / JSON cu Comentarii (json)

Încercați oricare dintre metode pagina doc API Teku folosind formatul din partea de jos a acestei pagini:

curl -X [REST_METHOD] „API_CALL_IN_QUOTES” Limbajul codului: CSS (css)

Swagger UI

Există o interfață grafică de bază pentru apelurile API pe care Teku le oferă atunci când se adaugă semnalizatorul –rest-api-docs-enabled = true în comenzile de pornire. Este construit pe swagger-ui și se află în mod implicit pe portul 5051 și putem folosi tunelul SSH pentru a-l accesa. Urmați aceiași pași de tunelare SSH de sus, dar cu 5051 ca portul:

ssh -N -L 5051: localhost: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Limba codului: CSS (css)

Din browserul de pe computerul nostru, putem naviga apoi la http: // localhost: 5051 / swagger-ui, care arată așa pe mașina mea:

Statul mondial și consensul sunt ceva care apare în toate blockchain-urile publice. Aceasta înseamnă că Ethereum 2.0 ajunge la consens de către toți validatorii care stochează și actualizează informații. Este un pic ciudat, dar să te uiți în starea ta locală înseamnă să te uiți într-un singur panou cu o structură mult mai mare. Un subgrup al fractalului se actualizează constant și apare în ceva nou. Incearca-l!

Analiză financiară

În prima mea postare, am schițat cerințele materiale de bază necesare:

  • Un angajament de trei ani pentru a miza 32 ETH și a menține un nod validator
  • 32 ETH (plus <1 ETH pentru costurile de gaze)
  • 717,12 USD (preț de instanță rezervat pe trei ani pentru o instanță m5.xlarge) + 120 (costul unui an de 100 GB de stocare, presupunând conservator capacitatea de stocare aproape completă) = 837,12 USD plătit pe parcursul anului către AWS
  • Extensia MetaMask (instalare gratuită
  • Cont Infura (nivel gratuit)

Costurile AWS erau pentru un blocaj de trei ani, dar am menționat mai târziu că nu eram prea pregătit să fac asta. Și mă bucur că nu am făcut-o! Veți vedea de ce într-un moment, dar iată defalcarea mea de bază a costurilor pentru luna 31 decembrie 2020:

Costuri lunare AWS

  • Transfer de date: 8,52 USD
  • Server: 142,85 USD
  • Depozitare: 72,50 USD
  • Total: 223,87 dolari

Recompense pentru validatorul Eth2 

  • Blocuri: 5
  • Atestări: ~ 6.803
  • Recompense ETH: 0,420097728 (485,83 USD)

După cum puteți vedea probabil, un profit de 261,96 USD nu este o marjă excelentă pentru un validator. Există câteva opțiuni: acesta este un cost relativ stabil, așa că aș putea miza încă 32 ETH. Cea mai bună opțiune ar putea fi schimbarea VPS-ului pe care îl folosesc, pe care l-am menționat în prima mea postare, de fapt:

Inițial, eram încrezător că AWS este cea mai bună platformă virtuală și este serviciul pe care îl voi folosi pentru această postare și următoarea. Cu toate acestea, după ce am parcurs întregul proces, mi-am dat seama că AWS ar putea fi excesiv pentru dezvoltatorul individual. Puterea reală a AWS pare să fie capacitatea sa de a se extinde dinamic pentru a satisface cererea care are un cost premium. Acest lucru are sens economic pentru un proiect la scară largă la nivel de întreprindere, dar cerințele individuale actuale ale clienților Ethereum 2.0 nu necesită o astfel de rigoare.

Voi continua cu AWS, dar am și opțiunea de a rula o instanță pe Digital Ocean, care ar putea fi mai potrivită pentru un dezvoltator individual. 

Cred că pot obține un profit mult mai bun din rularea pe Digital Ocean și totuși nu voi avea un succes în performanța validatorului meu. Un prieten rulează o instanță de validare pe un VPS mult mai mic, care costă mai puțin o ordine de mărime și avem aceeași performanță a validatorului. 

Este minunat să experimentez cu AWS și nu regret că am capacitatea în cazul în care ceva merge lateral pe lanțul de balize. Cu toate acestea, cred că este într-adevăr minunat că dezvoltatorii Eth 2 își îndeplinesc promisiunea de a face validarea disponibilă din rețelele și setările de acasă! 

Modulațiile actuale ale prețurilor îngreunează și analiza financiară, deoarece costurile serverului sunt fixate în USD, dar recompensele sunt fluctuante. Pe termen lung, sunt foarte încrezător că recompensele mele de validare vor crește în valoare. Realizează dificil cost-beneficiu!

Pentru ultima versiune a acestei serii, voi discuta despre cum să migrați în siguranță și (sperăm) cu succes un nod Teku de la un server la altul. Problema majoră este redusă, desigur. Se pare că marea majoritate a tăierilor care au avut loc este datorită chiar acestei probleme. Vom vedea cum merge …

Dezvoltatori Ethereum 2.0 Client Ethereum Newsletter Abonați-vă la newsletter-ul nostru pentru cele mai recente știri Ethereum, soluții pentru întreprinderi, resurse pentru dezvoltatori și multe altele.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map