Eth2 Validator를 모니터링하고 P & L을 분석하는 방법

블로그 1뉴스 개발자 엔터프라이즈 블록 체인 설명 이벤트 및 컨퍼런스 보도 자료뉴스 레터

뉴스 레터 구독.

이메일 주소

우리는 귀하의 개인 정보를 존중합니다

홈 블로그 개발자

Eth2 Validator를 모니터링하고 P를 분석하는 방법&엘

작성자 : Coogan Brennan 1 월 15, 2021 게시일 : 1 월 15, 2021

이더 리움에서 검증자가되기위한 나의 여정 2 0 파트 3

자신의 Eth2 유효성 검사기를 실행하는 방법에 대한이 시리즈를 처음 접하는 경우 Part 1과 Part 2를 확인하십시오. 모두 Ben Edgington의 Eth2.News 뉴스 레터 f또는 향후 로드맵에 대한 필수 업데이트, 버그 수정 및 뉴스. Eth2 Knowledge Base는 주요 용어, 단계 및 ConsenSys의 Eth2 제품에 대한 배경 지식이 더 필요한 경우 유용합니다..

소개 

Ethereum 2.0 Beacon 체인 생성이 시작된 지 한 달 반이 지났습니다. 이미 2,515,170 개의 ETH가 61,561 개의 고유 한 검증 인과 16,687 명의 대기자로 대기하고 있습니다 (현재 시장 가격으로 약 29 억 달러). 스테이 킹에 대한 엄청난 관심에도 불구하고 실제로 한 달 반이 지났습니다. 큰 중단은 없었습니다. 약간의 베기대부분의 경우 98 번째 백분위 수에 검증 인 참여. 지금까지 우리가 한 일을 살펴볼 수있는 좋은 시간입니다.. 

이 블로그 게시물에서는 Eth2 유효성 검사기의 모니터링 및 재무 분석을 다룰 것입니다. Teku 메트릭에 액세스하고, Beaconcha.in 알림을 설정하고, 노드를 쿼리하는 방법에 대한 개요를 제공합니다. 나는 또한 나의 현재 P를 공유합니다&L 고장. 이 시리즈의 마지막 기사에서는 Teku 노드를 한 서버에서 다른 서버로 안전하고 성공적으로 마이그레이션하는 방법에 대해 논의 할 것입니다..

모니터링

이 섹션에서는 유효성 검사기 노드의 측정 항목을 읽는 방법을 살펴 보겠습니다. Ethereum 2.0 유효성 검사기를 실행하는 것은 분산 시스템을위한 인프라를 실행하는 것입니다. 인프라 유지 관리의 중요한 부분은 진행 상황을 파악하는 것입니다. 운 좋게도 Teku에는 시작 명령에 “–metrics-enabled”플래그가 활성화 된 훌륭한 모니터링 도구 모음이 함께 제공됩니다.

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<강한> 강한> <강한>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE 강력> <강한>–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 strong> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <강한>–데이터베이스 경로 = / var / lib / tekustrong>코드 언어 : HTML, XML (xml)

데이터를 읽을 수 있으려면 몇 단계를 거쳐야합니다..

Teku 클라이언트를 실행하지 않는 경우 : 첫째, 왜? 둘째, 모든 클라이언트가 제공하는 최소 메트릭을 볼 수 있습니다. 여기에 Ethereum 2.0 사양.

Prometheus 설치

먼저 설치해야합니다. 프로 메테우스, 오픈 소스 모니터링 프로그램 Grafana, 오픈 소스 분석 및 대화 형 시각화 웹 앱입니다. Prometheus가 데이터를 가져오고 Grafana가이를 표시합니다..

Ubuntu 명령 줄에서 안정적인 최신 Prometheus를 다운로드합니다.

컬 -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>코드 언어 : HTML, XML (xml)

다음과 같이 파일의 압축을 풉니 다.

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>코드 언어 : HTML, XML (xml)

바이너리를 명령 줄에서 사용할 수 있도록 이동합니다.

CD prometheus-2.23.0 코드 언어 : CSS (css) sudo mv prometheus promtool / usr / local / bin /

올바르게 설치되었는지 확인하십시오.

prometheus –version promtool –version

prometheus YML 구성 파일을 만듭니다.

sudo nano prometheus.yml 코드 언어 : CSS (css)

다음 매개 변수를 구성 파일에 붙여 넣으십시오.

글로벌 : scrape_interval : 15 초 scrape_configs :-작업 _ 이름 : "프로 메테우스" static_configs :-대상 : ["localhost : 9090"] – 직업 이름: "teku-dev" scrape_timeout : 10s metrics_path : / metrics 스키마 : http static_configs :-대상 : ["localhost : 8008"] 코드 언어 : PHP (php)

