Cara Memantau Validator Eth2 Anda dan Menganalisis P&L Anda

blog 1NewsPengembangEnterpriseBlockchain DijelaskanAcara dan KonferensiTekanBuletin

Berlangganan newsletter kami.

Alamat email

Kami menghormati privasi Anda

BerandaBlogPengembang

Cara Memantau Validator Eth2 Anda dan Menganalisis P Anda&L

oleh Coogan Brennan15 Januari 2021Diposting pada 15 Januari 2021

Perjalanan Saya Menjadi Validator di Ethereum 2 0 Bagian 3

Jika Anda baru mengenal seri ini tentang cara menjalankan validator Eth2 Anda sendiri, pastikan untuk memeriksa Bagian 1 dan Bagian 2. Anda semua harus memeriksa Ben Edgington Newsletter Eth2.News fatau pembaruan penting, perbaikan bug, dan berita tentang peta jalan yang akan datang. Basis Pengetahuan Eth2 kami berguna jika Anda membutuhkan lebih banyak latar belakang tentang istilah kunci, fase, dan produk Eth2 ConsenSys.

Intro 

Sudah satu setengah bulan sejak pembuatan rantai Beacon Ethereum 2.0 dimulai. Sudah, 2.515.170 ETH telah dipertaruhkan (sekitar $ 2,9 miliar pada harga pasar saat ini) dengan 61.561 validator unik, dan 16.687 lainnya menunggu dalam antrian. Terlepas dari minat yang luar biasa untuk mempertaruhkan, sebenarnya ini adalah bulan setengah yang cukup lancar: Tidak ada gangguan besar, hanya beberapa tebasan dan partisipasi validator dalam persentil ke-98 sebagian besar waktu. Sekarang adalah saat yang tepat untuk menarik napas untuk mengetahui apa yang telah kita lakukan sejauh ini. 

Dalam posting blog ini saya akan membahas pemantauan dan analisis keuangan validator Eth2 Anda. Saya memberikan gambaran umum tentang cara mengakses metrik Teku, mengatur pemberitahuan Beaconcha.in, dan cara meminta node. Saya juga membagikan P saya saat ini&Kerusakan L. Di bagian akhir seri ini, saya akan membahas cara aman dan (semoga) berhasil memigrasi node Teku dari satu server ke server lainnya..

Pemantauan

Pada bagian ini, saya akan menjelaskan cara membaca metrik node validator Anda. Menjalankan validator Ethereum 2.0 menjalankan infrastruktur untuk sistem terdistribusi. Bagian penting dari pemeliharaan infrastruktur adalah dapat melihat apa yang sedang terjadi. Untungnya, Teku hadir dengan seperangkat alat pemantauan hebat yang diaktifkan dengan tanda “–metrics-enabled” pada perintah start-up kami, yang disorot di bawah ini:

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<kuat> kuat> <kuat>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE kuat> <kuat>–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 kuat> –rest-api-enabled = true –rest-api-docs-enabled = true –metrics-enabled –validators-keystore-locking-enabled = false <kuat>–data-base-path = / var / lib / tekustrong>Bahasa kode: HTML, XML (xml)

Kami memang harus mengikuti beberapa langkah sebelum dapat membaca data.

Untuk mereka yang tidak menjalankan klien Teku: Pertama, mengapa? Kedua, Anda dapat melihat metrik minimum yang disediakan oleh semua klien di Spesifikasi Ethereum 2.0 di sini.


Menginstal Prometheus

Pertama, kita perlu menginstal Prometheus, program pemantauan open source, dan Grafana, analitik sumber terbuka dan aplikasi web visualisasi interaktif. Prometheus menarik data dan Grafana menampilkannya.

Pada baris perintah Ubuntu Anda, unduh Prometheus stabil terbaru:

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>Bahasa kode: HTML, XML (xml)

Dekompresi file seperti ini:

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>Bahasa kode: HTML, XML (xml)

Pindahkan biner agar tersedia dari baris perintah:

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

Periksa untuk memastikan sudah dipasang dengan benar:

prometheus –version promtool –version

Buat file konfigurasi YML prometheus:

sudo nano prometheus.yml Bahasa kode: CSS (css)

Tempel parameter ini ke file konfigurasi:

global: scrape_interval: 15 detik scrape_configs: – nama_pekerjaan: "prometheus" static_configs: – target: ["localhost: 9090"] – nama Pekerjaan: "teku-dev" scrape_timeout: 10 detik metrics_path: / skema metrik: http static_configs: – target: ["localhost: 8008"] Bahasa kode: PHP (php)

