如何通过Hyperledger Caliper监控远程Docker容器性能?
解决方案:Hyperledger Caliper监控远程Docker容器性能
1. 修正Caliper监控配置格式
你之前的配置错误地将容器名拼接到了Docker daemon的URL中,正确做法是分开指定远程Docker daemon地址和要监控的容器列表。示例配置如下(修改你的networkconfig.json或对应监控配置文件):
monitor: type: docker docker: # 指定要监控的远程容器名称(需与远程服务器`docker ps`输出的NAMES完全一致) containers: - peer0.org2.example.com - peer1.org2.example.com - orderer2.example.com # 第二台服务器的Docker远程API地址(默认端口2375,生产环境建议用TLS加密的2376) daemon: http://10.0.0.252:2375
2. 启用远程服务器的Docker远程API访问
在第二台服务器上,修改Docker配置以允许远程连接:
- 编辑Docker daemon配置文件
/etc/docker/daemon.json,添加远程访问地址:
{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }
- 重启Docker服务使配置生效:
systemctl restart docker
- 开放服务器防火墙的2375端口(云服务器需额外配置安全组规则):
# 以firewalld为例 firewall-cmd --add-port=2375/tcp --permanent firewall-cmd --reload
注意:生产环境必须启用TLS加密保护Docker远程API,避免未授权访问,测试环境可暂时使用裸端口。
3. 验证远程Docker API连通性
在第一台服务器上执行以下命令,确认能正常获取远程服务器的容器列表:
curl http://10.0.0.252:2375/containers/json
如果返回JSON格式的容器信息,说明API连通正常;若失败,检查网络连通性、Docker配置和防火墙规则。
4. 排查版本兼容性与配置细节
- 确保Hyperledger Caliper版本与Docker远程API版本兼容,建议使用对应文档推荐的Caliper版本。
- 确认容器名称与远程服务器
docker ps输出的NAMES字段完全一致,大小写敏感。
错误原因说明
你遇到的TypeError: cannot read properties of undefined {hasOwnproperty}错误,本质是配置格式错误导致Caliper无法正确解析监控配置——错误地将容器名嵌入daemon URL,使Caliper无法识别预期的配置字段,进而引发解析异常。
内容的提问来源于stack exchange,提问作者Junseok Lee
相关产品推荐
相关产品推荐

