أخبارالمطورينإدخالالمشروع Blockchain شرح الأحداث والمؤتمرات الصحافةالنشرات الإخبارية
اشترك في نشرتنا الإخبارية.
عنوان بريد الكتروني
نحن نحترم خصوصيتك
الرئيسية
كيف تراقب أداة التحقق من Eth2 وتحلل P&إل
بقلم كوغان برينان 15 يناير 2021 نُشر في 15 يناير 2021
إذا كنت جديدًا في هذه السلسلة حول كيفية تشغيل أداة التحقق من Eth2 الخاصة بك ، فتأكد من مراجعة الجزء الأول والجزء 2. يجب عليك جميعًا التحقق من Ben Edgington’s Eth2.News النشرة الإخبارية fأو التحديثات الأساسية وإصلاحات الأخطاء والأخبار حول خارطة الطريق القادمة. تعد قاعدة معارف Eth2 الخاصة بنا مفيدة إذا كنت بحاجة إلى مزيد من الخلفية حول المصطلحات والمراحل الرئيسية ومنتجات Eth2 الخاصة بـ ConsenSys.
مقدمة
لقد مر شهر ونصف منذ بدء تكوين سلسلة Ethereum 2.0 Beacon. بالفعل ، تم تجميع 2،515،170 ETH (حوالي 2.9 مليار دولار بمعدلات السوق الحالية) مع 61،561 مدققًا فريدًا ، و 16687 آخرين ينتظرون في قائمة الانتظار. على الرغم من الاهتمام الهائل بالرهانات ، فقد كان شهرًا ونصف الشهر خاليين من الأحداث: لم تكن هناك اضطرابات كبيرة ، فقط عدد قليل من القطع و مشاركة المدقق في النسبة المئوية 98 معظم الوقت. حان الوقت الآن لالتقاط الأنفاس لتقييم ما قمنا به حتى الآن.
في منشور المدونة هذا ، سأغطي المراقبة والتحليل المالي لمدقق Eth2 الخاص بك. أقدم نظرة عامة على كيفية الوصول إلى مقاييس Teku وإعداد Beaconcha.in الإخطارات وكيفية الاستعلام عن العقدة. أنا أيضًا أشارك P الحالي الخاص بي&انهيار L. في الدفعة الأخيرة من هذه السلسلة ، سأناقش كيفية نقل عقدة Teku بأمان (ونأمل) بنجاح من خادم إلى آخر.
يراقب
في هذا القسم ، سأستعرض كيفية قراءة مقاييس عقدة التحقق. يؤدي تشغيل مدقق Ethereum 2.0 إلى تشغيل البنية الأساسية لنظام موزع. جزء أساسي من صيانة البنية التحتية هو القدرة على رؤية ما يحدث. لحسن الحظ ، يأتي Teku مزودًا بمجموعة رائعة من أدوات المراقبة المُمكَّنة بعلامة “–metrics-enabled” في أمر بدء التشغيل ، الموضح أدناه:
ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku – الشبكة = 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 قوي> –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 هنا.
تركيب بروميثيوس
أولا ، نحن بحاجة إلى التثبيت بروميثيوس, برنامج مراقبة مفتوح المصدر ، و جرافانا, تحليلات مفتوحة المصدر وتطبيق ويب للتصور التفاعلي. يسحب بروميثيوس البيانات ويعرضها غرافانا.
في سطر أوامر Ubuntu ، قم بتنزيل أحدث إصدار ثابت من Prometheus:
حليقة -JLO <أ 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)
قم بفك ضغط الملف كما يلي:
القطران -zxvf <أ href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">بروميثيوس 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 YML:
لغة الشفرة: CSS (css)
الصق هذه المعلمات في ملف التكوين:
عالمي: scrape_interval: 15s scrape_configs: – job_name: "بروميثيوس" static_configs: – الأهداف: ["المضيف المحلي: 9090"] – اسم العمل: "تيكو ديف" scrape_timeout: 10s metrics_path: / مخطط المقاييس: http static_configs: – الأهداف: ["المضيف المحلي: 8008"] لغة الكود: PHP (php)
يوجه هذا Prometheus لاستقصاء عقدة Teku الخاصة بك كل 10 ثوانٍ على منفذ 8008. اضغط على الأمر X واضغط على Y لحفظ المخزن المؤقت
الآن ، لنقم بإنشاء دليل لوضع ملف تهيئة Prometheus الخاص بنا:
sudo mkdir / etc / prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml
سننشئ دليلًا آخر لملفات بروميثيوس الأخرى وننقل وحدات وحدة التحكم ووحدات مكتبات وحدة التحكم إلى / etc / prometheus
sudo mkdir / var / lib / prometheus sudo mv Consoles / console_libraries / / etc / prometheus / Code language: JavaScript (javascript)
سننشئ مستخدم Prometheus لتشغيل خدمة systemd ، كما فعلنا مع Teku (اقرأ المزيد هنا حول كيف أن وصول المستخدم المستند إلى الأدوار هو أفضل ممارسة لأمان الخادم) ومنحه حق الوصول إلى الملفات المناسبة:
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 (javascript)
أخيرًا ، أنشئ خدمة systemd يمكن تشغيلها في الخلفية وأعد تشغيل نفسها إذا فشلت:
sudo nano /etc/systemd/system/prometheus.service
في هذا الملف (الذي يجب أن يكون فارغًا) ، سنضع سلسلة من الأوامر لكي ينفذها systemd عند بدء الخدمة. انسخ ما يلي في محرر النصوص:
[الوحدة] الوصف = Prometheus Wants = network-online.target After = network-online.target [الخدمة] النوع = 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 / console \ –web.console. مكتبات = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [تثبيت] WantedBy = multi-user.targetCode language: JavaScript (javascript)
اكتب الأمر X ، ثم اكتب “Y” لحفظ التغييرات
يتعين علينا إعادة تشغيل systemctl لتحديثه:
sudo systemctl الخفي إعادة تحميل
ابدأ الخدمة:
نظام sudo بدء بروميثيوس
تحقق للتأكد من أنه يعمل بشكل جيد:
sudo systemctl status بروميثيوس
إذا رأيت أي أخطاء ، فاحصل على مزيد من التفاصيل عن طريق تشغيل:
sudo journalctl -f -u prometheus.service لغة الشفرة: CSS (css)
يمكنك إيقاف خدمة Prometheus عن طريق تشغيل:
sudo systemctl توقف بروميثيوس
قم بتثبيت Grafana
سنستخدم مدير حزم APT لنظام Linux لتثبيت 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 -Code language: JavaScript (جافا سكريبت)
نضيف مستودع Grafana الثابت للحصول على التحديثات:
صدى صوت "deb https://packages.grafana.com/oss/deb ثابت رئيسي" | sudo tee -a /etc/apt/sources.list.d/grafana.list لغة الكود: PHP (php)
ثم نقوم بتشغيل APT:
sudo apt-get update sudo apt-get install grafana لغة الشفرة: JavaScript (javascript)
تُنشئ الحزمة خدمة systemd لنا (بما في ذلك مستخدم grafana) لذلك نحتاج فقط إلى تشغيل:
sudo service grafana-server بدء sudo service grafana-server status sudo update-rc.d grafana-server defaults لغة الكود: CSS (css)
نفق SSH
ينشئ Grafana لوحة تحكم رائعة للغاية حيث يمكننا عرض مقاييسنا. تتوفر لوحة التحكم هذه عادةً في المتصفح ، ولكن نظرًا لأننا نقوم بتشغيل إصدار الخادم من Ubuntu 20.04 ، فهو عبارة عن سطر أوامر بالكامل. فكيف نصل إلى غرافانا?
أدخل نفق SSH. إنه نفس البروتوكول الذي نستخدمه للوصول إلى AWS من سطر الأوامر الخاص بنا ، ولكننا سنقوم بإعداده حتى نقوم بإنشاء منفذ معكوس على جهاز الكمبيوتر المحلي الخاص بنا والذي يتصل بمنفذ معين في مثيل AWS الخاص بنا. بهذه الطريقة ، عندما نستدعي المنفذ محليًا ، قل عن طريق فتح المتصفح إلى http: // localhost: 3000, نحن ننظر بالفعل إلى منفذ 3000 في مثيل AWS الخاص بنا.
للقيام بذلك بشكل صحيح ، ستحتاج إلى مفتاح SSH الخاص بك لـ AWS ومعلومات AWS IP. تحتاج أيضًا إلى معرفة المنفذ الذي ترغب في الاتصال به. في هذه الحالة ، نعلم أن مثيل Grafana الخاص بنا يعمل على المنفذ 3000 ، لذا فإن تعليمات سطر الأوامر سيكون لها هذا الهيكل العام:
ssh -N -L 3000: المضيف المحلي: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"لغة الترميز: CSS (css)
هذا يسمح لنا بالذهاب إلى http: // localhost: 3000 على أجهزتنا المحلية وشاهد لوحة معلومات Grafana الخاصة بنا. لكن ليس لدينا واحدة حتى الآن ، لذلك علينا القيام بما يلي:
أضف بروميثيوس كمصدر بيانات:
انتقل إلى “إضافة مصدر بيانات جديد”
انقر فوق “بروميثيوس” من القائمة المنسدلة
انقر فوق “حفظ واختبار”
انقر فوق + في القائمة اليمنى وحدد “استيراد لوحة التحكم”
أضف معرف Teku Grafana: 13457
و بادا بنج! لدينا لوحة القيادة الخاصة بنا ، والتي يمكن رؤيتها من خلال متصفحنا المريح:
Beaconcha.in التطبيق
لوحة معلومات Grafana ممتازة ويقوم بروميثيوس بتخزين المعلومات لنا. ومع ذلك ، هناك خيارات أخرى للتحقق من حالة المدقق.
كنت أستخدم Beaconcha.in تطبيق جوال Dashboard لنظام Android. إنها واجهة بسيطة ، وهو أمر جيد لأنها ليست خدمة المراقبة الأساسية الخاصة بي. يسمح لي بإلقاء نظرة سريعة على هاتفي للتحقق من حالة المدقق وتقديم إشعارات إذا كان هناك خطأ ما في المدقق.
أدخل عنوان المدقق الذي ترغب في مشاهدته وهذا كل شيء تقريبًا! مرة أخرى ، ليس المراقبة الشاقة (هذا ما توفره خلاصة Grafana Teku). ولكن لا بأس كخدمة ثانوية والثنائي “هل يعمل المدقق أم لا”:
الاستعلام عن العقدة
هناك طريقة أخرى لمراقبة عميل التحقق من Ethereum وهي الاستعلام عنه! مثل عميل Ethereum 1.0 ، يقوم عميل التحقق من Ethereum الخاص بنا بتخزين والحفاظ على حالة عالمية. إنه أصغر بكثير مقارنة بـ Ethereum 1.0 ، لكنه لا يزال بيانات على السلسلة يخزنها ويحتفظ بها عميل المدقق الخاص بك.
هذه هي نفس البيانات التي يستهلكها سير عمل بروميثيوس / جرافانا. نحن ببساطة نقترب من المعدن (فعليًا) من خلال الاستعلام عن العقدة بأنفسنا. إليك عينة من البيانات المتاحة (القائمة الكاملة هنا):
- معلومات سلسلة منارة (Genesis block ، block headers and root ، إلخ.)
- معلومات المدقق (قائمة المدققين ، رصيد المدقق ، مسؤوليات المدقق ، إلخ)
- معلومات العقدة (الصحة العامة ، قائمة الأقران ، إلخ.)
لفة
الطريقة الأولى للقيام بذلك هي من سطر الأوامر. عندما بدأنا Teku ، أضفنا العلم –rest-api-enabled = true. هذا يفتح نقطة نهاية API في المنفذ الافتراضي 5051 (يمكنك تحديد منفذ آخر باستخدام العلم –rest-api-port =). يمكنك التحقق مرة أخرى من أن المنفذ الخاص بك مفتوح عن طريق تشغيل sudo lsof -i -P -n | grep الاستماع.
بمجرد التأكد من فتح المنفذ 5051 بواسطة Teku ، سنستخدمه لفة لترسل راحة المكالمات إلى نقطة نهاية Teku API في http: // localhost: 5051. على سبيل المثال ، هذه هي الطريقة التي نتحقق بها من رصيد أداة التحقق الأعلى أداءً (وفقًا لـ Beaconcha.in):
curl -X احصل على "http: // localhost: 5051 / eth / v1 / beacon / States / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5"لغة الكود: PHP (php)
إليكم الرد الذي تلقيته في منتصف كانون الثاني (يناير) 2021 (في جوي):
{"البيانات": [{"فهرس":"4966","الرصيد":"32607646851"}]} لغة الشفرة: JSON / JSON مع التعليقات (json)
جرب أي من الطرق على صفحة مستند Teku API باستخدام التنسيق الموجود أسفل هذه الصفحة:
curl -X [REST_METHOD] لغة الشفرة “API_CALL_IN_QUOTES”: CSS (css)
Swagger UI
توجد واجهة مستخدم رسومية أساسية لاستدعاءات واجهة برمجة التطبيقات التي يوفرها Teku عند تمكين العلم –rest-api-docs-enabled = true في أوامر بدء التشغيل. إنها مبنية على اختيال واجهة المستخدم وهو موجود على المنفذ 5051 افتراضيًا ويمكننا استخدام نفق SSH للوصول إليه. اتبع نفس خطوات نفق SSH من الأعلى ولكن مع 5051 مثل المنفذ:
ssh -N -L 5051: المضيف المحلي: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" لغة الترميز: CSS (css)
من المتصفح على جهاز الكمبيوتر الخاص بنا ، يمكننا بعد ذلك الانتقال إلى http: // localhost: 5051 / swagger-ui, الذي يبدو هكذا على جهازي:
الحالة العالمية والإجماع هو شيء ينشأ في جميع سلاسل الكتل العامة. هذا يعني أن Ethereum 2.0 يصل إلى إجماع من قبل جميع المدققين الذين يقومون بتخزين المعلومات وتحديثها. إنه أمر غريب بعض الشيء ، ولكن النظر إلى ولايتك المحلية يعني النظر إلى جزء واحد من هيكل أكبر بكثير. مجموعة فرعية من الفراكتل يتم تحديثها باستمرار وتبرز إلى شيء جديد. جربها!
تحليل مالي
في رسالتي الأولى ، قمت برسم متطلبات المواد الأساسية المطلوبة:
- التزام لمدة ثلاث سنوات بمخزن 32 ETH والحفاظ على عقدة المصادقة
- 32 ETH (زائد <1 ETH لتكاليف الغاز)
- 717.12 دولارًا أمريكيًا (تسعير المثيل المحجوز لمدة ثلاث سنوات لمثيل m5.xlarge) + 120 (تكلفة سنة واحدة تبلغ 100 جيجابايت من التخزين ، بافتراض تحفظي سعة التخزين الكاملة تقريبًا) = 837.12 دولارًا أمريكيًا تم دفعها على مدار العام إلى AWS
- ملحق MetaMask (تثبيت مجاني)
- حساب Infura (الطبقة المجانية)
كانت تكاليف AWS لمدة ثلاث سنوات ، لكنني ذكرت لاحقًا أنني لست مستعدًا تمامًا للقيام بذلك. وأنا سعيد لأنني لم أفعل! ستعرف سبب ذلك بعد قليل ، ولكن إليك التوزيع الأساسي للتكاليف لشهر 31 كانون الأول (ديسمبر) 2020:
تكاليف AWS الشهرية
- نقل البيانات: 8.52 دولار
- الخادم: 142.85 دولار
- التخزين: 72.50 دولار
- المجموع: 223.87 دولار
مكافآت Eth2 Validator
- الكتل: 5
- الشهادات: ~ 6،803
- مكافآت ETH: 0.420097728 (485.83 دولار أمريكي)
كما ترى على الأرجح ، فإن ربح 261.96 دولارًا لا يمثل سبريد رائعًا لمدقق واحد. هناك خياران: هذه تكلفة مستقرة نسبيًا ، لذا يمكنني الحصول على 32 ETH أخرى. قد يكون الخيار الأفضل هو تغيير VPS الذي أستخدمه ، والذي ذكرته في مشاركتي الأولى ، في الواقع:
في البداية ، كنت واثقًا من أن AWS كانت أفضل منصة افتراضية وهي الخدمة التي سأستخدمها في هذا المنشور وما يليه. ومع ذلك ، بعد إجراء العملية برمتها ، أدركت أن AWS قد تكون مبالغة بالنسبة للمطور الفردي. يبدو أن القوة الحقيقية لـ AWS تكمن في قدرتها على التوسع بشكل ديناميكي لتلبية الطلب الذي يأتي بتكلفة عالية. هذا منطقي من الناحية الاقتصادية لمشروع كبير الحجم على مستوى المؤسسة ، لكن متطلبات العميل الحالي لـ Ethereum 2.0 الفردية لا تتطلب مثل هذه الصرامة.
سأستمر في استخدام AWS ولكني سأستمتع أيضًا بخيار تشغيل مثيل على Digital Ocean ، والذي قد يكون أكثر ملاءمة لمطور فردي.
أعتقد أنه يمكنني الحصول على ربح أفضل بكثير من التشغيل على Digital Ocean وما زلت لا أتأثر بأداء أداة التحقق الخاصة بي. يقوم أحد الأصدقاء بتشغيل مثيل مدقق على VPS أصغر بكثير مما يكلف أمرًا أقل من حيث الحجم ولدينا نفس أداء المدقق.
من الرائع تجربة AWS ولا أندم على امتلاك القدرة في حالة حدوث شيء جانبيًا في سلسلة المنارات. ومع ذلك ، أعتقد أنه كذلك هل حقا من الرائع أن يفي مطورو Eth 2 بوعدهم بإتاحة التحقق من الشبكات المنزلية والإعدادات!
تجعل تعديلات الأسعار الحالية أيضًا التحليل المالي صعبًا ، حيث يتم إصلاح تكاليف الخادم بالدولار الأمريكي ولكن المكافآت تتقلب. على المدى الطويل ، أنا واثق جدًا من أن مكافآت أداة التحقق الخاصة بي ستزيد من حيث القيمة. إنه يجعل التكلفة والفوائد صعبة!
بالنسبة للجزء الأخير من هذه السلسلة ، سأناقش كيفية نقل عقدة Teku بأمان (ونأمل) بنجاح من خادم إلى آخر. القضية الرئيسية هي أن يتم تقليصها ، بالطبع. يبدو أن الغالبية العظمى من عمليات القطع التي حدثت هي بسبب هذه المشكلة بالذات. سنرى كيف ستسير الامور …
المطورون Ethereum 2.0Ethereum Client – النشرة الإخبارية – اشترك في النشرة الإخبارية لدينا للحصول على أحدث أخبار Ethereum وحلول المؤسسات وموارد المطورين والمزيد.