NewsDevelopersEnterpriseBlockchain ObjašnjeniDogađaji i konferencijePressBilteni
Pretplatite se na naše obavijesti.
Email adresa
Poštujemo vašu privatnost
HomeBlogDevelopers
Kako nadzirati vaš Eth2 Validator i analizirati svoj P&L
Coogan Brennan 15. siječnja 2021. Objavljeno 15. siječnja 2021
Ako ste novi u ovoj seriji kako pokrenuti vlastiti validator Eth2, provjerite 1. i 2. dio. Trebali biste provjeravati Ben Edgington’s Eth2.News bilten fili bitna ažuriranja, ispravci programskih pogrešaka i vijesti o predstojećem planu. Naša Baza znanja Eth2 korisna je ako trebate više informacija o ključnim pojmovima, fazama i ConsenSysovim Eth2 proizvodima.
Uvod
Prošlo je mjesec i pol dana otkako je započela generacija lanca Ethereum 2.0 Beacon. Već je uloženo 2.515.170 ETH (oko 2,9 milijardi USD po trenutnim tržišnim cijenama) s 61.561 jedinstvenim validatorima i još 16.687 koji čekaju u redu. Unatoč ogromnom zanimanju za ulog, zapravo je prošlo prilično neugodnih mjesec i pol: Nije bilo većih poremećaja, samo nekoliko rezanja i sudjelovanje validatora u 98. percentilu većinu vremena. Sada je dobro vrijeme da udahnemo da bismo saželi ono što smo do sada učinili.
U ovom postu na blogu pokrivat ću nadzor i financijsku analizu vašeg validatora Eth2. Dajem pregled o tome kako pristupiti mjernim podacima Teku, postaviti obavijesti Beaconcha.in i kako postaviti upit za čvor. Također dijelim svoj trenutni P&L slom. U posljednjem dijelu ove serije raspravit ću o tome kako sigurno i (nadam se) uspješno migrirati Teku čvor s jednog poslužitelja na drugi.
Praćenje
U ovom ću odjeljku prolaziti kroz čitanje mjernih podataka čvora vašeg validatora. Pokretanje programa za provjeru valjanosti Ethereum 2.0 pokreće infrastrukturu za distribuirani sustav. Ključni dio održavanja infrastrukture je mogućnost vidjeti što se događa. Srećom, Teku dolazi sa sjajnim paketom alata za praćenje koji su omogućeni s zastavicom „-metrics-enabled“ na našoj naredbi za pokretanje, istaknutom u nastavku:
ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<jaka> jaka> <jaka>–eth1-krajnja točka = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE jaka> <jaka>–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 jak> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <jaka>–baza podataka-put = / var / lib / tekustrong>Jezik koda: HTML, XML (xml)
Moramo slijediti nekoliko koraka prije nego što uspijemo pročitati podatke.
Za one koji ne vode Teku klijenta: Prvo, zašto? Drugo, možete vidjeti minimalne mjerne podatke koje pružaju svi klijenti u Specifikacije Ethereuma 2.0 ovdje.
Instaliranje Prometeja
Prvo, moramo instalirati Prometej, program praćenja otvorenog koda i Grafana, web aplikacija za analitiku i interaktivnu vizualizaciju otvorenog koda. Prometej povlači podatke, a Grafana ih prikazuje.
Na vaš Ubuntu naredbeni redak preuzmite najnoviji stabilni Prometheus:
uvojak -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>Jezik koda: HTML, XML (xml)
Dekomprimirajte datoteku ovako:
katran -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>Jezik koda: HTML, XML (xml)
Premjestite binarnu datoteku tako da bude dostupna iz naredbenog retka:
Cd prometheus-2.23.0 Jezik koda: CSS (css) sudo mv prometheus promtool / usr / local / bin /
Provjerite je li pravilno instaliran:
prometheus –verzija promtool –verzija
Stvorite prometheus YML konfiguracijsku datoteku:
sudo nano prometheus.ymlKod jezika: CSS (css)
Zalijepite ove parametre u konfiguracijsku datoteku:
global: scrape_interval: 15s scrape_configs: – job_name: "Prometej" static_configs: – ciljevi: ["lokalnihost: 9090"] – naziv_posla: "teku-dev" scrape_timeout: 10s metrics_path: / shema mjernih podataka: http static_configs: – target: ["lokalnihost: 8008"] Jezik koda: PHP (php)
To nalaže Prometheusu da anketira vaš Teku čvor svakih 10 sekundi na portu 8008. Pritisnite naredbu-X i pritisnite Y za spremanje međuspremnika
Sada, kreirajmo direktorij za stavljanje naše konfiguracijske datoteke Prometheus:
sudo mkdir / etc / prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Napravit ćemo još jedan direktorij za druge Prometheus datoteke i premjestiti module console i console_libraries u / etc / prometheus
sudo mkdir / var / lib / prometheus sudo mv konzole / console_libraries / / etc / prometheus / jezik koda: JavaScript (javascript)
Stvorit ćemo korisnika prometheusa za pokretanje systemd usluge, kao što smo to učinili za Teku (ovdje pročitajte više o tome kako je pristup korisnika temeljen na ulogama najbolja praksa za sigurnost poslužitelja) i omogućite mu pristup odgovarajućim datotekama:
sudo useradd –no-create-home –ljuska / bin / lažni prometheus sudo chown -R prometheus: prometheus / var / lib / prometheus sudo chown -R prometheus: prometheus / etc / prometheus sudo chown -R prometheus: prometheus / usr / local / bin / Jezik koda: JavaScript (javascript)
Na kraju, stvorite systemd uslugu koja može raditi u pozadini i ponovo se pokrenuti ako ne uspije:
sudo nano /etc/systemd/system/prometheus.service
U ovu datoteku (koja bi trebala biti prazna) stavit ćemo niz naredbi koje će systemd izvršavati kad pokrenemo uslugu. Kopirajte sljedeće u uređivač teksta:
[Jedinica] Opis = Prometheus Wants = network-online.target After = network-online.target [Service] Type = simple User = prometheus Group = prometheus Restart = always 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. knjižnice = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Install] WantedBy = multi-user.targetCode jezik: JavaScript (javascript)Upišite command-X, a zatim upišite “Y” da biste spremili promjene
Moramo ponovno pokrenuti systemctl da bismo ga ažurirali:
sudo systemctl daemon-reload
Pokrenite uslugu:
sudo systemctl start prometheus
Provjerite radi li dobro:
sudo systemctl status prometheus
Ako vidite pogreške, potražite više detalja pokretanjem:
sudo journalctl -f -u prometheus.service Jezik koda: CSS (css)
Uslugu Prometheus možete zaustaviti pokretanjem:
sudo systemctl zaustaviti prometheus
Instalirajte Grafana
Upotrijebit ćemo APT upravitelj paketa za Linux za instalaciju Grafane. To će nam uštedjeti dobru količinu posla i pružiti ono što nam treba. Slijedit ćemo korake sa stranice za instalaciju Grafane:
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 -Kod jezika: JavaScript (javascript)
Dodamo stabilno spremište Grafana za ažuriranja:
jeka "deb https://packages.grafana.com/oss/deb stabilna glavna" | sudo tee -a /etc/apt/sources.list.d/grafana.list Jezik koda: PHP (php)
Zatim pokrećemo APT:
sudo apt-get update sudo apt-get install grafana Jezik koda: JavaScript (javascript)
Paket nam postavlja sistemsku uslugu (uključujući korisničku grafanu), tako da samo trebamo pokrenuti:
sudo servis grafana-server start sudo service grafana-server status sudo update-rc.d grafana-server zadane postavke Jezik koda: CSS (css)
Tuneliranje SSH-a
Grafana stvara vrlo glatku nadzornu ploču na kojoj možemo pregledavati naše mjerne podatke. Ta je nadzorna ploča obično dostupna u pregledniku, ali budući da pokrećemo poslužiteljsku verziju Ubuntu 20.04, sve je to naredbeni redak. Pa kako pristupiti Grafani?
Uđite u SSH tuneliranje. To je isti protokol koji koristimo za pristup AWS-u s našeg naredbenog retka, ali postavit ćemo ga pa ćemo stvoriti zrcalni priključak na našem lokalnom računalu koji se povezuje s određenim priključkom na našoj AWS instanci. Na taj način, kada lokalno pozovemo port, recimo tako da otvorimo preglednik na http: // localhost: 3000, zapravo gledamo port 3000 na našoj AWS instanci.
Da biste to učinili ispravno, trebat će vam vaš SSH ključ za AWS i informacije o AWS IP-u. Također morate znati na koji se port želite povezati. U ovom slučaju znamo da se naša instanca Grafana izvodi na portu 3000, tako da će upute naredbenog retka imati ovu generičku strukturu:
ssh -N -L 3000: localhost: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"ubuntu@INSTANCE_IDENTIFIER.compute-ZONE.amazonaws.com Jezik koda: CSS (css)
To nam omogućuje da idemo na http: // localhost: 3000 na našem lokalnom stroju i pogledajte našu Grafana nadzornu ploču. Ali još ga nemamo, pa moramo učiniti sljedeće:
Dodajte Prometej kao izvor podataka:
Idite na “dodaj novi izvor podataka”
Na padajućem izborniku kliknite “Prometej”
Kliknite “Spremi i testiraj”
Kliknite + na lijevom izborniku i odaberite “uvoz nadzorne ploče”
Dodajte Teku Grafana ID: 13457
I, bada-bing! Imamo svoju nadzornu ploču, vidljivu iz udobnosti vlastitog preglednika:
Beaconcha.in App
Nadzorna ploča Grafana izvrsna je i Prometheus pohranjuje informacije za nas. Međutim, postoje i druge mogućnosti za provjeru statusa validatora.
Koristim Beaconcha.in Dashboard mobilna aplikacija za Android. To je jednostavno sučelje, što je u redu jer mi nije primarna usluga praćenja. Omogućuje mi brz pogled na telefon kako bih provjerio status validatora i pruža obavijesti ako s validatorom nešto nije u redu.
Unesete adresu validatora koju želite gledati i to je poprilično to! Opet, ne praćenje teških uvjeta (to je ono što pruža feed Grafana Teku). Ali to je u redu kao sekundarna usluga i binarno “funkcionira li validator ili ne”:
Upit o čvoru
Drugi način za “nadgledanje” našeg Ethereum klijenta za provjeru valjanosti je postavljanje upita! Poput klijenta Ethereum 1.0, naš klijent za provjeru valjanosti Ethereum sprema i održava svjetsko stanje. Puno je manji u odnosu na Ethereum 1.0, ali svejedno podatke na lancu pohranjuje i održava vaš klijent za provjeru valjanosti.
To su isti podaci koje koristi protok rada Prometheus / Grafana. Jednostavno se približavamo metalu (virtualno govoreći) samim upitom čvora. Evo uzorka dostupnih podataka (cijeli popis ovdje):
- Informacije o lancu svjetionika (blok geneze, zaglavlja i korijen bloka itd.)
- Informacije o validatoru (popis validatora, stanje valjanosti, odgovornosti validatora, itd.)
- Informacije o čvorovima (cjelokupno zdravstveno stanje, popis vršnjaka itd.)
kovrča
Prvi način da to učinite je iz naredbenog retka. Kada smo pokrenuli Teku, dodali smo zastavicu –rest-api-enabled = true. Ovo otvara API krajnju točku na zadanom priključku 5051 (možete odrediti drugi priključak pomoću zastavice –rest-api-port =). Možete još jednom provjeriti je li vaša luka otvorena pokretanjem sudo lsof -i -P -n | grep SLUŠAJ.
Kad potvrdite da je Teku otvorio port 5051, mi ćemo ga koristiti kovrča poslati ODMOR poziva na Teku API krajnju točku na http: // localhost: 5051. Na primjer, ovdje je način na koji provjeravamo stanje validatora s najboljom izvedbom (prema Beaconcha.in):
uvojak -X GET "http: // localhost: 5051 / eth / v1 / beacon / States / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daeda6d6c268"Kodni jezik: PHP (php)
Evo odgovora koji sam dobio sredinom siječnja 2021. (u Gweiju):
{"podaci": [{"indeks":"4966","ravnoteža":"32607646851"}]} Jezik koda: JSON / JSON s komentarima (json)
Isprobajte bilo koju od metoda na stranica dokumenata Teku API koristeći format na dnu ove stranice:
curl -X [REST_METHOD] “API_CALL_IN_QUOTES” Jezik koda: CSS (css)
Swagger korisničko sučelje
Postoji osnovno grafičko korisničko sučelje za API pozive koje Teku pruža kada se zastava –rest-api-docs-enabled = true doda u naredbe za pokretanje. Izgrađeno je na razmetanje-ui i prema zadanim je postavkama na portu 5051, a za pristup možemo koristiti SSH tuneliranje. Slijedite iste korake SSH tuneliranja odozgo, ali s 5051 kao port:
ssh -N -L 5051: localhost: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" ubuntu@INSTANCE_IDENTIFIER.compute-ZONE.amazonaws.com Jezik koda: CSS (css)
Iz preglednika na našem računalu tada možemo doći do http: // localhost: 5051 / swagger-ui, što izgleda ovako na mom stroju:
Svjetska država i konsenzus nešto je što se pojavljuje u svim javnim blockchainima. To znači da Ethereum 2.0 postiže konsenzus svih validatora koji pohranjuju i ažuriraju informacije. Pomalo je štreber, ali zaviriti u svoju lokalnu državu znači zaviriti u jedno okno puno veće strukture. Podskup fraktala koji se neprestano nadograđuje i prerasta u nešto novo. Probaj!
Financijska analiza
U svom prvom postu skicirao sam osnovne potrebne materijalne zahtjeve:
- Trogodišnja predanost ulaganju 32 ETH i održavanju čvora validatora
- 32 ETH (plus <1 ETH za troškove plina)
- 717,12 američkih dolara (trogodišnja cijena rezervirane instance za m5.xlarge primjerak) + 120 (jednogodišnji trošak od 100 GB prostora za pohranu, konzervativno pretpostavljajući gotovo puni kapacitet) = 837,12 američkih dolara plaćenih tijekom godine AWS-u
- Proširenje MetaMask (besplatna instalacija)
- Infura račun (slobodni sloj)
Troškovi AWS-a odnosili su se na trogodišnje zaključavanje, ali kasnije sam spomenuo da nisam bio baš spreman za to. I drago mi je da nisam! Za trenutak ćete vidjeti zašto, ali evo moje osnovne podjele troškova za mjesec 31. prosinca 2020:
Mjesečni troškovi AWS-a
- Prijenos podataka: 8,52 USD
- Poslužitelj: 142,85 USD
- Pohrana: 72,50 USD
- Ukupno: 223,87 USD
Nagrade za provjeru valjanosti Eth2
- Blokovi: 5
- Ovjere: ~ 6.803
- ETH nagrade: 0,420097728 (485,83 USD)
Kao što vjerojatno možete vidjeti, dobit od 261,96 USD nije sjajno širenje za jedan validator. Postoji nekoliko mogućnosti: Ovo je relativno stabilan trošak, pa bih mogao uložiti još 32 ETH. Bolja opcija mogla bi biti promjena VPS-a koji koristim, a koji sam spomenula u svom prvom postu, zapravo:
U početku sam bio uvjeren da je AWS najbolja virtualna platforma i to je usluga koju ću koristiti za ovaj i sljedeći post. Međutim, nakon što sam prošao cijeli postupak, shvatio sam da bi AWS mogao biti pretjeran za pojedinog programera. Čini se da je stvarna snaga AWS-a njegova sposobnost dinamičkog povećanja kako bi se udovoljilo potražnji koja ima visoku cijenu. To ima ekonomskog smisla za veliki projekt na razini poduzeća, ali pojedinačni trenutni zahtjevi klijenta za Ethereum 2.0 ne zahtijevaju takvu strogost.
Nastavit ću s AWS-om, ali također zabavljam mogućnost pokretanja primjerka na Digital Oceanu, što bi moglo biti prikladnije za pojedinog programera.
Mislim da mogu ostvariti puno veću zaradu od rada na Digital Oceanu, a da ipak ne postignem pogodak u radu svoje validatora. Prijatelj pokreće instancu validatora na puno manjem VPS-u koji košta red veličine i imamo iste performanse validatora.
Izvrsno je eksperimentirati s AWS-om i ne žalim što imam kapacitet u slučaju da nešto krene postrance na lancu svjetionika. Međutim, mislim da je stvarno sjajno što Eth 2 razvijalci ispunjavaju obećanje da će provjeru valjanosti učiniti dostupnom iz kućnih mreža i postava!
Trenutne modulacije cijena također otežavaju financijsku analizu, jer su troškovi poslužitelja fiksni u američkim dolarima, ali nagrade variraju. Dugoročno, vrlo sam uvjeren da će moje nagrade za validator povećati vrijednost. Čini isplativost i isplativost!
Za posljednji dio ove serije raspravit ću o tome kako sigurno i (nadam se) uspješno migrirati Teku čvor s jednog poslužitelja na drugi. Glavno pitanje se, naravno, smanjuje. Čini se da je velika većina košenja koja su se dogodila upravo zbog ovog problema. Vidjet ćemo kako će dalje ići …
DevelopersEthereum 2.0Ethereum ClientNewsletterPretplatite se na naše biltene za najnovije vijesti o Ethereumu, rješenja za poduzeća, resurse za programere i još mnogo toga. Adresa e-pošte