🧭
区块链技术指南
  • 前言
  • 修订记录
  • 如何贡献
  • 区块链的诞生
    • 记账科技的千年演化
    • 分布式记账与区块链
    • 集大成者的比特币
    • 区块链的商业价值
    • 本章小结
  • 核心技术概览
    • 定义与原理
    • 技术的演化与分类
    • 关键问题和挑战
    • 趋势与展望
    • 认识上的误区
    • 本章小结
  • 典型应用场景
    • 应用场景概览
    • 金融服务
    • 征信管理
    • 权属管理与溯源
    • 资源共享
    • 物流与供应链
    • 物联网
    • 数字艺术品和 NFT
    • 其它场景
    • 本章小结
  • 分布式系统核心技术
    • 一致性问题
    • 共识算法
    • FLP 不可能原理
    • CAP 原理
    • ACID 原则与多阶段提交
    • Paxos 算法与 Raft 算法
    • 拜占庭问题与算法
    • 可靠性指标
    • 本章小结
  • 密码学与安全技术
    • 密码学简史
    • Hash 算法与数字摘要
    • 加解密算法
    • 消息认证码与数字签名
    • 数字证书
    • PKI 体系
    • Merkle 树结构
    • Bloom Filter 结构
    • 同态加密
    • 其它技术
    • 本章小结
  • 比特币 —— 初露锋芒的区块链
    • 比特币项目简介
    • 比特币诞生背景
    • 工作原理
    • 挖矿过程
    • 共识机制
    • 闪电网络
    • 侧链
    • 热门问题
    • 相关工具
    • 本章小结
  • 以太坊 —— 挣脱加密货币的枷锁
    • 以太坊项目简介
    • 核心概念
    • 主要设计
    • 相关工具
    • 安装客户端
    • 使用智能合约
    • 智能合约案例:投票
    • 本章小结
  • 超级账本 —— 面向企业的分布式账本
    • 超级账本项目简介
    • 社区组织结构
    • 顶级项目介绍
    • 开发必备工具
    • 贡献代码
    • 本章小结
  • Fabric 安装与部署
    • 简介
    • 本地编译组件
    • 容器方式获取
    • 本地方式启动 Fabric 网络
    • 容器方式启动 Fabric 网络
    • 本章小结
  • 管理 Fabric 网络
    • 简介
    • 使用通道
    • 管理节点
    • 管理链上代码
    • 监听网络事件
    • 自动发现网络信息
    • 使用运维服务
    • 如何升级网络版本
    • 使用 SDK
    • 注意事项与最佳实践
    • 本章小结
  • 智能合约开发
    • 简介
    • 链码概念与结构
    • 示例一:信息公证
    • 示例二:交易资产
    • 示例三:数字货币发行与管理
    • 示例四:学历认证
    • 示例五:社区能源共享
    • 小结
  • Fabric 架构与设计
    • 简介
    • 架构设计
    • 消息协议
    • 小结
  • 区块链服务平台设计
    • 简介
    • IBM Bluemix 云区块链服务
    • 微软 Azure 云区块链服务
    • 使用超级账本 Cello 搭建区块链服务
    • 本章小结
  • 性能与评测
    • 简介
    • Hyperledger Fabric v0.6
    • 小结
  • 附录
    • 术语
    • 常见问题
    • Go 语言开发相关
      • 安装与配置 Golang 环境
      • 编辑器与 IDE
      • 高效开发工具
      • 依赖管理
    • ProtoBuf 与 gRPC
    • 参考资源链接
由 GitBook 提供支持
在本页
  • 获取和配置日志级别
  • 监控系统组件的健康状态
  • 获取系统统计信息

这有帮助吗?

在GitHub上编辑
  1. 管理 Fabric 网络

使用运维服务

Fabric 自 v1.4.0 版本开始,加强了对运维操作的支持,在 Peer 和 Orderer 上提供了一系列的 RESTful API 来协助监控服务状态。

这些 API 主要分为三大类:

  • 获取和配置日志级别,资源为 /logspec;

  • 监控系统组件的健康状态,资源为 /healthz;

  • 获取系统统计信息,支持外部 Prometheus 拉取,或推送给 StatsD。

