NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressButlletins informatius
Subscriu-te al nostre butlletí.
Correu electrònic
Respectem la vostra privadesa
IniciBlogDesenvolupadors
Com supervisar el validador Eth2 i analitzar el vostre P&L
per Coogan Brennan, 15 de gener de 2021 Publicat el 15 de gener de 2021
Si no coneixeu aquesta sèrie sobre com executar el vostre propi validador Eth2, assegureu-vos de consultar la part 1 i la part 2. Hauríeu de comprovar la de Ben Edgington Butlletí Eth2.News fo actualitzacions essencials, correcció d’errors i notícies sobre el proper full de ruta. La nostra base de coneixement d’Eth2 és útil si necessiteu més informació sobre els termes, les fases i els productes Eth2 de ConsenSys..
Introducció
Ha passat un mes i mig des que es va iniciar el gènesi de la cadena Ethereum 2.0 Beacon. Ja s’han apostat 2.515.170 ETH (uns 2.900 milions de dòlars a les taxes actuals del mercat) amb 61.561 validadors únics i altres 16.687 a la cua. Tot i l’enorme interès per apostar, en realitat ha estat un mes i mig força incessant: no hi ha hagut interrupcions importants, només unes quantes taques i participació del validador al percentil 98 la majoria de les vegades. Ara és un bon moment per respirar per fer balanç del que hem fet fins ara.
En aquesta entrada del bloc tractaré el seguiment i l’anàlisi financera del vostre validador Eth2. Ofereixo una visió general de com accedir a les mètriques de Teku, configurar les notificacions de Beaconcha.in i com consultar el node. També comparteixo la meva P actual&L avaria. A l’última entrega d’aquesta sèrie, parlaré de com migrar amb seguretat i (amb sort) un node Teku amb èxit d’un servidor a un altre.
Seguiment
En aquesta secció, us explicaré com llegir les mètriques del vostre node de validació. Executar un validador Ethereum 2.0 és executar infraestructures per a un sistema distribuït. Una part crucial del manteniment de la infraestructura és poder veure què passa. Afortunadament, Teku inclou un gran conjunt d’eines de monitoratge habilitades amb el senyalador “–metrics-enabled” a la nostra ordre d’inici, ressaltat a continuació:
ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<fort> fort> <fort>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE fort> <fort>–claus validadores = / home / ubuntu / validator_key_info / KEYSTORE-M_123456_789_ABCD.json: /home/ubuntu/validator_key_info/validator_keys/KEYSTORE-M_123456_789_ABCD.txt fort> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <fort>–base de dades-ruta = / var / lib / tekustrong>Llenguatge del codi: HTML, XML (xml)
Hem de seguir uns quants passos abans de poder llegir les dades.
Per a aquells que no executen un client de Teku: primer, per què? En segon lloc, podeu veure les mètriques mínimes proporcionades per tots els clients a Les especificacions d’Ethereum 2.0 aquí.
Instal·lació de Prometeu
En primer lloc, hem d’instal·lar-lo Prometeu, un programa de control de codi obert i Grafana, una aplicació web de codi obert d’anàlisi i visualització interactiva. Prometeu treu les dades i Grafana les mostra.
A la línia d’ordres d’Ubuntu, descarregueu l’últim Prometheus estable:
rínxol -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>Llenguatge del codi: HTML, XML (xml)
Descomprimiu el fitxer així:
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>Llenguatge del codi: HTML, XML (xml)
Mou el binari perquè estigui disponible des de la línia d’ordres:
Cd prometheus-2.23.0 Llenguatge de codis: CSS (css) sudo mv prometheus promtool / usr / local / bin /
Comproveu que s’hagi instal·lat correctament:
prometeu –versió promtool –versió
Creeu un fitxer de configuració YML de prometeu:
sudo nano prometheus.yml Llenguatge del codi: CSS (css)
Enganxeu aquests paràmetres al fitxer de configuració:
global: scrape_interval: 15s scrape_configs: – nom_treball: "prometeu" static_configs: – target: ["localhost: 9090"] – nom_ocupació: "teku-dev" scrape_timeout: 10s metrics_path: / esquema de mètriques: http static_configs: – target: ["localhost: 8008"] Llenguatge del codi: PHP (php)
Això indica a Prometeu que consulti el node Teku cada 10 segons al port 8008. Feu clic a l’ordre-X i premeu Y per desar el buffer
Ara, creem un directori per posar el nostre fitxer de configuració de Prometheus:
sudo mkdir / etc / prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Farem un altre directori per a altres fitxers Prometheus i mourem la consola i els mòduls console_libraries a / etc / prometheus
sudo mkdir / var / lib / prometheus sudo mv consoles / console_libraries / / etc / prometheus / Llenguatge del codi: JavaScript (javascript)
Crearem un usuari de prometeu per executar un servei systemd, com vam fer per Teku (llegiu més informació sobre com l’accés d’usuari basat en rols és la pràctica recomanada per a la seguretat del servidor) i donar-li accés als fitxers adequats:
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 / Idioma del codi: JavaScript (javascript)
Finalment, creeu un servei systemd que pugui executar-se en segon pla i reiniciar-se si falla:
sudo nano /etc/systemd/system/prometheus.service
En aquest fitxer (que hauria d’estar buit), introduirem una sèrie d’ordres perquè s’executi el sistema quan iniciem el servei. Copieu el següent a l’editor de text:
[Unitat] Descripció = Prometheus Wants = network-online.target After = network-online.target [Servei] Tipus = simple Usuari = prometheus Grup = prometheus Reinicia = sempre 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. biblioteques = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Instal·lar] WantedBy = multi-usuari.target Idioma del codi: JavaScript (javascript)
Escriviu command-X i, a continuació, escriviu “Y” per desar els canvis
Hem de reiniciar systemctl per actualitzar-lo:
sudo systemctl daemon-recoad
Inicieu el servei:
sudo systemctl iniciar prometheus
Comproveu que funcioni bé:
sudo systemctl estat prometheus
Si veieu algun error, obteniu més detalls executant:
sudo journalctl -f -u prometheus.service Llenguatge de codis: CSS (css)
Podeu aturar el servei Prometeu executant:
sudo systemctl stop prometheus
Instal·leu Grafana
Utilitzarem el gestor de paquets APT per a Linux per instal·lar Grafana. Això ens estalviarà una bona quantitat de treball i ens donarà el que necessitem. Seguirem els passos de la pàgina d’instal·lació de 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 -Idioma del codi: JavaScript (javascript)
Afegim el dipòsit estable de Grafana per a les actualitzacions:
ressò "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list Llenguatge de codi: PHP (php)
A continuació, executem APT:
sudo apt-get update sudo apt-get install grafana Idioma del codi: JavaScript (javascript)
El paquet ens configura un servei systemd (inclòs un grafana d’usuari), de manera que només hem d’executar:
servei sudo grafana-server inici servei sudo estat grafana-servidor estat sudo update-rc.d grafana-servidor per defecte Idioma del codi: CSS (css)
Túnel SSH
Grafana crea un tauler de control molt elegant on podem veure les nostres mètriques. Aquest tauler està disponible normalment al navegador, però com que estem executant la versió del servidor d’Ubuntu 20.04, tot és la línia d’ordres. Llavors, com accedim a Grafana?
Introduïu el túnel SSH. És el mateix protocol que fem servir per accedir a AWS des de la nostra línia d’ordres, però el configurarem per crear un port mirall al nostre equip local que es connecti a un port específic de la nostra instància d’AWS. D’aquesta manera, quan cridem el port localment, diguem obrint el navegador a http: // localhost: 3000, realment estem veient el port 3000 a la nostra instància AWS.
Per fer-ho correctament, necessitareu la vostra clau SSH per a AWS i la informació IP d’AWS. També heu de saber a quin port voleu connectar-vos. En aquest cas, sabem que la nostra instància de Grafana s’executa al port 3000, de manera que les instruccions de la línia d’ordres tindran aquesta estructura genèrica:
ssh -N -L 3000: localhost: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"ubuntu@INSTANCE_IDENTIFIER.compute-ZONE.amazonaws.com Idioma del codi: CSS (css)
Això ens permet anar a http: // localhost: 3000 a la nostra màquina local i veure el nostre tauler de Grafana. Però encara no en tenim cap, de manera que hem de fer el següent:
Afegiu Prometeu com a font de dades:
Aneu a “Afegeix una font de dades nova”
Feu clic a “Prometeu” al menú desplegable
Feu clic a “Desa i prova”
Feu clic a + al menú de l’esquerra i seleccioneu “importa el tauler”
Afegeix l’identificador de Teku Grafana: 13457
I, bada-bing! Tenim el nostre tauler, visible des de la comoditat del nostre propi navegador:
Aplicació Beaconcha.in
El tauler de Grafana és excel·lent i Prometheus emmagatzema informació per a nosaltres. Tot i això, hi ha altres opcions per comprovar l’estat del validador.
He estat utilitzant Aplicació mòbil Beaconcha.in Dashboard per a Android. És una interfície senzilla, que està bé perquè no és el meu servei de supervisió principal. Em permet mirar ràpidament el meu telèfon per comprovar l’estat del validador i em proporciona notificacions si hi ha algun problema amb el validador.
Introduïu l’adreça del validador que voleu veure i ja és pràcticament tot. Una vegada més, no un control intensiu (això és el que proporciona el feed Grafana Teku). Però està bé, ja que un servei secundari i binari “el validador funciona o no”:
Consulta del node
Una altra manera de “supervisar” el nostre client validador d’Ethereum és consultar-lo. Igual que un client Ethereum 1.0, el nostre client validador d’Ethereum emmagatzema i manté un estat mundial. És molt més petit en comparació amb Ethereum 1.0, però continua sent dades en cadena emmagatzemades i mantingudes pel vostre client de validació.
Es tracta de les mateixes dades consumides pel flux de treball Prometheus / Grafana. Simplement ens estem apropant al metall (pràcticament parlant) consultant nosaltres mateixos el node. Aquí teniu una mostra de les dades disponibles (llista completa aquí):
- Informació de la cadena de balises (bloc de gènesi, capçaleres de bloc i arrel, etc.)
- Informació del validador (llista de validadors, saldo del validador, responsabilitats del validador, etc.)
- Informació del node (estat general, llista d’iguals, etc.)
CURL
La primera manera de fer-ho és des de la línia d’ordres. Quan vam iniciar Teku, vam afegir la bandera –rest-api-enabled = true. Això obre un punt final de l’API al port per defecte de 5051 (podeu especificar un altre port mitjançant el senyalador –rest-api-port =). Podeu comprovar que el port està obert executant sudo lsof -i -P -n | grep ESCOLTA.
Un cop hàgiu confirmat que Teku obre el port 5051, l’utilitzarem CURL enviar DESCANS crida al punt final de l’API Teku a http: // localhost: 5051. Per exemple, aquí teniu la manera de comprovar el saldo del validador de millor rendiment (segons Beaconcha.in):
curl -X GET "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5"Llenguatge del codi: PHP (php)
Aquí teniu la resposta que vaig obtenir a mitjans de gener de 2021 (a Gwei):
{"dades": [{"índex":"4966","equilibri":"32607646851"}]} Idioma del codi: JSON / JSON amb comentaris (json)
Proveu qualsevol dels mètodes activats la pàgina de documents de l’API Teku utilitzant el format a la part inferior d’aquesta pàgina:
curl -X [REST_METHOD] “API_CALL_IN_QUOTES” Idioma del codi: CSS (css)
Swagger IU
Hi ha una interfície gràfica bàsica per a les trucades API que Teku proporciona quan s’afegeix el senyalador –rest-api-docs-enabled = true a les ordres d’inici. Està construït sobre swagger-ui i és al port 5051 per defecte i podem utilitzar túnels SSH per accedir-hi. Seguiu els mateixos passos de túnel SSH des de dalt però amb 5051 que el port:
ssh -N -L 5051: localhost: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" ubuntu@INSTANCE_IDENTIFIER.compute-ZONE.amazonaws.com Idioma del codi: CSS (css)
Des del navegador del nostre ordinador, podem navegar a http: // localhost: 5051 / swagger-ui, que té aquest aspecte a la meva màquina:
L’estat i el consens mundial són una cosa que sorgeix a totes les cadenes de blocs públiques. Això significa que Ethereum 2.0 arriba a un consens per part de tots els validadors que emmagatzemen i actualitzen informació. És una mica nerd, però mirar el vostre estat local és mirar una sola subfinestra d’una estructura molt més gran. Un subconjunt del fractal s’actualitza constantment i emergeix en alguna cosa nova. Intenta-ho!
Anàlisi financera
A la meva primera publicació, vaig esbossar els requisits bàsics de material necessaris:
- Un compromís de tres anys per apostar per 32 ETH i mantenir un node de validació
- 32 ETH (més <1 ETH pels costos del gas)
- 717,12 dòlars (preu de la instància reservada de tres anys per a una instància m5.xlarge) + 120 (cost d’un any de 100 GB d’emmagatzematge, assumint de manera conservadora la capacitat d’emmagatzematge gairebé completa) = 837,12 dòlars pagats al llarg de l’any a AWS
- Extensió MetaMask (instal·lació gratuïta)
- Compte Infura (nivell lliure)
Els costos d’AWS corresponen a un bloqueig de tres anys, però vaig esmentar més tard que no estava del tot preparat per fer-ho. I m’alegro de no fer-ho! Veureu per què en un moment, però aquí teniu el meu detall bàsic de costos per al 31 de desembre de 2020:
Costos mensuals d’AWS
- Transferència de dades: 8,52 dòlars
- Servidor: 142,85 dòlars
- Emmagatzematge: 72,50 $
- Total: 223,87 dòlars
Recompenses del validador Eth2
- Blocs: 5
- Atestacions: ~ 6.803
- Recompenses ETH: 0,420097728 (485,83 USD)
Com és probable que vegeu, els beneficis de 261,96 dòlars no són un gran diferencial per a un validador. Hi ha un parell d’opcions: es tracta d’un cost relativament estable, de manera que podria apostar per altres 32 ETH. La millor opció pot ser canviar el VPS que faig servir, que he esmentat a la meva primera publicació, en realitat:
Al principi, confiava que AWS era la millor plataforma virtual i que seria el servei que faré servir per a aquesta publicació i la següent. Tanmateix, després d’haver passat tot el procés, em vaig adonar que AWS podria ser excessiu per al desenvolupador individual. La força real d’AWS sembla ser la seva capacitat per augmentar dinàmicament per satisfer la demanda que comporta un cost superior. Això té un sentit econòmic per a un projecte a gran escala a nivell empresarial, però els requisits actuals individuals del client Ethereum 2.0 no requereixen aquest rigor.
Continuaré amb AWS, però també entretindré l’opció d’executar una instància a Digital Ocean, que pot ser més adequada per a un desenvolupador individual.
Crec que puc obtenir un benefici molt millor en funcionar a Digital Ocean i, tot i així, no tinc cap èxit en el rendiment del meu validador. Un amic està executant una instància de validador en un VPS molt més petit que costa un ordre de magnitud inferior i tenim el mateix rendiment del validador.
És fantàstic experimentar amb AWS i no em penedeixo de tenir la capacitat per si alguna cosa va de costat a la cadena de balises. Tot i això, crec que sí realment fantàstic que els desenvolupadors d’Eth 2 compleixin la promesa de fer que la validació estigui disponible des de xarxes i configuracions domèstiques!
Les modulacions de preus actuals també dificulten l’anàlisi financera, ja que els costos del servidor es fixen en USD, però les recompenses són fluctuants. A llarg termini, estic molt segur que les meves recompenses de validació augmentaran de valor. Això fa que el cost-benefici sigui complicat!
Per a l’última entrega d’aquesta sèrie, parlaré de com migrar amb seguretat i (amb sort) un node Teku amb èxit d’un servidor a un altre. El principal problema és reduir-se, és clar. Sembla que la gran majoria de talls que s’han produït ho són degut a aquest mateix problema. Veurem com va …
Desenvolupadors Ethereum 2.0 Newsletter del client Ethereum Subscriviu-vos al nostre butlletí per obtenir les últimes novetats, solucions empresarials, recursos per a desenvolupadors i molt més sobre Ethereum.