이렇게하면 Prometheus가 8008 포트에서 10 초마다 Teku 노드를 폴링하도록 지시합니다. command-X를 누르고 Y를 눌러 버퍼를 저장하십시오.

이제 Prometheus 구성 파일을 저장할 디렉터리를 만들어 보겠습니다.

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

다른 Prometheus 파일을위한 다른 하나의 디렉토리를 만들고 console 및 console_libraries 모듈을 / etc / prometheus로 이동합니다.

sudo mkdir / var / lib / prometheus sudo mv consoles / console_libraries / / etc / prometheus / 코드 언어 : JavaScript (javascript)

Teku에서했던 것처럼 시스템화 된 서비스를 실행하기 위해 prometheus 사용자를 만들 것입니다 (여기에서 역할 기반 사용자 액세스가 서버 보안을위한 모범 사례에 대해 자세히 알아보십시오.) 적절한 파일에 대한 액세스 권한을 부여하십시오.

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 / 코드 언어 : JavaScript (자바 스크립트)

마지막으로 백그라운드에서 실행될 수있는 systemd 서비스를 만들고 실패 할 경우 자체적으로 다시 시작합니다.

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

이 파일 (비어 있어야 함)에는 서비스를 시작할 때 systemd가 실행할 일련의 명령을 입력합니다. 다음을 텍스트 편집기에 복사하십시오.

[단위] 설명 = Prometheus Wants = network-online.target After = network-online.target [서비스] 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. 라이브러리 = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0 : 9090 \ [설치] WantedBy = multi-user.targetCode 언어 : JavaScript (자바 스크립트)

command-X를 입력 한 다음 “Y”를 입력하여 변경 사항을 저장합니다.

업데이트하려면 systemctl을 다시 시작해야합니다.

sudo systemctl 데몬 다시로드

서비스 시작 :

sudo systemctl start prometheus

제대로 실행되고 있는지 확인합니다.

sudo systemctl 상태 프로 메테우스

오류가 표시되면 다음을 실행하여 자세한 내용을 확인하세요.

sudo journalctl -f -u prometheus.service 코드 언어 : CSS (css)

다음을 실행하여 Prometheus 서비스를 중지 할 수 있습니다.

sudo systemctl stop prometheus

Grafana 설치

Linux 용 APT 패키지 관리자를 사용하여 Grafana를 설치하겠습니다. 이것은 우리에게 많은 양의 작업을 절약하고 우리에게 필요한 것을 줄 것입니다. 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-코드 언어 : JavaScript (javascript)

업데이트를 위해 안정적인 Grafana 저장소를 추가합니다.

에코 "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list 코드 언어 : PHP (php)

그런 다음 APT를 실행합니다.

sudo apt-get 업데이트 sudo apt-get install grafanaCode language : JavaScript (javascript)

패키지는 우리를 위해 시스템화 된 서비스 (사용자 grafana 포함)를 설정하므로 다음을 실행하기 만하면됩니다.

sudo service grafana-server start sudo service grafana-server status sudo update-rc.d grafana-server defaults 코드 언어 : CSS (css)

SSH 터널링

Grafana는 메트릭을 볼 수있는 매우 매끄러운 대시 보드를 만듭니다. 이 대시 보드는 일반적으로 브라우저에서 사용할 수 있지만 Ubuntu 20.04의 서버 버전을 실행하고 있으므로 모두 명령 줄입니다. 그래서 Grafana에 어떻게 액세스합니까??

SSH 터널링을 입력하십시오. 명령 줄에서 AWS에 액세스하는 데 사용하는 것과 동일한 프로토콜이지만 로컬 컴퓨터에서 AWS 인스턴스의 특정 포트에 연결하는 미러 포트를 만들도록 설정하겠습니다. 이렇게하면 로컬에서 포트를 호출 할 때 브라우저를 열어 http : // localhost : 3000, 실제로 AWS 인스턴스의 3000 포트를보고 있습니다..

이 작업을 제대로 수행하려면 AWS 용 SSH 키와 AWS IP 정보가 필요합니다. 또한 연결하려는 포트를 알아야합니다. 이 경우 Grafana 인스턴스가 포트 3000에서 실행되고 있음을 알고 있으므로 명령 줄 지침은 다음과 같은 일반적인 구조를 갖습니다.

ssh -N -L 3000 : 로컬 호스트 : 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.com 코드 언어 : CSS (css)

이것은 우리가 http : // localhost : 3000 로컬 컴퓨터에서 Grafana 대시 보드를 확인하세요. 하지만 아직 계정이 없으므로 다음을 수행해야합니다.

Prometheus를 데이터 소스로 추가합니다.