Ini menginstruksikan Prometheus untuk melakukan polling node Teku Anda setiap 10 detik di port 8008. Tekan perintah-X dan tekan Y untuk menyimpan buffer

Sekarang, mari buat direktori untuk meletakkan file konfigurasi Prometheus kita:

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

Kami akan membuat satu direktori lain untuk file Prometheus lainnya dan memindahkan modul console dan console_libraries ke / etc / prometheus

sudo mkdir / var / lib / prometheus sudo mv consoles / console_libraries / / etc / prometheus / Bahasa kode: JavaScript (javascript)

Kami akan membuat pengguna prometheus untuk menjalankan layanan systemd, seperti yang kami lakukan untuk Teku (baca lebih lanjut di sini tentang bagaimana akses pengguna berbasis peran adalah praktik terbaik untuk keamanan server) dan memberinya akses ke file yang sesuai:

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 / Bahasa kode: JavaScript (javascript)

Terakhir, buat layanan systemd yang dapat berjalan di latar belakang dan memulai ulang sendiri jika gagal:

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

Dalam file ini (yang seharusnya kosong), kami akan memasukkan serangkaian perintah untuk dieksekusi oleh systemd saat kami memulai layanan. Salin yang berikut ini ke editor teks:

[Unit] Description = Prometheus Wants = network-online.target After = network-online.target [Layanan] Jenis = sederhana Pengguna = prometheus Grup = prometheus Restart = selalu 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. libraries = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Instal] WantedBy = multi-user.targetCode bahasa: JavaScript (javascript)

Ketik command-X, lalu ketik “Y” untuk menyimpan perubahan Anda

Kami harus memulai ulang systemctl untuk memperbaruinya:

sudo systemctl daemon-reload

Mulai layanan:

sudo systemctl mulai prometheus

Periksa untuk memastikannya berjalan dengan baik:

sudo systemctl status prometheus

Jika Anda melihat kesalahan apa pun, dapatkan detail selengkapnya dengan menjalankan:

sudo journalctl -f -u prometheus.service Bahasa kode: CSS (css)

Anda dapat menghentikan layanan Prometheus dengan menjalankan:

sudo systemctl menghentikan prometheus

Pasang Grafana

Kami akan menggunakan pengelola paket APT untuk Linux untuk menginstal Grafana. Ini akan menghemat banyak pekerjaan dan memberi kita apa yang kita butuhkan. Kami akan mengikuti langkah-langkah dari halaman instalasi 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 -Kode bahasa: JavaScript (javascript)

Kami menambahkan repositori Grafana yang stabil untuk pembaruan:

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

Lalu kami menjalankan APT:

sudo apt-get update sudo apt-get install bahasa grafana Kode bahasa: JavaScript (javascript)

Paket menyiapkan layanan systemd untuk kami (termasuk grafana pengguna) jadi kami hanya perlu menjalankan:

sudo service grafana-server start sudo service grafana-server status sudo update-rc.d grafana-server defaults Bahasa kode: CSS (css)

Penerobosan SSH

Grafana membuat dasbor yang sangat apik tempat kami dapat melihat metrik kami. Dasbor tersebut biasanya tersedia di browser, tetapi karena kami menjalankan versi server Ubuntu 20.04, semuanya menggunakan baris perintah. Jadi bagaimana kita mengakses Grafana?

Masuk ke terowongan SSH. Ini adalah protokol yang sama yang kami gunakan untuk mengakses AWS dari baris perintah kami, tetapi kami akan menyiapkannya sehingga kami membuat port cermin di komputer lokal kami yang terhubung ke port tertentu pada instans AWS kami. Dengan begitu, ketika kita memanggil port secara lokal, katakan dengan membuka browser ke http: // localhost: 3000, kami sebenarnya melihat port 3000 pada instans AWS kami.

Untuk melakukan ini dengan benar, Anda memerlukan kunci SSH Anda untuk AWS dan informasi IP AWS. Anda juga perlu tahu port mana yang ingin Anda hubungkan. Dalam kasus ini, kami tahu instance Grafana kami berjalan pada port 3000, jadi instruksi baris perintah akan memiliki struktur umum ini:

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

Ini memungkinkan kita untuk pergi ke http: // localhost: 3000 di mesin lokal kami dan lihat dasbor Grafana kami. Namun kami belum memilikinya, jadi kami perlu melakukan hal berikut:

