如何实现Fabric区块链基于Prometheus和StatsD的运维监控
如何实现Fabric区块链基于Prometheus和StatsD的运维监控
小编给大家分享一下如何实现Fabric区块链基于Prometheus和StatsD的运维监控,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1、配置Hyperledger Fabric节点的运维服务
Hyperledger Fabric 1.4提供了如下的特性用于peer和orderer节点的运维服务API:
日志等级管理:/logspec
节点健康检查:/healthz
运行监控指标:/metrics
配置Fabric区块链节点的运维服务虽然不是尖端的火箭科技,但是如果你漏掉了某些细节也会觉得不那么容易。
首先修改core.yaml来配置peer节点的运维服务,主要包括监听地址的配置和TLS的配置(我们先暂时禁用这部分)。
用编辑器打开core.yaml:
$vi~/fabric-samples/config/core.yaml
下图显示了peer节点的运维服务监听地址listenAddress
的默认值:
现在让我们启动BYFN网络,并试着访问日志等级api。
$cd~/fabric-samples/first-network$./byfn.sh-mup$dockerexec-itclibash#curlpeer0.org1.example.com:9443/logspec
不幸的是,curl命令返回如下错误:
curl:(7)Failedtoconnecttopeer0.org1.example.comport9443:Connectionrefused
让我们看看到底是什么原因。
首先检查我们的运维服务配置,打开core.yaml文件:
#vi/etc/hyperledger/fabric/core.yaml
可能你还记得,我们使用127.0.0.1作为listenAddress的值,这意味着 从外部无法访问运维api。
让我们在peer容器内进行必要的操作以再次检查。这次我们将使用wget代替 curl,因为在容器内没有安装curl。
$dockerexec-itpeer0.org1.example.combash#wgetpeer0.org1.example.com:9443/logspec
和预期的一样,错误信息再次出现:
Connectingtopeer0.org1.example.com(peer0.org1.example.com)…failed:Connectionrefused
但是如果用127.0.0.1来连接就会成功:
#wget127.0.0.1:9443/logspec
结果如下:
这标明我们需要设置运维的监听地址。
为此,修改docker-compose文件,为每个peer指定CORE_OPERATIONS_LISTENADDRESS环境变量。
$vi~/fabric-samples/first-network/base/docker-compose-base.yaml
参考下图进行修改:
现在让我们再次尝试访问/logspec这个API,别忘了重新启动BYFN网络。
$dockerexec-itclibash#curlpeer0.org1.example.com:9443/logspec
输出结果如下:
类似的,我们可以检查节点健康状况:
#curlpeer1.org1.example.com:9443/healthz
输出结果如下:
最后,让我们在docker-compose-base.yaml中为每个peer设置ORE_METRICS_PROVIDER=prometheus
来启用prometheus指标,并修改core.yaml来声明指标提供器为prometheus:
如果配置正确,在cli容器内执行如下命令后将会输出一组监控指标的当前值:
2、用Prometheus监控Hyperledger Fabric网络的运行指标
首先下载最新版本的Prometheus并解压:
$curl-LOhttps://github.com/prometheus/prometheus/releases/download/v2.7.1/prometheus-2.7.1.linux-amd64.tar.gz\$tar-xvzfprometheus-2.7.1.linux-amd64.tar.gz
在prometheus文件夹中可以找到prometheus.yml文件。我们需要修改这个文件以便抓取Hyperledger Fabric的运行指标数据:在scrape_configs部分添加job_name和targets。
现在我们可以用docker来运行prometheus:
$sudodockerrun-d--nameprometheus-server-p9090:9090\--restartalways\-v/home/mccdev/prometheus/prometheus/prometheus.yml:/prometheus.yml\prom/prometheus\--config.file=/prometheus.yml
注意由于docker总是在专用网络启动容器,我们需要将prometheus容器加入fabric网络。用如下命令查看fabric网络:
$dockerinspectpeer1.org1.example.com
将prometheus容器接入fabric网络:
$sudodockernetworkconnectnet_byfn5b8cbf9d8fa6
可以在如下地址访问统计信息:http://localhost:9090/
要检查是否成功抓取了peer的运行指标,输入scrape_samples_scraped查看结果表,内容应该非空。
3、用StatsD/Graphite监控Hyperledger Fabric网络的运行指标
现在我们换StatsD来可视化监控Fabric网络的运行指标,Prometheus是pull方式,而StatsD则采用push方式。
首先,我们需要先从这里获取Graphite和StatsD的docker镜像。
然后,启动graphite容器:
$dockerrun-d\--namegraphite\--restart=always\-p80:80\-p2003-2004:2003-2004\-p2023-2024:2023-2024\-p8125:8125/udp\-p8126:8126\graphiteapp/graphite-statsd
现在该修改docker-copose-base.yaml了。每个peer都应该设置如下的环境变量:
CORE_OPERATIONS_LISTENADDRESSCORE_METRICS_PROVIDERCORE_METRICS_STATSD_ADDRESSCORE_METRICS_STATSD_NETWORKCORE_METRICS_STATSD_PREFIX
我们也应当确保指定端口8125。peer的配置示例如下:
peer0.org1.example.com:container_name:peer0.org1.example.comextends:file:peer-base.yamlservice:peer-baseenvironment:-CORE_PEER_ID=peer0.org1.example.com-CORE_PEER_ADDRESS=peer0.org1.example.com:7051-CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051-CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051-CORE_PEER_LOCALMSPID=Org1MSP#metrics-CORE_OPERATIONS_LISTENADDRESS=peer0.org1.example.com:8125-CORE_METRICS_PROVIDER=statsd-CORE_METRICS_STATSD_ADDRESS=graphite:8125-CORE_METRICS_STATSD_NETWORK=udp-CORE_METRICS_STATSD_PREFIX=PEER_01volumes:-/var/run/:/host/var/run/-../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp-../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls-peer0.org1.example.com:/var/hyperledger/productionports:-7051:7051-7053:7053-8125:8125
需要留意使用的端口:对于peer0,端口应当是8125:8125,peer1则应当使用9125:8125,依此类推。
Orderer应当按如下配置:
-ORDERER_OPERATIONS_LISTENADDRESS=orderer.example.com:8125-ORDERER_METRICS_PROVIDER=statsd-ORDERER_METRICS_STATSD_ADDRESS=graphite:8125-ORDERER_METRICS_STATSD_NETWORK=udp-ORDERER_METRICS_STATSD_PREFIX=ORDERERports:-7125:8125
现在让我们启动BYFN网络。
记得将graphite容器接入BYFN网络,否则你会看到如下错误:
Error:errorgettingendorserclientforchannel:endorserclientfailedtoconnecttopeer0.org1.example.com:7051:failedtocreatenewconnection:contextdeadlineexceeded
peer容器的日志将显示在网络中没有找到graphite:
Error:failedtoinitializeoperationssubystems:dialudp:lookupgraphiteon127.0.0.11:53:nosuchhost
使用如下命令将graphite容器接入fabric网络:
$sudodockernetworkconnectnet_byfngraphite
一切正常的话,你应该可以在如下地址看到运行指标:
http://localhost/metrics/index.json
结果如下:
访问如下地址来查看可视化的数据:
http://localhost/
结果页面如下:
以上是“如何实现Fabric区块链基于Prometheus和StatsD的运维监控”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
hyperledger fabric中Raft共识插件的示例分析
-
fabric Transient Data与Private Data使用的示例分析
-
Fabric Node SDK中CouchDB钱包怎么用
-
Fabric链码开发的原则有哪些
Fabric链码开发的原则有哪些这篇文章主要介绍了Fabric链码...
-
fabric示例e2e_cli中network_setup.sh流程是怎么样的
-
Fabric 2.0中链码操作过程是怎么样的
-
如何下载Fabric-Sampl与二进制包
-
Fabric2.0中first-network生成配置的示例分析
-
fabric go sdk是什么
-
Fabric区块链官方浏览器怎么用