“새 데이터 소스 추가”로 이동

드롭 다운에서 “Prometheus”를 클릭합니다.

“저장 및 테스트”를 클릭합니다.

왼쪽 메뉴에서 +를 클릭하고 “대시 보드 가져 오기”를 선택합니다.

Teku Grafana ID 추가 : 13457

그리고 바다 빙! 자체 브라우저에서 편안하게 볼 수있는 대시 보드가 있습니다.

Beaconcha.in 앱

Grafana 대시 보드는 훌륭하며 Prometheus는 우리를 위해 정보를 저장하고 있습니다. 그러나 유효성 검사기 상태를 확인하는 다른 옵션이 있습니다..

나는 사용하고있다 Beaconcha.in Dashboard 모바일 앱 for Android. 간단한 인터페이스입니다. 기본 모니터링 서비스가 아니므로 괜찮습니다. 휴대 전화를 빠르게 한눈에 확인하여 유효성 검사기 상태를 확인하고 유효성 검사기에 문제가있는 경우 알림을 제공합니다..

보고 싶은 검증 인 주소를 입력하면 거의 다 끝났습니다! 다시 말하지만, 강력한 모니터링이 아닙니다 (Grafana Teku 피드가 제공하는 것입니다). 그러나 보조 서비스 및 바이너리 “검증 기가 작동하는지 여부”는 괜찮습니다.

노드 쿼리

Ethereum 유효성 검사기 클라이언트를 “모니터링”하는 또 다른 방법은 쿼리하는 것입니다! Ethereum 1.0 클라이언트와 마찬가지로 Ethereum 유효성 검사기 클라이언트는 세계 상태를 저장하고 유지합니다. Ethereum 1.0에 비해 훨씬 작지만 여전히 유효성 검사기 클라이언트에 의해 저장되고 유지되는 온 체인 데이터입니다.. 

이는 Prometheus / Grafana 워크 플로에서 사용하는 것과 동일한 데이터입니다. 우리는 노드를 직접 쿼리함으로써 (가상적으로 말해서) 금속에 더 가까워지고 있습니다. 다음은 사용 가능한 데이터의 샘플입니다 (여기에 전체 목록) :

  • 비콘 체인 정보 (생성 블록, 블록 헤더 및 루트 등)
  • 검증 인 정보 (검증 인 목록, 검증 인 잔액, 검증 인 책임 등)
  • 노드 정보 (전체 상태, 피어 목록 등)

곱슬 곱슬하다

이를 수행하는 첫 번째 방법은 명령 줄을 사용하는 것입니다. Teku를 시작할 때 –rest-api-enabled = true 플래그를 추가했습니다. 그러면 기본 포트 인 5051에서 API 엔드 포인트가 열립니다 (–rest-api-port = 플래그를 사용하여 다른 포트를 지정할 수 있음). sudo lsof -i -P -n |을 실행하여 포트가 열려 있는지 다시 확인할 수 있습니다. grep 듣기.

Teku에서 포트 5051이 열려 있음을 확인하면 곱슬 곱슬하다 보내다 쉬다 Teku API 끝점에 대한 호출 http : // localhost : 5051. 예를 들어, Beaconcha.in에 따라 실적이 가장 우수한 유효성 검사기의 잔액을 확인하는 방법은 다음과 같습니다.

컬 -X GET "http : // localhost : 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5"코드 언어 : PHP (php)

다음은 2021 년 1 월 중순 (Gwei에서)에 대한 답변입니다. 

{"데이터": [{"인덱스":"4966","밸런스":"32607646851"}]} 코드 언어 : JSON / JSON (주석 포함) (json)

에 대한 방법 중 하나를 시도하십시오. Teku API 문서 페이지 이 페이지 하단에있는 형식을 사용합니다.

curl -X [REST_METHOD]“API_CALL_IN_QUOTES”코드 언어 : CSS (css)

Swagger UI

시작 명령어에 –rest-api-docs-enabled = true 플래그가 추가 될 때 Teku가 제공하는 API 호출을위한 기본 그래픽 UI가 있습니다. 그것은 swagger-ui 기본적으로 포트 5051에 있으며 SSH 터널링을 사용하여 액세스 할 수 있습니다. 위와 동일한 SSH 터널링 단계를 따르지만 포트는 5051입니다.

ssh -N -L 5051 : 로컬 호스트 : 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.com 코드 언어 : CSS (css)

컴퓨터의 브라우저에서 다음으로 이동할 수 있습니다. http : // localhost : 5051 / swagger-ui, 내 컴퓨터에서 다음과 같이 보입니다.