Tambahkan Prometheus sebagai sumber data:

Buka “tambahkan sumber data baru”

Klik “Prometheus” dari menu drop-down

Klik “Simpan dan Uji”

Klik + di menu sebelah kiri dan pilih “impor dasbor”

Tambahkan ID Teku Grafana: 13457

Dan, bada-bing! Kami memiliki dasbor kami, terlihat dari kenyamanan browser kami sendiri:

Beaconcha.in App

Dasbor Grafana sangat bagus dan Prometheus menyimpan informasi untuk kami. Namun, ada opsi lain untuk memeriksa status validator.

Saya telah menggunakan Beaconcha.in aplikasi seluler Dashboard untuk Android. Ini adalah antarmuka yang sederhana, yang bagus karena ini bukan layanan pemantauan utama saya. Ini memungkinkan saya untuk melihat sekilas ponsel saya dengan cepat untuk memeriksa status validator dan memberikan pemberitahuan jika ada yang salah dengan validator.

Anda memasukkan alamat validator yang ingin Anda tonton dan itu saja! Sekali lagi, bukan pemantauan tugas berat (itulah yang disediakan oleh umpan Grafana Teku). Tetapi tidak masalah sebagai layanan sekunder dan biner “apakah validator berfungsi atau tidak”:

Menanyakan Node

Cara lain untuk “memantau” klien validator Ethereum kami adalah dengan menanyakannya! Seperti klien Ethereum 1.0, klien validator Ethereum kami menyimpan dan memelihara keadaan dunia. Ini jauh lebih kecil dibandingkan dengan Ethereum 1.0, tetapi masih dalam rantai data yang disimpan dan dikelola oleh klien validator Anda. 

Ini adalah data yang sama yang dikonsumsi oleh alur kerja Prometheus / Grafana. Kami hanya semakin dekat ke logam (secara virtual) dengan menanyakan node itu sendiri. Berikut contoh data yang tersedia (daftar lengkapnya di sini):

  • Informasi rantai suar (blok genesis, header blok dan root, dll.)
  • Informasi validator (daftar validator, saldo validator, tanggung jawab validator, dll.)
  • Informasi node (kesehatan keseluruhan, daftar peer, dll.)

keriting

Cara pertama untuk melakukannya adalah dari baris perintah. Saat kami memulai Teku, kami menambahkan flag –rest-api-enabled = true. Ini membuka titik akhir API di port default 5051 (Anda dapat menentukan port lain dengan menggunakan flag –rest-api-port =). Anda dapat memeriksa ulang apakah port Anda terbuka dengan menjalankan sudo lsof -i -P -n | grep DENGARKAN.

Setelah Anda mengonfirmasi port 5051 dibuka oleh Teku, kami akan menggunakan keriting mengirim BERISTIRAHAT panggilan ke titik akhir Teku API di http: // localhost: 5051. Misalnya, berikut adalah cara kami memeriksa saldo validator berkinerja tertinggi (menurut Beaconcha.in):

curl -X DAPATKAN "http: // localhost: 5051 / eth / v1 / beacon / states / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5"Bahasa kode: PHP (php)

Berikut tanggapan yang saya terima pada pertengahan Januari 2021 (di Gwei): 

{"data": [{"indeks":"4966","keseimbangan":"32607646851"}]} Bahasa kode: JSON / JSON dengan Komentar (json)

Cobalah salah satu metode di halaman dokumen Teku API menggunakan format di bagian bawah halaman ini:

curl -X [REST_METHOD] “API_CALL_IN_QUOTES” Bahasa kode: CSS (css)

UI kesombongan

Ada UI grafis dasar untuk panggilan API yang disediakan Teku saat flag –rest-api-docs-enabled = true ditambahkan dalam perintah start-up. Itu dibangun di atas swagger-ui dan ada di port 5051 secara default dan kita dapat menggunakan tunneling SSH untuk mengaksesnya. Ikuti langkah-langkah tunneling SSH yang sama dari atas tetapi dengan port 5051 sebagai:

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

Dari browser di komputer kami, kami kemudian dapat menavigasi ke http: // localhost: 5051 / swagger-ui, yang terlihat seperti ini di komputer saya:

