问题描述
以下配置用于使用 hyperledger caliper (0.4.2) 监控远程机器中 docker 容器的资源利用率。
test:
name: sample fabric network
description: sample Network Benchmark
workers:
type: local
number: 5
rounds:
- label: readAsset
description: Using Chaincode Asset Management contract
txnumber: 10000
rateControl:
type: fixed-load
opts:
tps: 200
workload:
module: workload/readAsset.js
arguments:
contractId: asset-management
monitors:
resource:
- module: docker
options:
interval: 5
containers:
- http://34.233.177.187:7051/peer0.org1.example.com
它给出如下错误Error retrieving remote containers: Error: socket hang up
,并且不生成任何与资源监控相关的报告。虽然,交易使用卡尺提交到远程网络,我试图从那里监控容器 peer0.org1.example.com 的资源利用率。上面定义的机器 IP 和容器的名称在 Connection 配置文件中定义。
从卡尺控制台登录
2021.02.17-03:46:22.319 info [caliper] [worker-orchestrator] 5 workers prepared,progressing to test phase.
2021.02.17-03:46:22.945 error [caliper] [monitor-docker] Error retrieving remote containers: Error: socket hang up
2021.02.17-03:46:22.947 info [caliper] [round-orchestrator] Monitors successfully started
2021.02.17-03:46:22.948 info [caliper] [worker-message-handler] Worker#0 is starting Round#0
2021.02.17-03:46:22.952 info [caliper] [worker-message-handler] Worker#1 is starting Round#0
2021.02.17-03:46:22.956 info [caliper] [caliper-worker] Worker #1 starting workload loop
2021.02.17-03:46:22.958 info [caliper] [caliper-worker] Worker #0 starting workload loop
2021.02.17-03:46:22.961 info [caliper] [worker-message-handler] Worker#2 is starting Round#0
2021.02.17-03:46:22.967 info [caliper] [worker-message-handler] Worker#3 is starting Round#0
2021.02.17-03:46:22.970 info [caliper] [caliper-worker] Worker #2 starting workload loop
2021.02.17-03:46:22.973 info [caliper] [worker-message-handler] Worker#4 is starting Round#0
2021.02.17-03:46:22.975 info [caliper] [caliper-worker] Worker #3 starting workload loop
2021.02.17-03:46:22.977 info [caliper] [caliper-worker] Worker #4 starting workload loop
2021.02.17-03:46:27.352 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 15 Succ: 10 Fail:0 Unfinished:5
2021.02.17-03:46:32.322 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 45 Succ: 30 Fail:0 Unfinished:15
2021.02.17-03:46:37.322 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 70 Succ: 60 Fail:0 Unfinished:10
2021.02.17-03:46:42.323 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 89 Succ: 79 Fail:0 Unfinished:10
2021.02.17-03:46:47.323 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 111 Succ: 103 Fail:0 Unfinished:8
2021.02.17-03:46:52.323 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 128 Succ: 120 Fail:0 Unfinished:8
2021.02.17-03:46:57.323 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 153 Succ: 148 Fail:0 Unfinished:5
2021.02.17-03:47:02.323 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 173 Succ: 165 Fail:0 Unfinished:8
2021.02.17-03:47:07.324 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 194 Succ: 189 Fail:0 Unfinished:5
2021.02.17-03:47:12.324 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 214 Succ: 205 Fail:0 Unfinished:9
2021.02.17-03:47:17.325 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 233 Succ: 223 Fail:0 Unfinished:10
2021.02.17-03:47:22.325 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 252 Succ: 239 Fail:0 Unfinished:13
2021.02.17-03:47:27.325 info [caliper] [default-observer] [readAsset Round 0 Transaction Info] - Submitted: 269 Succ: 267 Fail:0 Unfinished:2
20
当使用本地机器完成监控时,它就可以工作了。为此,我使用了以下配置,并且它可以成功地用于本地 docker 容器。配置如下图:
monitors:
resource:
- module: docker
options:
interval: 5
containers:
- all
有没有更多的配置监控远程容器资源 卡尺的利用率?
谢谢!
解决方法
Caliper 使用 dockerode@3.1.0 模块连接到容器(https://www.npmjs.com/package/dockerode),套接字挂起表示由于超时或类似原因无法创建连接。
有两种选择:
- 调试基于 dockerode 的连接 - 也许在 caliper 中增加日志级别会有所帮助?使用 dockerode@3.1.0 制作一个小应用程序来检查它连接到传递的容器 URL 的能力相对容易 - 如果您能够连接,并且相同的 URL 在 caliper 中不起作用,那么有一个需要修复的错误
- 换成基于 Prometheus 的监视器,它使用 CAdvisor 来监视容器统计信息(您也可以在这里免费获得 Grafana)