세계 상태와 합의는 모든 공개 블록 체인에서 등장하는 것입니다. 이것은 Ethereum 2.0이 정보를 저장하고 업데이트하는 모든 검증 인이 합의에 도달한다는 것을 의미합니다. 다소 괴상하지만 지역 상태를 살펴 보는 것은 훨씬 더 큰 구조의 단일 창을 들여다 보는 것입니다. 프랙탈의 하위 집합은 지속적으로 업데이트되고 새로운 것으로 나타납니다. 시도 해봐!

재무 분석

첫 번째 게시물에서 필요한 기본 재료 요구 사항을 스케치했습니다.

  • 32 ETH를 스테이 킹하고 검증 자 노드를 유지하기위한 3 년 약정
  • 32 ETH (더하기 <가스 비용의 경우 1 ETH)
  • $ 717.12 (m5.xlarge 인스턴스에 대한 3 년 예약 인스턴스 요금) + 120 (1 년 스토리지 비용 100GB, 보수적으로 거의 전체 스토리지 용량을 가정) = 연간 $ 837.12를 AWS에 지불
  • MetaMask Extension (무료 설치
  • Infura 계정 (무료 계층)

AWS 비용은 3 년 제한 이었지만 나중에 그렇게 할 준비가되지 않았다고 언급했습니다. 그리고 내가하지 않았다 니 기쁘다! 그 이유는 잠시 후에 알 수 있지만 다음은 2020 년 12 월 31 일 달의 기본적인 비용 분석입니다.

AWS 월간 비용

  • 데이터 전송 : $ 8.52
  • 서버 : $ 142.85
  • 저장 : $ 72.50
  • 합계 : $ 223.87

Eth2 검증 자 보상 

  • 블록 : 5
  • 증명 : ~ 6,803
  • ETH 보상 : 0.420097728 ($ 485.83 USD)

보시다시피 $ 261.96의 수익은 한 명의 검증 인에게 큰 스프레드가 아닙니다. 몇 가지 옵션이 있습니다. 이것은 비교적 안정적인 비용이므로 32 ETH를 추가로 스테이 킹 할 수 있습니다. 더 나은 옵션은 내가 사용중인 VPS를 변경하는 것입니다. 실제로는 첫 번째 게시물에서 언급했습니다.

처음에는 AWS가 최고의 가상 플랫폼이며이 게시물과 다음 게시물에서 사용할 서비스라고 확신했습니다. 그러나 전체 프로세스를 거친 후 AWS가 개별 개발자에게 과잉 일 수 있음을 깨달았습니다. AWS의 진정한 강점은 프리미엄 비용으로 발생하는 수요를 충족하기 위해 동적으로 확장 할 수있는 능력입니다. 이것은 대규모 엔터프라이즈 수준 프로젝트에 경제적으로 합리적이지만 개별 Ethereum 2.0 현재 클라이언트 요구 사항에는 이러한 엄격함이 필요하지 않습니다..

AWS를 계속 사용할 예정이지만 개별 개발자에게 더 적합 할 수있는 Digital Ocean에서 인스턴스를 실행할 수도 있습니다.. 

Digital Ocean에서 실행하면 훨씬 더 나은 수익을 얻을 수 있다고 생각하지만 여전히 검증 인 성능에 영향을 미치지는 않습니다. 친구가 훨씬 적은 비용으로 훨씬 더 작은 VPS에서 검증 인 인스턴스를 실행하고 있으며 우리는 동일한 검증 인 성능을 가지고 있습니다.. 

AWS를 실험 해 보는 것은 훌륭하며 비콘 체인에서 무언가가 횡보 할 경우를 대비하여 용량을 확보 한 것을 후회하지 않습니다. 그러나 나는 그것이 정말 Eth 2 개발자가 홈 네트워크 및 설정에서 유효성 검사를 사용할 수 있다는 약속을 이행하고 있다는 점이 좋습니다.! 

현재 가격 변조는 서버 비용이 USD로 고정되어 있지만 보상이 변동하기 때문에 재무 분석을 어렵게 만듭니다. 장기적으로는 검증 인 보상의 가치가 높아질 것이라고 확신합니다. 비용 편익을 어렵게 만듭니다.!

이 시리즈의 마지막 기사에서는 Teku 노드를 한 서버에서 다른 서버로 안전하고 성공적으로 마이그레이션하는 방법에 대해 논의 할 것입니다. 물론 주요 문제는 삭감되는 것입니다. 발생한 대부분의 슬래 싱은 바로이 문제 때문에. 어떻게 될지 보겠습니다…

개발자 Ethereum 2.0 이더 리움 클라이언트 뉴스 레터 최신 이더 리움 뉴스, 엔터프라이즈 솔루션, 개발자 리소스 등을 보려면 뉴스 레터를 구독하십시오.

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