Keadaan dan konsensus dunia adalah sesuatu yang muncul di semua blockchain publik. Ini berarti Ethereum 2.0 mencapai konsensus oleh semua validator yang menyimpan dan memperbarui informasi. Memang sedikit aneh, tetapi melihat keadaan lokal Anda sama dengan mengintip ke dalam satu panel dari struktur yang jauh lebih besar. Bagian dari fraktal yang terus diperbarui dan muncul menjadi sesuatu yang baru. Cobalah!

Analisa keuangan

Di posting pertama saya, saya membuat sketsa persyaratan bahan dasar yang dibutuhkan:

  • Komitmen tiga tahun untuk mempertaruhkan 32 ETH dan memelihara node validator
  • 32 ETH (plus <1 ETH untuk biaya gas)
  • $ 717,12 (harga instans cadangan tiga tahun untuk instans m5.xlarge) + 120 (biaya satu tahun untuk penyimpanan 100 GB, secara konservatif dengan asumsi kapasitas penyimpanan hampir penuh) = $ 837,12 dibayarkan selama setahun ke AWS
  • Ekstensi MetaMask (instal gratis
  • Akun Infura (tingkat gratis)

Biaya AWS adalah untuk penguncian tiga tahun, tetapi saya sebutkan kemudian bahwa saya belum cukup siap untuk melakukannya. Dan saya senang saya tidak melakukannya! Anda akan mengetahui alasannya sebentar lagi, tetapi berikut perincian dasar saya tentang biaya untuk bulan 31 Desember 2020:

Biaya Bulanan AWS

  • Transfer Data: $ 8,52
  • Server: $ 142,85
  • Penyimpanan: $ 72,50
  • Total: $ 223.87

Hadiah Validator Eth2 

  • Balok: 5
  • Pengesahan: ~ 6.803
  • Hadiah ETH: 0,420097728 ($ 485,83 USD)

Seperti yang mungkin Anda lihat, profit $ 261,96 bukanlah spread yang bagus untuk satu validator. Ada beberapa opsi: Ini adalah biaya yang relatif stabil, jadi saya bisa mempertaruhkan 32 ETH lagi. Opsi yang lebih baik mungkin mengubah VPS yang saya gunakan, yang saya sebutkan di posting pertama saya, sebenarnya:

Awalnya, saya yakin AWS adalah platform virtual terbaik dan itu adalah layanan yang akan saya gunakan untuk postingan ini dan berikutnya. Namun, setelah melalui seluruh proses, saya menyadari AWS mungkin berlebihan untuk pengembang individu. Kekuatan nyata AWS tampaknya adalah kapasitasnya untuk secara dinamis meningkatkan untuk memenuhi permintaan yang datang dengan biaya premium. Ini masuk akal secara ekonomi untuk skala besar, proyek tingkat perusahaan, tetapi persyaratan klien Ethereum 2.0 individu saat ini tidak memerlukan ketelitian seperti itu.

Saya akan melanjutkan dengan AWS tetapi juga menghibur opsi menjalankan instans di Digital Ocean, yang mungkin lebih sesuai untuk pengembang individu. 

Saya rasa saya bisa mendapatkan keuntungan yang jauh lebih baik dengan menjalankan Digital Ocean dan masih belum mengurangi kinerja validator saya. Seorang teman menjalankan instance validator pada VPS yang jauh lebih kecil yang harganya lebih murah dan kami memiliki kinerja validator yang sama. 

Sangat menyenangkan untuk bereksperimen dengan AWS dan saya tidak menyesal memiliki kapasitas jika terjadi sesuatu yang menyimpang pada rantai suar. Namun, saya pikir begitu Betulkah hebat bahwa Eth 2 devs memenuhi janji membuat validasi tersedia dari jaringan dan pengaturan rumah! 

Modulasi harga saat ini juga membuat analisis keuangan menjadi sulit, karena biaya server ditetapkan dalam USD tetapi imbalannya berfluktuasi. Dalam jangka panjang, saya sangat yakin bahwa bonus validator saya akan meningkat nilainya. Itu memang membuat biaya-manfaat menjadi rumit!

Untuk angsuran terakhir dari seri ini, saya akan membahas cara aman dan (semoga) berhasil memigrasi node Teku dari satu server ke server lainnya. Masalah utama adalah semakin terpangkas, tentu saja. Tampaknya sebagian besar pemotongan yang telah terjadi adalah karena masalah ini. Kita akan lihat bagaimana kelanjutannya…

DevelopersEthereum 2.0Ethereum ClientNewsletter Berlangganan buletin kami untuk berita Ethereum terbaru, solusi perusahaan, sumber daya pengembang, dan banyak lagi.

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