operations使用研究
简介
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使用研究的更多相关文章
- 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> ...
- windows 远程桌面研究
最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识. 1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server. 大家使用 ...
- MATLAB 例子研究 Motion-Based Multiple Object Tracking
这个例子是用来识别视频中多个物体运动的.我要研究的是:搞清楚识别的步骤和相应的算法,识别出物体运动的轨迹. 详细参见官方帮助文档,总结如下: 移动物体的识别算法:a background subtra ...
- 线程系列3---ThreadLocal类研究
2013-12-23 17:44:44 Java为线程安全提供了一些工具类,如ThreadLocal类,它代表一个线程局部变量,通过把数据放在ThreadLocal中就可以让每个线程创建一个该变量的副 ...
- Redis源码研究--字典
计划每天花1小时学习Redis 源码.在博客上做个记录. --------6月18日----------- redis的字典dict主要涉及几个数据结构, dictEntry:具体的k-v链表结点 d ...
- iOS多线程的初步研究(六)-- NSOperation
iOS平台提供更高级的并发(异步)调用接口,让你可以集中精力去设计需完成的任务代码,避免去写与程序逻辑无关的线程生成.运行等管理代码.当然实质上是这些接口隐含生成线程和管理线程的运行,从而更加简洁地实 ...
- asp.net mvc4 Controller与Action执行过程的研究(学习笔记)
当IIS收到一个http请求,把请求信息发给对应的HttpModel(实际是实现类UrlRoutingModule),在HttpModel中会注册HttpApplication 类中的PostReso ...
- C# 动态语言特性,dynamic 关键字研究
1 动态语言简介 支持动态特性的语言现在大行其道,并且有继续增长的趋势.比如 Ruby 和 Python, 还有天王级的巨星 --- JavaScript. 现在一个程序员说自己对 Jav ...
- iOS多线程的初步研究(六)
iOS多线程的初步研究(六) iOS平台提供更高级的并发(异步)调用接口,让你可以集中精力去设计需完成的任务代码,避免去写与程序逻辑无关的线程生成.运行等管理代码.当然实质上是这些接口隐含生成线程和管 ...
- geotrellis使用(三十四)矢量瓦片技术研究——矢栅一体化
前言 本文所涉及技术与Geotrellis并无太大关系,仅是矢量瓦片前端渲染和加载技术,但是其实我这是在为Geotrellis的矢量瓦片做铺垫.很多人可能会说,Geotrellis为什么要搞矢量瓦片, ...
随机推荐
- The 17th Zhejiang Provincial Collegiate Programming Contest B.Bin Packing Problem
题意 给定n个物品,和一个容量为C的桶 需要求出为了装下这些物品,分别使用首次适应算法(FF).最佳适应算法(BF)需要的桶的数量 \(n \leq 10^6\) 思路 BF:容易想到可以用set维护 ...
- JupyterNotebook开发介绍
简单介绍 核心目录在notebook下面,主页面在tempaltes目录下的notebook.html文件,没有用到传统的前端开发技术,还是jquery之类的前端,而且用了非常多的类库,开发环境的搭建 ...
- win11恢复完整右键菜单
使用注册表修改 首先,通过修改注册表,我们就可以将 Win11 的右键菜单改为老样式.下面是具体的方法. 运行"regedit",开启注册表编辑器,定位到"HKEY_CU ...
- Burpsuite入门之target模块攻防中利用
可以用来收集目标站点的更多资产 可以探测一些自动加载的接口.内容等,有的内容并不能被访问者直接看见,通过抓包的方式就可以一目了然. 1栏中是流量信息,其中包含着你所请求的流量 2栏中是对1栏中内容的一 ...
- @Component类相互引用的加载顺序
发现bug:没有消息通知,看日志发现调用消息通知的url前缀为null,定位到此工具类 进入工具类 进入ComponentConstant类:它引用了两个配置类 问题:component标注的类相互引 ...
- linux中大括号、小括号、中括号的区别和用法
大括号 { } 1.用于取多个变量 可以进行取变量和字符串拼接,假设:var='1234' echo ${var}abcd 输出为:1234abcd 2.正则表达式,用于大括号内 ...
- h5页面回到顶部
1.锚点 <aname="top"></a> <ahref="#top"></a> 2.回到顶部 documen ...
- 更改ubuntu分辨率
显示器是1920*1080的,ubuntu20里没有,查了一通,修改成功,过程如下: 1.打开终端,输入xrandr, 我用的虚拟机,记下Virtual1 connected primary 1920 ...
- prometheus Alertmanager webhook
一.自定义邮件告警 二.使用docker部署微信机器人告警 1.制作镜像 2.启动容器和指定webhook容器 一.自定义邮件告警 在alertmanager服务的配置文件中指定自定义告警文件 # ...
- 关于HTML5语义化
根据 HTML5 规范,在没有其他合适标签更合适时,才应该把 <b> 标签作为最后的选项. HTML5 规范声明:应该使用 <h1> - <h6> 来表示标题,使用 ...