它们可以通过 Peer 和 Orderer 配置文件中的 operations 字段进行开启和配置。Peer 默认监听端口为 9443,Orderer 默认监听端口为 8443。

下面分别进行讲解。

获取和配置日志级别

日志资源为 /logspec。

获取日志级别可以发送 GET 请求,返回 JSON 格式对象。例如获取当前日志级别,可以使用如下命令。

$ curl http://orderer:8443/logspec
{"spec":"info"}
$ curl http://peer:9443/logspec
{"spec":"info"}

修改日志级别可以发送 PUT 请求,消息内容为字典结构:{"spec": "[[,...]=][:[[,...]=]...]"},例如修改 Gossip 模块日志级别为 DEBUG,全局默认级别仍为 INFO。

$ curl -XPUT \
	-d '{"spec":"gossip=debug:info"}' \
	http://peer:9443/logspec

监控系统组件的健康状态

资源为 /healthz。

可以发送 GET 请求,返回带有健康信息的 JSON 格式对象。例如获取健康状况,可以使用如下命令。

$ curl http://orderer:8443/healthz
{"status":"OK","time":"XXXX-YY-ZZT01:02:03.567890Z"}
$ curl http://peer:9443/healthz
{"status":"OK","time":"XXXX-YY-ZZT01:02:03.567890Z"}

目前健康状况支持检测链码容器运行的 Docker 服务的状态,未来会扩展支持更多组件健康状态。

获取系统统计信息

资源为 /metrics。

可以发送 GET 请求,返回各个指标的统计信息。例如获取当前统计信息,可以使用如下命令。

$ curl http://orderer:8443/metrics
# HELP blockcutter_block_fill_duration The time from first transaction enqueuing to the block being cut in seconds.
# TYPE blockcutter_block_fill_duration histogram
blockcutter_block_fill_duration_bucket{channel="businesschannel",le="0.005"} 0
blockcutter_block_fill_duration_bucket{channel="businesschannel",le="0.01"} 0
blockcutter_block_fill_duration_bucket{channel="businesschannel",le="0.025"} 0
...
process_virtual_memory_bytes 3.37268736e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1

$ curl http://peer:9443/metrics
# HELP chaincode_launch_duration The time to launch a chaincode.
# TYPE chaincode_launch_duration histogram
chaincode_launch_duration_bucket{chaincode="+lifecycle:1.4.0",success="true",le="0.005"} 1
chaincode_launch_duration_bucket{chaincode="+lifecycle:1.4.0",success="true",le="0.01"} 1
chaincode_launch_duration_bucket{chaincode="+lifecycle:1.4.0",success="true",le="0.025"} 1
...
process_virtual_memory_bytes 4.21298176e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1

Orderer 的统计信息包括切块时间、广播队列、校验时间、发送块数量、Go 进程信息、gRPC 请求、系统资源等,可以用来详细了解 Orderer 资源使用和工作情况。

Peer 的统计信息包括链码执行情况、Go 进程信息、gRPC 请求、区块处理、账本提交、数据库更新、系统资源等多个指标,可以实时了解 Peer 资源使用和工作情况。

当然,直接阅读这些统计指标并不高效,更方便的是通过外部监控工具。如果使用 StatsD 来分析数据,需要在 Peer 和 Orderer 配置文件中指定 StatsD 服务器地址(StatsD 是推送方式);如果使用 Prometheus,直接在其配置中指定 Peer 和 Orderer 的服务地址即可(Prometheus 是推送方式)。

以 Prometheus 为例,配置中指定 Peer 和 Orderer 地址后,Prometheus 会主动从 /metrics API 获取统计信息。此时通过 Prometheus 的图形界面(默认监听在 9090 端口)可以查看到这些指标的数据和统计图。

下图展示了链码 shim 层请求的执行延迟统计。

用户也可以集成使用更多第三方系统来监控和分析 Fabric 系统的监控数据,实现自动化的运维管理。

上一页自动发现网络信息下一页如何升级网络版本

最后更新于2个月前

这有帮助吗?

使用 prometheus 监控 Fabric 网络