使用超级账本结构卡尺的资源监视器 - 错误:套接字挂断

问题描述

以下配置用于使用 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),套接字挂起表示由于超时或类似原因无法创建连接。

有两种选择:

  1. 调试基于 dockerode 的连接 - 也许在 caliper 中增加日志级别会有所帮助?使用 dockerode@3.1.0 制作一个小应用程序来检查它连接到传递的容器 URL 的能力相对容易 - 如果您能够连接,并且相同的 URL 在 caliper 中不起作用,那么有一个需要修复的错误
  2. 换成基于 Prometheus 的监视器,它使用 CAdvisor 来监视容器统计信息(您也可以在这里免费获得 Grafana)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...