简介

operations支持在peer或者orderer运行过程中,提供基于restful接口的运维服务。包括健康检查、日志level管理、指标metrics接口等。首先利用test-network启动一个测试网络。

配置

具体配置项可见sampleconfig/core.yaml和sampleconfig/orderer.yaml。

operations的启动

以peer节点为例,operations服务的启动在peer启动的过程中完成的,启动依赖配置如下:

func newOperationsSystem(coreConfig *peer.Config) *operations.System {
return operations.NewSystem(operations.Options{
Logger: flogging.MustGetLogger("peer.operations"),
ListenAddress: coreConfig.OperationsListenAddress,
Metrics: operations.MetricsOptions{
Provider: coreConfig.MetricsProvider,
Statsd: &operations.Statsd{
Network: coreConfig.StatsdNetwork,
Address: coreConfig.StatsdAaddress,
WriteInterval: coreConfig.StatsdWriteInterval,
Prefix: coreConfig.StatsdPrefix,
},
},
TLS: operations.TLS{
Enabled: coreConfig.OperationsTLSEnabled,
CertFile: coreConfig.OperationsTLSCertFile,
KeyFile: coreConfig.OperationsTLSKeyFile,
ClientCertRequired: coreConfig.OperationsTLSClientAuthRequired,
ClientCACertFiles: coreConfig.OperationsTLSClientRootCAs,
},
Version: metadata.Version,
})
}

包括监听地址、metrics相关配置、TLS配置等,即示例core.yaml或orderer.yaml中的配置。

version接口

curl --request GET '127.0.0.1:19051/version'

返回结果:

{"CommitSHA":"7f22e99","Version":"2.2.7"}

查看version接口的处理:

func (s *System) initializeVersionInfoHandler() {
versionInfo := &VersionInfoHandler{
CommitSHA: metadata.CommitSHA,
Version: metadata.Version,
}
s.mux.Handle("/version", s.handlerChain(versionInfo, false))
}

可知版本信息在metadata包内定义,查看Makefile文件如下:

# defined in common/metadata/metadata.go
METADATA_VAR = Version=$(BASE_VERSION)
METADATA_VAR += CommitSHA=$(EXTRA_VERSION)
METADATA_VAR += BaseDockerLabel=$(BASE_DOCKER_LABEL)
METADATA_VAR += DockerNamespace=$(DOCKER_NS)

在编译过程中将metadata写入。

日志level管理

查询请求:

curl --location --request GET '127.0.0.1:19051/logspec'

结果:

{"spec":"info"}

修改日志级别:

curl --request PUT '127.0.0.1:19051/logspec' --header 'Content-Type: application/json' --data '{ "spec": "info"}'

针对某个模块调整日志级别:

curl --request PUT '127.0.0.1:19051/logspec' --header 'Content-Type: application/json' --data '{ "spec": "gossip.discovery=debug"}'

此时gossip服务的discovery相关日志为debug级别,其他的仍为info级别。如果调用Get logspec,此时返回为

{"spec":"gossip.discovery=debug:info"}

代表gossip.discovery为debug日志,其余为info日志。

示例1:

curl --request PUT '127.0.0.1:19051/logspec' --header 'Content-Type: application/json' --data '{ "spec": "gossip.discovery=debug:ledgermgmt=info:debug"}'

健康检查

curl --request GET '127.0.0.1:19051/healthz'

结果:

{"status":"OK","time":"2022-07-19T16:30:14.507389245Z"}

可以用于存活探针。

指标

支持prometheus和statsd两种采集方式,statsd不了解,只讨论使用promethues采集指标的方式。在peer启动配置文件中添加配置如下:

- CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:19051
- CORE_METRICS_PROVIDER=prometheus

然后访问19051端口的/metrics的接口即可得到节点中的指标数据。在promethues配置中添加monitor指向19051端口,即可在promethues中查询到指标数据。

