数据与资源可视化——长安链运维监控实践

2024-01-30 16:36

本文主要是介绍数据与资源可视化——长安链运维监控实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 前言 

 “链上的交易总量是多少”,“我的链上现在有多少区块了”,“节点是否存活无法第一时间感知到”,除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文件,具体见下。

图片

②模板附件
节点所在的机器资源监控模板(点击阅读原文下载)

链上资源监控模板(点击阅读原文下载)

③配置成功效果

图片

图片

图片

到这一步,我们的监控已经是安装成功了。如果链上资源监控页没有数据,可以尝试发一笔数据试试。

 总结 

在实际生产环境中,对于链上数据及资源的监控与预警尤为重要,通过引入高度可视化的数据并与邮件或其他实时通信工具的通知功能打通,不仅能够实时监测关键数据指标,还能够提前预警并快速响应节点异常等情况。  

这篇关于数据与资源可视化——长安链运维监控实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660866

相关文章

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本