前言
“链上的交易总量是多少”,“我的链上现在有多少区块了”,“节点是否存活无法第一时间感知到”,除sdk查询链上的相关信息外,今天我们介绍一种新的方式实现链上数据与相关资源的可视化的监控。
简介
监控链上数据以及链上节点所在的服务器资源时主要需要安装三个部分:Prometheus + node exporter + Grafana(前置条件是要有go环境,这里不赘述)。
搭建环境时需要注意,安装Prometheus+Grafana可以直接在一台机器上,被监控的机器都需要安装node exporter,采用分布式部署的方式最佳。
长安链监控部署原理
监控部署原理
长安链监控数据中主要分为两个大类:
链上数据,这里主要指的是监控链上的交易量、总区块数、tps等,这里采集的方式通过设置chainmaker.yml中的monitor值为true即可获取到相关数据,通过端口号去区分不同的节点数据。
链上节点服务器资源,这里则是需要安装node_exporter来监控机器资源信息。
实操步骤
部署架构设计
了解了上面的原理,我们来看一下整体的一个部署架构方案,这里我们举一个比较典型的例子,监控链上有四个节点的链,不管多链还是单链长安链都可以适配,因此不需要额外的调整配置。在实际生产中通常采用分布式部署结构,链上的四个共识节点分别部署到不同的服务器上(前提是所有的服务器网络都必须互通)。监控安装的服务器最好选择一个磁盘稍大的机器,因为在监控过程中会产生大量的数据,因此磁盘的选择很重要。具体的操作如下:
1.Prometheus 安装:
官网下载对应的版本:https://prometheus.io/download/
根据自己的服务器系统进行选择:比如这里用的Linux系统。
具体操作如下:
#下载后上传到指定的目录(上传的目录可以按照自己的习惯,示例:安装包放在package中)
cd /data/package
Prometheus下载成功后,上传到此目录中:
# 解压包
tar -vxf prometheus-2.32.1.linux-amd64.tar.gz -C /usr/local
#解压后,软连接到一个目录,方便操作
ln -sv /usr/local/prometheus-2.32.1.linux-amd64/ /usr/local/Prometheus
#软连接以后,进入目录中
cd /usr/local/prometheus-2.32.1.linux-amd64
# 配置prometheus.yml,这一步需要安装node_exporter后配置最佳
vim prometheus.yml
# 配置成功后,直接运行即可
nohup ./prometheus &
#查看Prometheus启动是否成功
ps -ef |grep Prometheus
上述操作就是安装Prometheus的操作,安装成功后需要配置,vim prometheus.yml(修改配置文件这一步可以等node_exporter安装并启动成功后配置),具体配置方法如下图:
这里最关键部分是要映射到对的ip和对的端口号,这里的端口号9100的主要是监控机器资源信息的,而监控链上的资源信息的端口号要看chainmaker.yml中monitor配置下的端口号是多少,比如节点1默认端口号是14321,那么监控链上字段的端口号就要调整为14321,以此类推。
2.node_exporter下载安装
安装node_exporter主要功能是用来采集节点所在的机器资源信息,比如服务器的cpu、内存、磁盘、网络等信息。
下载地址(普罗米修斯的下载地址继续向下翻):https://prometheus.io/download/
下载地址
# 解压安装也比较简单:
tar -vxf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local
# 解压后直接可以用
nohup ./usr/local/node_exporter-1.3.1.linux-amd64/node_exporter &
#查看node_exporter启动是否成功
ps -ef |grep node_exporter
3. Grafana下载安装
这一步的安装直接在服务器上下载安装包即可:
# Ubuntu系统
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_8.3.3_amd64.deb
sudo dpkg -i grafana-enterprise_8.3.3_amd64.deb
#centos系统
sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.1.1-1.x86_64.rpm
在安装过程中如果出现错误,就按照提示命令运行下,比如下面我的执行结果:
➜ package sudo dpkg -i grafana-enterprise_8.3.3_amd64.deb
Selecting previously unselected package grafana-enterprise.
(Reading database ... 125323 files and directories currently installed.)
Preparing to unpack grafana-enterprise_8.3.3_amd64.deb ...
Unpacking grafana-enterprise (8.3.3)...
Setting up grafana-enterprise (8.3.3)...
Adding system user `grafana' (UID 118) ...
Adding new user `grafana' (UID 118) with group `grafana'...
Not creating home directory `/usr/share/grafana'.
### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable grafana-server
### You can start grafana-server by executing
sudo /bin/systemctl start grafana-server
Processing triggers for systemd (245.4-4ubuntu3.13)...
# 按照英文的提示把命令运行一下
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable grafana-server
sudo /bin/systemctl start grafana-server
Grafana启动与停止
#Grafana状态查询
systemctl status grafana-server
#Grafana启动
systemctl start grafana-server
#Grafana停止
systemctl stop grafana-server
启动成功的状态:
4. 安装成功检查
如果上述安装都操作成功后,你可以得到以下几个地址
Prometheus地址:http://安装Prometheus的服务器ip:9090/targets
Grafana地址:http://安装Grafana的服务器ip:3000
如果所有被监控的服务是正常的,具体如下图,
正常监控
5. Grafana配置
上述操作都操作成功后,下一步将Prometheus和Grafana进行关联(Prometheus也有自己的UI,但是分析资源信息监控这一类功能Grafana可视化效果更好)。
先来看一下Prometheus UI:
长安链为大家提供了很多参数,比如这里查询链上一共有多少区块,更多参数大家可以自由探索。
接下来看一下Grafana的配置
1. Grafana关联Prometheus数据
设置→Data sources→Add data source,如下图所示
到了添加页面后,选择Prometheus,如下图所示
这里有一个很重要的地方,url一定要配置,具体如下图:
页面滑到最下面点击Test and Save即可,这样Grafana与Prometheus的数据就关联成功了。
2. Grafana监控模板导入
①模板导入
点击左侧菜单的➕→ import →点击Upload Json file,上传模板,模板为json文件,具体见下。
②模板附件
节点所在的机器资源监控模板(点击阅读原文下载)
链上资源监控模板(点击阅读原文下载)
③配置成功效果
到这一步,我们的监控已经是安装成功了。如果链上资源监控页没有数据,可以尝试发一笔数据试试。
总结
在实际生产环境中,对于链上数据及资源的监控与预警尤为重要,通过引入高度可视化的数据并与邮件或其他实时通信工具的通知功能打通,不仅能够实时监测关键数据指标,还能够提前预警并快速响应节点异常等情况。