operations使用研究的更多相关文章

  1. backup, file manipulation operations (such as ALTER DATABASE ADD FILE) and encryption changes on a database must be serialized.

    昨天在检查YourSQLDba备份时,发现有台数据库做备份时出现了下面错误信息,如下所示: <Exec>   <ctx>yMaint.ShrinkLog</ctx> ...

  2. windows 远程桌面研究

    最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识. 1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server. 大家使用 ...

  3. MATLAB 例子研究 Motion-Based Multiple Object Tracking

    这个例子是用来识别视频中多个物体运动的.我要研究的是:搞清楚识别的步骤和相应的算法,识别出物体运动的轨迹. 详细参见官方帮助文档,总结如下: 移动物体的识别算法:a background subtra ...

  4. 线程系列3---ThreadLocal类研究

    2013-12-23 17:44:44 Java为线程安全提供了一些工具类,如ThreadLocal类,它代表一个线程局部变量,通过把数据放在ThreadLocal中就可以让每个线程创建一个该变量的副 ...

  5. Redis源码研究--字典

    计划每天花1小时学习Redis 源码.在博客上做个记录. --------6月18日----------- redis的字典dict主要涉及几个数据结构, dictEntry:具体的k-v链表结点 d ...

  6. iOS多线程的初步研究(六)-- NSOperation

    iOS平台提供更高级的并发(异步)调用接口,让你可以集中精力去设计需完成的任务代码,避免去写与程序逻辑无关的线程生成.运行等管理代码.当然实质上是这些接口隐含生成线程和管理线程的运行,从而更加简洁地实 ...

  7. asp.net mvc4 Controller与Action执行过程的研究(学习笔记)

    当IIS收到一个http请求,把请求信息发给对应的HttpModel(实际是实现类UrlRoutingModule),在HttpModel中会注册HttpApplication 类中的PostReso ...

  8. C# 动态语言特性,dynamic 关键字研究

    1       动态语言简介 支持动态特性的语言现在大行其道,并且有继续增长的趋势.比如 Ruby 和 Python, 还有天王级的巨星 --- JavaScript. 现在一个程序员说自己对 Jav ...

  9. iOS多线程的初步研究(六)

    iOS多线程的初步研究(六) iOS平台提供更高级的并发(异步)调用接口,让你可以集中精力去设计需完成的任务代码,避免去写与程序逻辑无关的线程生成.运行等管理代码.当然实质上是这些接口隐含生成线程和管 ...

  10. geotrellis使用(三十四)矢量瓦片技术研究——矢栅一体化

    前言 本文所涉及技术与Geotrellis并无太大关系,仅是矢量瓦片前端渲染和加载技术,但是其实我这是在为Geotrellis的矢量瓦片做铺垫.很多人可能会说,Geotrellis为什么要搞矢量瓦片, ...

随机推荐

  1. mysql in和find_in_set

    一.查询包含","的列 1.如果查询条件包含单引号 用in 如:select * from t_test where names in ('李红'); 只能查询出names列中值为 ...

  2. 数字图像处理之直方图处理——a cute dog huang

    关于图像处理的知识,确实很棒,在此感谢:https://blog.csdn.net/mary_0830/article/details/89003488 直方图处理概念灰度级范围为[0,L-1]的数字 ...

  3. win10家庭版vmwarework启动蓝屏

    最终升级到vmwarework16.2.5解决 据说17支持win11 再出问题直接上vm17了

  4. 前后端分离--token过期策略方案1

    https://blog.csdn.net/weixin_38827340/article/details/86287496?utm_medium=distribute.pc_aggpage_sear ...

  5. 关于sql json数据的处理

    $resultProductPrice = DB::update("update lev_product_price set detail=json_set(detail,'$.颜色','红 ...

  6. select标签如何实现 每个option传递多个值

    设计项目时 我们有时候会利用 <select>  <option  value="值1" > </option>  </select> ...

  7. vs2019下 c++中 dll 的新建和引用步骤

    在工作目录下新建文件夹 DllImportTest  ,作为解决方案所在目录 新建项目动态链接库(DLL)项目 DllDemo 位置  指定到 上面新建文件夹 DllImportTest 所在的路径, ...

  8. 单个表空间文件个数达到上限 ORA-01686

    # 问题概述因在oracle数据库表空间管理中的时候 报 ORA-01686: max # files (1023) reached for the tablespace GPRS SQL> a ...

  9. JDK、JRE、JVM和i++

    JRE:运行环境(包含JVM和JAVA核心类库) JDK:JAVA开发工具包(包含JRE和开发工具)----开发工具:指编译工具javac和运行工具java JVM:虚拟机,保证了跨平台 ++i:先运 ...

  10. django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.

    import os if __name__ == '__main__': # 下面的autoUI改成你当前的项目名称 os.environ.setdefault("DJANGO_SETTIN ...