您好,登錄后才能下訂單哦!
小編給大家分享一下如何實現(xiàn)Fabric區(qū)塊鏈基于Prometheus和StatsD的運維監(jiān)控,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Hyperledger Fabric 1.4提供了如下的特性用于peer和orderer節(jié)點的運維服務(wù)API:
日志等級管理:/logspec
節(jié)點健康檢查:/healthz
運行監(jiān)控指標:/metrics
配置Fabric區(qū)塊鏈節(jié)點的運維服務(wù)雖然不是尖端的火箭科技,但是如果你漏掉了某些細節(jié)也會覺得不那么容易。
首先修改core.yaml來配置peer節(jié)點的運維服務(wù),主要包括監(jiān)聽地址的配置和TLS的配置(我們先暫時禁用這部分)。
用編輯器打開core.yaml:
$ vi ~/fabric-samples/config/core.yaml
下圖顯示了peer節(jié)點的運維服務(wù)監(jiān)聽地址listenAddress
的默認值:
現(xiàn)在讓我們啟動BYFN網(wǎng)絡(luò),并試著訪問日志等級api。
$ cd ~/fabric-samples/first-network $ ./byfn.sh -m up $ docker exec -it cli bash # curl peer0.org1.example.com:9443/logspec
不幸的是,curl命令返回如下錯誤:
curl: (7) Failed to connect to peer0.org1.example.com port 9443: Connection refused
讓我們看看到底是什么原因。
首先檢查我們的運維服務(wù)配置,打開core.yaml文件:
# vi /etc/hyperledger/fabric/core.yaml
可能你還記得,我們使用127.0.0.1作為listenAddress的值,這意味著 從外部無法訪問運維api。
讓我們在peer容器內(nèi)進行必要的操作以再次檢查。這次我們將使用wget代替 curl,因為在容器內(nèi)沒有安裝curl。
$ docker exec -it peer0.org1.example.com bash # wget peer0.org1.example.com:9443/logspec
和預(yù)期的一樣,錯誤信息再次出現(xiàn):
Connecting to peer0.org1.example.com (peer0.org1.example.com)… failed: Connection refused
但是如果用127.0.0.1來連接就會成功:
# wget 127.0.0.1:9443/logspec
結(jié)果如下:
這標明我們需要設(shè)置運維的監(jiān)聽地址。
為此,修改docker-compose文件,為每個peer指定CORE_OPERATIONS_LISTENADDRESS環(huán)境變量。
$ vi ~/fabric-samples/first-network/base/docker-compose-base.yaml
參考下圖進行修改:
現(xiàn)在讓我們再次嘗試訪問/logspec這個API,別忘了重新啟動BYFN網(wǎng)絡(luò)。
$ docker exec -it cli bash # curl peer0.org1.example.com:9443/logspec
輸出結(jié)果如下:
類似的,我們可以檢查節(jié)點健康狀況:
# curl peer1.org1.example.com:9443/healthz
輸出結(jié)果如下:
最后,讓我們在docker-compose-base.yaml中為每個peer設(shè)置ORE_METRICS_PROVIDER=prometheus
來啟用prometheus指標,并修改core.yaml來聲明指標提供器為prometheus:
如果配置正確,在cli容器內(nèi)執(zhí)行如下命令后將會輸出一組監(jiān)控指標的當前值:
首先下載最新版本的Prometheus并解壓:
$ curl -LO https://github.com/prometheus/prometheus/releases/download/v2.7.1/prometheus-2.7.1.linux-amd64.tar.gz \ $ tar -xvzf prometheus-2.7.1.linux-amd64.tar.gz
在prometheus文件夾中可以找到prometheus.yml文件。我們需要修改這個文件以便抓取Hyperledger Fabric的運行指標數(shù)據(jù):在scrape_configs部分添加job_name和targets。
現(xiàn)在我們可以用docker來運行prometheus:
$ sudo docker run -d --name prometheus-server -p 9090:9090 \ --restart always \ -v /home/mccdev/prometheus/prometheus/prometheus.yml:/prometheus.yml \ prom/prometheus \ --config.file=/prometheus.yml
注意由于docker總是在專用網(wǎng)絡(luò)啟動容器,我們需要將prometheus容器加入fabric網(wǎng)絡(luò)。用如下命令查看fabric網(wǎng)絡(luò):
$ docker inspect peer1.org1.example.com
將prometheus容器接入fabric網(wǎng)絡(luò):
$ sudo docker network connect net_byfn 5b8cbf9d8fa6
可以在如下地址訪問統(tǒng)計信息:http://localhost:9090/
要檢查是否成功抓取了peer的運行指標,輸入scrape_samples_scraped查看結(jié)果表,內(nèi)容應(yīng)該非空。
現(xiàn)在我們換StatsD來可視化監(jiān)控Fabric網(wǎng)絡(luò)的運行指標,Prometheus是pull方式,而StatsD則采用push方式。
首先,我們需要先從這里獲取Graphite和StatsD的docker鏡像。
然后,啟動graphite容器:
$ docker run -d\ --name graphite\ --restart=always\ -p 80:80\ -p 2003-2004:2003-2004\ -p 2023-2024:2023-2024\ -p 8125:8125/udp\ -p 8126:8126\ graphiteapp/graphite-statsd
現(xiàn)在該修改docker-copose-base.yaml了。每個peer都應(yīng)該設(shè)置如下的環(huán)境變量:
CORE_OPERATIONS_LISTENADDRESS CORE_METRICS_PROVIDER CORE_METRICS_STATSD_ADDRESS CORE_METRICS_STATSD_NETWORK CORE_METRICS_STATSD_PREFIX
我們也應(yīng)當確保指定端口8125。peer的配置示例如下:
peer0.org1.example.com: container_name: peer0.org1.example.com extends: file: peer-base.yaml service: peer-base environment: - 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_01 volumes: - /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/production ports: - 7051:7051 - 7053:7053 - 8125:8125
需要留意使用的端口:對于peer0,端口應(yīng)當是8125:8125,peer1則應(yīng)當使用9125:8125,依此類推。
Orderer應(yīng)當按如下配置:
- 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=ORDERER ports: - 7125:8125
現(xiàn)在讓我們啟動BYFN網(wǎng)絡(luò)。
記得將graphite容器接入BYFN網(wǎng)絡(luò),否則你會看到如下錯誤:
Error: error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded
peer容器的日志將顯示在網(wǎng)絡(luò)中沒有找到graphite:
Error: failed to initialize operations subystems: dial udp: lookup graphite on 127.0.0.11:53: no such host
使用如下命令將graphite容器接入fabric網(wǎng)絡(luò):
$ sudo docker network connect net_byfn graphite
一切正常的話,你應(yīng)該可以在如下地址看到運行指標:
http://localhost/metrics/index.json
結(jié)果如下:
訪問如下地址來查看可視化的數(shù)據(jù):
http://localhost/
結(jié)果頁面如下:
以上是“如何實現(xiàn)Fabric區(qū)塊鏈基于Prometheus和StatsD的運維監(jiān)控”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。