设置 Grafana 仪表板

现在您的节点已经启动并运行,您可能希望有一种便捷的方式一目了然地监控有关它的所有信息,以确保其正常运行(以及它为您产生了什么样的收益)。

有许多工具可以完成这项工作。 其中最受欢迎的工具之一叫做 Grafana - 一个易于使用的通用仪表板系统,您可以使用浏览器访问它。

Rocket Pool 开箱即支持 Grafana 及其依赖项;它甚至为每个共识客户端提供了预构建的仪表板。 例如,这是仪表板在 Hoodi 测试网络上的样子:

标准仪表板以方便的格式包含以下信息:

  • 左上角: 有关您机器健康状况和性能的一些重要统计信息,以及任何待处理的系统更新
  • 右上角: 您的验证者在信标链上的活动和性能,以及一些执行客户端和共识客户端的统计信息
  • 左下角: 有关整个 Rocket Pool 网络的详细信息,供参考
  • 右下角: 有关您的 staking 奖励的详细信息,包括 ETH 和 RPL

在本指南中,我们将向您展示如何启用 Rocket Pool 的指标系统,以便您可以使用此仪表板 - 甚至构建您自己的仪表板!

Rocket Pool 指标堆栈概述

如果您在 Smartnode 配置过程中选择启用指标,您的节点将添加以下进程:

  • Prometheus - 一个数据收集、存储和报告系统,可捕获您在上面看到的所有指标(以及更多指标)并存储它们,以便可以随时间查看它们
  • Prometheus Node Exporter - 一种收集有关您机器健康状况的信息(例如 CPU 使用率、RAM 使用率、可用磁盘空间和交换空间等)并将其报告给 Prometheus 的服务
  • Grafana,通过在您的节点上托管的便捷网站公开 Prometheus 数据的工具
  • 一组可选的自定义脚本,将向 Prometheus 报告任何可用的操作系统更新,以便您知道系统是否需要修补

默认配置将创建包含所有这些服务的 Docker 容器,这些容器与 Smartnode 的其余 Docker 容器一起运行。 它将在您的节点机器上打开一个端口用于 Grafana,以便您可以使用浏览器从本地网络上的任何机器访问其仪表板。

启用指标服务器

Docker
Hybrid
Native

在 Docker 模式下启用指标是最简单的。

首先再次运行 Smartnode 配置命令:

rocketpool service config

转到 Monitoring / Metrics 部分并选中 Enable Metrics 复选框。

对于那些喜欢微调端口设置的人,您可以在这里进行。 请注意,所有这些端口都限制在 Docker 的内部网络中,Grafana 端口除外 - 该端口将在您的机器上打开(以便您可以从其他机器(如台式机或手机)通过浏览器访问它),因此如果默认端口与您已有的内容冲突,您可能需要更改它。

保存并退出,smartnode 将为您启动 Prometheus、Node Exporter 和 Grafana Docker 容器。

它还将修改您的共识客户端和验证者客户端,以便它们向 Prometheus 公开自己的指标。

为了最大的灵活性,默认不安装操作系统和 Rocket Pool 更新跟踪器,但过程很简单。 如果您想安装它,以便仪表板显示系统可用的更新数量,可以使用以下命令:

rocketpool service install-update-tracker

在底层,这将安装一个挂钩到操作系统软件包管理器的服务,定期检查更新,并将该信息发送到 Prometheus。 这项服务对于每个操作系统都不同,但已确认可在以下系统上运行:

  • Ubuntu 20.04+
  • Debian 9 和 10
  • CentOS 7 和 8
  • Fedora 34

注意

自动启用该服务与 SELinux 不兼容。 如果您的系统默认启用了 SELinux(CentOS 和 Fedora 就是这种情况),安装命令将使您_完成大部分工作_,但最后也会给您有关如何手动完成该过程的说明。

在此检查期间,它还会将您安装的 Rocket Pool Smartnode 版本与最新版本进行比较,如果有新版本可用,它会通知您。

如果您启用了更新跟踪器,则最后一步是使用以下命令重新启动 Node Exporter:

docker restart rocketpool_exporter

之后,您应该已经全部设置好了。

配置防火墙以允许监控连接

注意

如果您按照保护您的节点部分中的参考启用了 UFW,则需要打开几个端口以允许 Prometheus 与您的执行客户端/共识客户端之间的本地连接。请按照以下步骤操作。

Docker
Native

运行以下命令,并根据需要替换端口:

RP_NET=$(docker inspect rocketpool_net | grep -Po "(?<=\"Subnet\": \")[0-9./]+")
sudo ufw allow from $RP_NET to any port 9105 comment "Allow Prometheus access to Execution Client"
sudo ufw allow from $RP_NET to any port 9100 comment "Allow Prometheus access to Consensus Client"
sudo ufw allow from $RP_NET to any port 9103 comment "Allow Prometheus access to Exporter"

然后,您可以打开防火墙以允许外部设备访问您的 Grafana 仪表板。

Network
Subnet
Anywhere

如果您想从本地网络内的任何机器访问 Grafana,但拒绝其他任何地方的访问,请使用此选项。 这将是最常见的用例。

请先检查您的本地网络是否使用 192.168.1.xxx 结构。 如果您的本地网络使用不同的地址结构(例如 192.168.99.xxx),您可能需要更改以下命令以匹配您的本地网络配置。

# This assumes your local IP structure is 192.168.1.xxx
sudo ufw allow from 192.168.1.0/24 proto tcp to any port 3100 comment 'Allow grafana from local network'

设置 Grafana

现在指标服务器已准备就绪,您可以使用本地网络上的任何浏览器访问它。

有关 Smartnode 安装模式,请参阅下面的选项卡。

导航到以下 URL,根据您的设置替换变量:

http://<your node IP>:<grafana port>

例如,如果您的节点 IP 是 192.168.1.5,并且您使用默认的 Grafana 端口 3100,那么您将在浏览器中访问此 URL:

http://192.168.1.5:3100

您将看到如下登录屏幕:

默认 Grafana 信息是:

Username: admin
Password: admin

然后,系统会提示您更改 admin 账户的默认密码。 选择一个强密码,不要忘记它!

提示

如果您丢失了管理员密码,可以使用节点上的以下命令重置它:

Docker and Hybrid Mode
Native
docker exec -it rocketpool_grafana grafana-cli admin reset-admin-password admin

您将能够再次使用默认的 admin 凭据登录 Grafana,然后系统将提示您更改 admin 账户的密码。

多亏了社区成员 tedsteen 的工作,Grafana 将自动连接到您的 Prometheus 实例,以便它可以访问它收集的指标。 您所需要做的就是获取仪表板!

导入 Rocket Pool 仪表板

现在您已将 Grafana 连接到 Prometheus,您可以导入标准仪表板(或者如果您熟悉该过程,可以使用它提供的指标构建自己的仪表板)。

首先转到 Create 菜单(右侧栏上的加号图标)并点击 Import:

当提示在 Import via grafana.com 框中输入仪表板 ID 时,输入 21863 或使用完整 URL ((https://grafana.com/grafana/dashboards/24900-rocket-pool-dashboard-v1-4-0/),然后按 Load 按钮。

您将在此处看到一些有关仪表板的信息,例如其名称以及您希望将其存储在哪里(默认的 General 文件夹就可以了,除非您使用大量仪表板并希望对其进行组织)。

在底部的 Prometheus 下拉菜单下,您应该只有一个标记为 Prometheus (default) 的选项。 选择此选项。

您的屏幕应如下所示:

如果您的匹配,请单击 Import 按钮,您将立即进入新仪表板。

乍一看,您应该会看到有关您的节点和验证者的大量信息。 每个框的左上角都有一个方便的工具提示(i 图标),您可以将鼠标悬停在上面以了解更多信息。 例如,这是 Your Validator Share 框的工具提示:

但是,我们还没有完成设置 - 还有一些配置要做。

注意

由于 Shapella 提供 skimmed 奖励的方式,一些框(特别是 APR 框)已被暂时禁用。

它们将在可以正确跟踪历史奖励的 Smartnode 未来版本中再次启用。

根据您的系统定制硬件监视器

现在仪表板已启动,您可能会注意到一些框是空的,例如 SSD LatencyNetwork Usage。 我们必须根据您的特定硬件定制仪表板,以便它知道如何捕获这些内容。

CPU 温度

要更新您的 CPU 温度计,请单击 CPU Temp 框的标题,然后从下拉菜单中选择 Edit。 您的屏幕现在看起来像这样:

这是 Grafana 的编辑模式,您可以在其中更改显示的内容及其外观。 我们对用红色突出显示的查询框感兴趣,它位于 Metrics browser 按钮的右侧。

默认情况下,该框中包含以下内容:

node_hwmon_temp_celsius{job="node", chip="", sensor=""}

此文本中有两个字段当前为空:chipsensor。 这些对每台机器都是唯一的,因此您必须根据机器提供的内容填写它们。

为此,请按照以下步骤操作:

  1. 删除 , sensor="" 部分,使其以 chip=""} 结尾。为了清楚起见,整个内容现在应该是 node_hwmon_temp_celsius{job="node", chip=""}
  2. 将光标放在 chip="" 的引号之间,然后按 Ctrl+Spacebar。这将弹出一个自动完成框,其中包含可用选项,如下所示:
  1. 选择与您系统的 CPU 对应的选项。
  2. 选择后,将 , sensor="" 添加回字符串。将光标放在 sensor="" 的引号之间,然后按 Ctrl+Spacebar 以获得另一个自动完成菜单。选择您要监控的传感器。
提示

如果您不知道哪个 chipsensor 是正确的,您将不得不尝试所有它们,直到找到看起来正确的那个。为了帮助解决这个问题,请安装 lm-sensors 软件包(例如,在 Debian / Ubuntu 上使用 sudo apt install lm-sensors)并运行 sensors -u 命令,以提供您的计算机拥有的传感器。您可以尝试根据名称和 ID 将 Grafana 列表中的芯片 ID 与您在此处看到的内容相关联。

例如,这是我们的 sensors -u 命令的输出之一:

k10temp-pci-00c3
Tctl:
  temp1_input: 33.500
Tdie:
  temp2_input: 33.500

在我们的例子中,Grafana 中的相应芯片是 pci0000:00_0000:00:18_3,相应的传感器是 temp1

对您的选择感到满意后,单击屏幕右上角的蓝色 Apply 按钮以保存设置。

注意

并非所有系统都公开 CPU 温度信息 - 特别是虚拟机或基于云的系统。 如果您的 chip 自动完成字段中没有任何内容,可能就是这种情况,您将无法监控 CPU 温度。

SSD 延迟

SSD Latency 图表跟踪读/写操作所需的时间。 这有助于评估 SSD 的速度,因此如果验证者性能不佳,您就知道它是否成为瓶颈。 要更新要在图表中跟踪的 SSD,请单击 SSD Latency 标题并选择 Edit

此图表有四个查询字段(四个文本框),总共有八个 device="" 部分。 您需要使用要跟踪的设备更新前四个部分。

只需将光标放在引号之间,然后按 Ctrl+Spacebar 即可获得 Grafana 的自动完成列表,并从那里为每个 device="" 部分选择正确的选项。 您希望从最左边的空设置开始,否则自动完成列表可能不会出现。

提示

如果您不知道要跟踪哪个设备,请运行以下命令:

lsblk

这将输出一个显示设备和分区列表的树,例如:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
loop25        7:25   0   132K  1 loop /snap/gtk2-common-themes/9
loop26        7:26   0  65,1M  1 loop /snap/gtk-common-themes/1515
nvme0n1     259:0    0 238,5G  0 disk
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi
├─nvme0n1p2 259:2    0 150,1G  0 part /
├─nvme0n1p3 259:3    0  87,4G  0 part
└─nvme0n1p4 259:4    0   527M  0 part

如果您在 Smartnode 安装期间没有将 Docker 的默认位置更改为其他驱动器,那么您要跟踪的磁盘将是安装操作系统的磁盘。 在 MOUNTPOINT 列中查找标记为 / 的条目,然后按照该条目返回到其父设备(TYPE 列中带有 disk 的设备)。

通常,SATA 驱动器为 sda,NVMe 驱动器为 nvme0n1

如果您确实将 Docker 的默认位置更改为其他驱动器,或者如果您正在运行混合/本地设置,您应该能够使用相同的"跟随挂载点"技术来确定链数据所在的设备。

或者,您还可以在系统上跟踪第二个磁盘的延迟。 这是针对将操作系统和链数据保存在单独驱动器上的人们。 要进行设置,只需按照上述说明对最后两个查询字段进行操作,将 device="" 部分值替换为您要跟踪的磁盘的值。

对您的选择感到满意后,单击屏幕右上角的蓝色 Apply 按钮以保存设置。

网络使用情况

此图表跟踪您通过特定网络连接发送和接收的数据量。 正如您所料,仪表板需要知道您希望它跟踪哪个网络。

要更改它,请单击 Network Usage 标题并选择 Edit

此图表有两个查询字段,总共有两个 device="" 部分。 您需要使用要跟踪的网络更新这些内容。

将光标放在引号之间,然后按 Ctrl+Spacebar 即可获得 Grafana 的自动完成列表,并从那里为每个 device="" 部分选择正确的选项。

提示

如果您不知道要跟踪哪个设备,请运行以下命令:

sudo route

输出将如下所示:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 eth0

查看 Destination 列中值为 default 的行。 沿着该行一直到 Iface 列。 那里列出的设备是您要使用的设备 - 在本例中为 eth0

对您的选择感到满意后,单击屏幕右上角的蓝色 Apply 按钮以保存设置。

总网络 I/O

这会跟踪您发送和接收的数据总量。 如果您的 ISP 限制您每月使用一定数量的数据,您可能会发现它很有用。

设置与上面的 Network Usage 框相同,因此只需按照这些说明操作即可。

使用的磁盘空间

这会监控您的操作系统磁盘有多满,以便您知道何时该清理了(如果您的链数据位于同一驱动器上,则该修剪 Geth 或 Nethermind 了)。

步骤与上面的 SSD Latency 框相同,因此只需按照这些说明操作即可。 提醒一下,您需要的驱动器是包含 MOUNTPOINT 列中带有 / 的分区的驱动器,因为那将是您的操作系统驱动器。 将其填写到第一个查询字段中。

或者,您还可以跟踪系统上第二个磁盘的可用空间。 这是针对将操作系统和链数据保存在单独驱动器上的人们。 通过遵循相同的过程进行设置,但不是查看 MOUNTPOINT 列中哪个分区具有 /,而是要查找具有第二个驱动器挂载点的分区。 使用与该分区关联的磁盘更新第二个查询字段。

磁盘温度

这会跟踪操作系统磁盘的当前温度。步骤与上面的 CPU Temp 框相同,因此只需按照这些说明操作即可,将 CPU 芯片和传感器值替换为操作系统磁盘的值。将这些值填写到第一个查询字段中。

或者,您还可以跟踪系统上第二个磁盘的当前温度。通过遵循相同的过程进行设置,将芯片和传感器值替换为第二个驱动器的值。将这些值填写到第二个查询字段中。

自定义仪表板

虽然标准仪表板尝试很好地捕获您希望一目了然看到的所有内容,但自定义 Grafana 仪表板非常容易。 您可以添加新图表,更改图表的外观,移动内容等等!

查看 Grafana 的教程页面,了解如何使用它并根据您的喜好进行设置。

自定义指标堆栈

Rocket Pool 指标堆栈中使用的工具提供了超出默认 Rocket Pool 安装中包含的内容的大量配置选项。本节包含不同用例的配置示例。

一般来说,Grafana 配置选项应该使用 override/grafana.yml 中的环境变量传递。可以使用以下语法将任何配置选项转换为环境变量:

GF_<SectionName>_<KeyName>

用于发送电子邮件的 Grafana SMTP 设置

要从 Grafana 发送电子邮件,例如用于警报或邀请其他用户,需要在 Rocket Pool 指标堆栈中配置 SMTP 设置。 请参阅 Grafana SMTP 配置页面以供参考。

Docker and Hybrid Mode
Native

在文本编辑器中打开 ~/.rocketpool/override/grafana.yml。 在 x-rp-comment: Add your customizations below this line 行下方添加一个 environment 部分,将下面的值替换为 SMTP 提供商的值。

version: "3.7"
services:
grafana:
x-rp-comment: Add your customizations below this line
environment:
## SMTP settings start, replace values with those of your SMTP provider
- GF_SMTP_ENABLED=true
- GF_SMTP_HOST=mail.example.com:`port` # Gmail users should use smtp.gmail.com:587
- GF_SMTP_USER=admin@example.com
- GF_SMTP_PASSWORD=password
- GF_SMTP_FROM_ADDRESS=admin@example.com
- GF_SMTP_FROM_NAME="Rocketpool Grafana Admin"
## SMTP server settings end
提示

如果使用 Gmail 并启用了两步验证,请为此服务创建一个应用密码

进行这些修改后,运行以下命令以应用更改:

Docker and Hybrid Mode
Native
docker stop rocketpool_grafana

rocketpool service start

要测试 SMTP 设置,请转到 Alerting 菜单并单击 Contact points

单击 New contact point 并选择 Email 作为联系点类型。 在 Addresses 部分输入电子邮件地址,然后单击 Test

检查是否收到了测试电子邮件。 完成后单击 Save contact point*