开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?

  从用户的视角来感受一个开源项目的成长,是我们推出“开发人员”专栏的初衷是在开发人员选择开源项目时提供更详细的项目信息。该专栏的所有内容均来自作者的原创/贡献。本文是“开发人员”的第9篇。作者郑阳勇,云辉智慧技术专家,开源爱好者,关注微服务,物联网领域技术,希望通过参与开源帮助他人。同时帮助自己。

Seata 0.7.0版将包含一项新功能Metrics,作为APM(ApplicationPerformanceManagement&Monitoring)的三大基石之一,可快速,详细地访问TC,TM(计划)和RM(计划中)交易的活动状态。以及时间延迟等重要统计信息。

Seata是一个集成的数据一致性框架。 Metrics模块将尽可能少地使用第三方依赖项来降低冲突风险;例如,不使用SpringBean机制,而是使用SPI(ServiceProviderInterface)加载扩展。

Metrics模块将努力实现更高的测量性能和更低的资源开销,并最大限度地减少因打开而产生的副作用;

配置,是否激活Metrics,如何释放数据取决于相应的配置;

最初,TC只完成核心交易相关指标的实施,然后结合社区需求逐步改善运营和维护所需的其他指标。

SeataMetrics模块全部采用seata-metrics,0.7版本包括:

它由两个核心API模块组成,即seata-metrics-api和seata-metrics-core,以及N个实现模块,如seata-metrics-registry-compact和seata-metrics-exporter-prometheus:

Seata-metrics-api模块

该模块是Metrics的核心,将作为Seata基础架构的一部分由TC,TM和RM引用。它里面没有任何具体的实现代码。它只包含接口定义。定义包括:

1,仪表接口:仪表,计数器,定时器.

2,注册容器界面:注册表

3,测量数据导出界面:出口商

提示:度量标准本身在开源世界中有许多实现,例如Netflix-Spectator,Dropwizard-Metrics和Dubbo-Metrics。它们轻巧灵活,有些是沉重而强大的,并且因为它们也是“实现的”,所以它们不包含在seata-metrics-api中以避免绑定。

Seatera-metrics-core模块

Metrics核心模块,根据配置组织(加载)1 Registry和N Exporter;

Seata-metrics-registry-compact模块

这是我们提供的默认(内置)Registry实现,无需使用其他Metrics开源库,轻量级实现以下四种Meter:

仪表类型

描述

CompactGauge

单一最新价值指标

CompactCounter

单个累积指标可以增加或减少

CompactSummary

多个测量输出计数器将输出总计数(计数),计数(计数),最大值(最大值),平均值(总计/计数)和tps(总计/时间间隔),无单位

CompactTimer

多个测量输出计数器将输出总计数(计数),计数(计数),最大值(最大值),平均值(总计/计数)和支持微秒积分。

包含的注册表(CompactRegistry)仅在调用measure()方法时计算度量标准。因此,计算窗口完全依赖于Exporter的实现,因此它不适用于需要多个Exporters的场景(如何展开,请参见Text)。

描述:将来可以添加更复杂和复杂的指标,例如直方图,这是一个可用于本地聚合75,90,95,98,99,99.9的度量.适合某些场合,但需要更多的RAM。所有仪表都将继承仪表,所有仪表将在执行measure()方法后将1或N测量结果的生成标准化。

Seata-metrics-exporter-prometheus模块

Prometheus出版商PrometheusExporter将度量数据同步到Prometheus。

TC中度量标准的初始化步骤和工作原理如下:

服务器调用MetricsManager.get()。init()来启动Metrics的初始化;

MetricsManager读取配置并通过SPI初始化相应的Registry和N Exporters(分别通过RegistryFactory和ExporterFactory);

如果初始化成功,则代表用户启用度量标准功能,MetricsSubscriber初始化并注册到EventBus;

DefaultCore和DefaultCoordinator根据Transaction状态的变化触发与状态对应的事件。 MetricsSubscriber根据状态将相应的度量标准记录到注册表中;

出口商定期从注册表获取数据并将其发布到外部对接监控系统。

如您所见,Metrics被定位为可选功能。如果未配置,则不会创建和注册事件订阅者MetricsSubscriber以避免不必要的性能开销。

如果需要启用TC度量标准,则需要将配置项添加到其配置中:

启动TC,您可以在其上获取Metrics的文本格式数据。

提示:默认情况下,使用端口9988。 Prometheus已注册的端口列表在这里。如果要更改端口,可以通过metrics.exporter-prometheus-port对其进行修改。

下载并启动Prometheus

下载完成后,修改Prometheus配置文件prometheus.yml并添加度量数据以在scrape_configs中获取Seata:

查看数据输出

建议结合使用Grafana以获得更好的查询结果。 Seata导出的当前度量标准包括:

度量

描述

Seata.transaction(角色=TC,米=计数器,状态=活性/致力于/回滚)

当前活动/提交/回滚的事务总数

Seata.transaction(角色=TC,米=计数器,状态=活性/致力于/回滚)

在当前期间内提交/回滚的交易数量

Seata.transaction(角色=TC,米=摘要,统计量=TPS,状态=致力于/回滚)

当前周期中的事务/重新打印事务TPS(transactionpersecond)

Seata.transaction(角色=TC,米=计时器,统计量=总,状态=致力于/回滚)

在当前周期中提交/回滚所花费的时间总和

Seata.transaction(角色=TC,米=计时器,统计量=计数,状态=致力于/回滚)

在当前期间内提交/回滚的交易数量

Seata.transaction(角色=TC,米=计时器,统计量=平均,状态=致力于/回滚)

在当前周期中提交/回滚事务所花费的平均时间

Seata.transaction(角色=TC,米=计时器,统计=MAX,状态=致力于/回滚)

在当前周期中提交/回滚事务所花费的最长时间

提示:seta.transaction的值(role=tc,meter=summary,statistic=count,stat==committed/rollback)和seta.transaction(role=tc,meter=timer,statistic=count,status=committed/rollback)可能相同,但它们来自两个不同的指标。

如果有几种情况:

1.您没有将Prometheus用作操作和维护监控系统,但您希望能够将Seata的度量标准数据集成到仪表板中;

您需要实现一个新的Exporter,例如,如果您需要停靠Zabbix,创建seata-metrics-exporter-zabbix模块,然后将新的Exporter类型添加到ExporterType,最后在metrics.exporter-list中配置它。

2.您需要更复杂和功能强大的度量标准类型,这些类型已经存在于其他度量标准实现库中,并且您希望直接集成这些第三方依赖项;

您可以在不使用内置CompactRegistry实现的情况下扩展新的注册表库。例如,您希望使用NetflixSpectator实现,扩展名为seata-metrics-registry-spectator的模块,然后向RegistryType添加新的注册表类型。之后,将metrics.registry-type设置为相应的类型。

3,您需要更改默认度量的测量输出,例如在Timer中添加min或sd(方差);

您可以修改相应仪表的实现,包括measure()方法返回的测量列表。

1.将度量标准功能添加到TM和RM:

TM:稍后实施,包括:

Seata.transaction(role=tm,name {GlobalTransactionalName},meter=counter,status=active/committed/rollback):使用GlobalTransactionalName作为维度来区分不同Transactional的状态。

RM:稍后实施,包括:

Eata.transaction(role=rm,name {BranchTransactionalName},mode=at/mt,meter=counter,status=active/committed/rollback):区分不同分支的状态Transactional与BranchTransactionalName作为维度和AT/MT尺寸。

2.回应社区,扩展更多的注册管理机构和出口商,并支持更丰富的仪表。

本文中介绍的度量标准是一个侵入性功能。如果您只想使用非侵入式度量标准,则可以使用版本6.3中添加的SkyWalking版本的Seata集成。

作者:中间件兄弟

阅读原文

本文是云栖社区的原创内容,未经许可,不得转载。

96

阿里云云栖社区

96daa9ff5e2d4ab8976904a0eb468046

0.2

2019.07.2413: 39

字数1828

从用户的角度来体验开源项目的增长,我们是“开发人员说”专栏的初衷,当开发人员选择开源项目时,它提供了更多的立体项目信息。该专栏的所有内容均来自作者的原创/贡献。本文是“开发人员”的第9篇。作者郑阳勇,云辉智慧技术专家,开源爱好者,关注微服务,物联网领域技术,希望通过参与开源帮助他人。同时帮助自己。

Seata 0.7.0版将包含一项新功能Metrics,作为APM(ApplicationPerformanceManagement&Monitoring)的三大基石之一,可快速,详细地访问TC,TM(计划)和RM(计划中)交易的活动状态。以及时间延迟等重要统计信息。

Seata是一个集成的数据一致性框架。 Metrics模块将尽可能少地使用第三方依赖项来降低冲突风险;例如,不使用SpringBean机制,而是使用SPI(ServiceProviderInterface)加载扩展。

Metrics模块将努力实现更高的测量性能和更低的资源开销,并最大限度地减少因打开而产生的副作用;

配置,是否激活Metrics,如何释放数据取决于相应的配置;

最初,TC只完成核心交易相关指标的实施,然后结合社区需求逐步改善运营和维护所需的其他指标。

SeataMetrics模块全部采用seata-metrics,0.7版本包括:

它由两个核心API模块组成,即seata-metrics-api和seata-metrics-core,以及N个实现模块,如seata-metrics-registry-compact和seata-metrics-exporter-prometheus:

Seata-metrics-api模块

该模块是Metrics的核心,将作为Seata基础架构的一部分由TC,TM和RM引用。它里面没有任何具体的实现代码。它只包含接口定义。定义包括:

1,仪表接口:仪表,计数器,定时器.

2,注册容器界面:注册表

3,测量数据导出界面:出口商

提示:度量标准本身在开源世界中有许多实现,例如Netflix-Spectator,Dropwizard-Metrics和Dubbo-Metrics。它们轻巧灵活,有些是沉重而强大的,并且因为它们也是“实现的”,所以它们不包含在seata-metrics-api中以避免绑定。

Seatera-metrics-core模块

Metrics核心模块,根据配置组织(加载)1 Registry和N Exporter;

Seata-metrics-registry-compact模块

这是我们提供的默认(内置)Registry实现,无需使用其他Metrics开源库,轻量级实现以下四种Meter:

仪表类型

描述

CompactGauge

单一最新价值指标

CompactCounter

单个累积指标可以增加或减少

CompactSummary

多个测量输出计数器将输出总计数(计数),计数(计数),最大值(最大值),平均值(总计/计数)和tps(总计/时间间隔),无单位

CompactTimer

多个测量输出计数器将输出总计数(计数),计数(计数),最大值(最大值),平均值(总计/计数)和支持微秒积分。

包含的注册表(CompactRegistry)仅在调用measure()方法时计算度量标准。因此,计算窗口完全依赖于Exporter的实现,因此它不适用于需要多个Exporters的场景(如何展开,请参见Text)。

描述:将来可以添加更复杂和复杂的指标,例如直方图,这是一个可用于本地聚合75,90,95,98,99,99.9的度量.适合某些场合,但需要更多的RAM。所有仪表都将继承仪表,所有仪表将在执行measure()方法后将1或N测量结果的生成标准化。

Seata-metrics-exporter-prometheus模块

Prometheus出版商PrometheusExporter将度量数据同步到Prometheus。

TC中度量标准的初始化步骤和工作原理如下:

服务器调用MetricsManager.get()。init()来启动Metrics的初始化;

MetricsManager读取配置并通过SPI初始化相应的Registry和N Exporters(分别通过RegistryFactory和ExporterFactory);

如果初始化成功,则代表用户启用度量标准功能,MetricsSubscriber初始化并注册到EventBus;

DefaultCore和DefaultCoordinator根据Transaction状态的变化触发与状态对应的事件。 MetricsSubscriber根据状态将相应的度量标准记录到注册表中;

出口商定期从注册表获取数据并将其发布到外部对接监控系统。

可以看出,Metrics被定位为可选功能。如果未配置,则不会创建和注册事件订阅者MetricsSubscriber以避免不必要的性能开销。

如果需要启用TC度量标准,则需要将配置项添加到其配置中:

启动TC,您可以在其上获取Metrics的文本格式数据。

提示:默认情况下,使用端口9988。 Prometheus已注册的端口列表在这里。如果要更改端口,可以通过metrics.exporter-prometheus-port对其进行修改。

下载并启动Prometheus

下载完成后,修改Prometheus配置文件prometheus.yml并添加度量数据以在scrape_configs中获取Seata:

查看数据输出

建议结合使用Grafana以获得更好的查询结果。 Seata导出的当前度量标准包括:

度量

描述

Seata.transaction(角色=TC,米=计数器,状态=活性/致力于/回滚)

当前活动/提交/回滚的事务总数

Seata.transaction(角色=TC,米=计数器,状态=活性/致力于/回滚)

在当前期间内提交/回滚的交易数量

Seata.transaction(角色=TC,米=摘要,统计量=TPS,状态=致力于/回滚)

当前周期中的事务/重新打印事务TPS(transactionpersecond)

Seata.transaction(角色=TC,米=计时器,统计量=总,状态=致力于/回滚)

在当前周期中提交/回滚所花费的时间总和

Seata.transaction(角色=TC,米=计时器,统计量=计数,状态=致力于/回滚)

在当前期间内提交/回滚的交易数量

Seata.transaction(角色=TC,米=计时器,统计量=平均,状态=致力于/回滚)

在当前周期中提交/回滚事务所花费的平均时间

Seata.transaction(角色=TC,米=计时器,统计=MAX,状态=致力于/回滚)

在当前周期中提交/回滚事务所花费的最长时间

提示:seta.transaction的值(role=tc,meter=summary,statistic=count,stat==committed/rollback)和seta.transaction(role=tc,meter=timer,statistic=count,status=committed/rollback)可能相同,但它们来自两个不同的指标。

如果有几种情况:

1.您没有将Prometheus用作操作和维护监控系统,但您希望能够将Seata的度量标准数据集成到仪表板中;

您需要实现一个新的Exporter,例如,如果您需要停靠Zabbix,创建seata-metrics-exporter-zabbix模块,然后将新的Exporter类型添加到ExporterType,最后在metrics.exporter-list中配置它。

2.您需要更复杂和功能强大的度量标准类型,这些类型已经存在于其他度量标准实现库中,并且您希望直接集成这些第三方依赖项;

您可以在不使用内置CompactRegistry实现的情况下扩展新的注册表库。例如,您希望使用NetflixSpectator实现,扩展名为seata-metrics-registry-spectator的模块,然后向RegistryType添加新的注册表类型。之后,将metrics.registry-type设置为相应的类型。

3,您需要更改默认度量的测量输出,例如在Timer中添加min或sd(方差);

您可以修改相应仪表的实现,包括measure()方法返回的测量列表。

1.将度量标准功能添加到TM和RM:

TM:稍后实施,包括:

Seata.transaction(role=tm,name {GlobalTransactionalName},meter=counter,status=active/committed/rollback):使用GlobalTransactionalName作为维度来区分不同Transactional的状态。

RM:稍后实施,包括:

Eata.transaction(role=rm,name {BranchTransactionalName},mode=at/mt,meter=counter,status=active/committed/rollback):区分不同分支的状态Transactional与BranchTransactionalName作为维度和AT/MT尺寸。

2.回应社区,扩展更多的注册管理机构和出口商,并支持更丰富的仪表。

本文中介绍的度量标准是一个侵入性功能。如果您只想使用非侵入式度量标准,则可以使用版本6.3中添加的SkyWalking版本的Seata集成。

作者:中间件兄弟

阅读原文

本文是云栖社区的原创内容,未经许可,不得转载。

从用户的角度来体验开源项目的增长,我们是“开发人员说”专栏的初衷,当开发人员选择开源项目时,它提供了更多的立体项目信息。该专栏的所有内容均来自作者的原创/贡献。本文是“开发人员”的第9篇。作者郑阳勇,云辉智慧技术专家,开源爱好者,关注微服务,物联网领域技术,希望通过参与开源帮助他人。同时帮助自己。

Seata 0.7.0版将包含一项新功能 - Metrics。作为APM(ApplicationPerformance Management&Monitoring)的三大基石之一,它可以快速,全面地获取重要的统计信息,如TC,TM(计划)和RM(计划中)的交易活动状态和延迟。

Seata是一个集成的数据一致性框架。 Metrics模块将尽可能少地使用第三方依赖项来降低冲突风险;例如,不使用SpringBean机制,而是使用SPI(ServiceProviderInterface)加载扩展。

Metrics模块将努力实现更高的测量性能和更低的资源开销,并最大限度地减少因打开而产生的副作用;

配置,是否激活Metrics,如何释放数据取决于相应的配置;

最初,TC只完成核心交易相关指标的实施,然后结合社区需求逐步改善运营和维护所需的其他指标。

SeataMetrics模块全部采用seata-metrics,0.7版本包括:

它由两个核心API模块组成,即seata-metrics-api和seata-metrics-core,以及N个实现模块,如seata-metrics-registry-compact和seata-metrics-exporter-prometheus:

Seata-metrics-api模块

该模块是Metrics的核心,将作为Seata基础架构的一部分由TC,TM和RM引用。它里面没有任何具体的实现代码。它只包含接口定义。定义包括:

1,仪表接口:仪表,计数器,定时器.

2,注册容器界面:注册表

3,测量数据导出界面:出口商

提示:度量标准本身在开源世界中有许多实现,例如Netflix-Spectator,Dropwizard-Metrics和Dubbo-Metrics。它们轻巧灵活,有些是沉重而强大的,并且因为它们也是“实现的”,所以它们不包含在seata-metrics-api中以避免绑定。

Seatera-metrics-core模块

Metrics核心模块,根据配置组织(加载)1 Registry和N Exporter;

Seata-metrics-registry-compact模块

这是我们提供的默认(内置)Registry实现,无需使用其他Metrics开源库,轻量级实现以下四种Meter:

仪表类型

描述

CompactGauge

单一最新价值指标

CompactCounter

单个累积指标可以增加或减少

CompactSummary

多个测量输出计数器将输出总计数(计数),计数(计数),最大值(最大值),平均值(总计/计数)和tps(总计/时间间隔),无单位

CompactTimer

多个测量输出计数器将输出总计数(计数),计数(计数),最大值(最大值),平均值(总计/计数)和支持微秒积分。

包含的注册表(CompactRegistry)仅在调用measure()方法时计算度量标准。因此,计算窗口完全依赖于Exporter的实现,因此它不适用于需要多个Exporters的场景(如何展开,请参见Text)。

描述:将来可以添加更复杂和复杂的指标,例如直方图,这是一个可用于本地聚合75,90,95,98,99,99.9的度量.适合某些场合,但需要更多的RAM。所有仪表都将继承仪表,所有仪表将在执行measure()方法后将1或N测量结果的生成标准化。

Seata-metrics-exporter-prometheus模块

Prometheus出版商PrometheusExporter将度量数据同步到Prometheus。

TC中度量标准的初始化步骤和工作原理如下:

服务器调用MetricsManager.get()。init()来启动Metrics的初始化;

MetricsManager读取配置并通过SPI初始化相应的Registry和N Exporters(分别通过RegistryFactory和ExporterFactory);

如果初始化成功,则代表用户启用度量标准功能,MetricsSubscriber初始化并注册到EventBus;

DefaultCore和DefaultCoordinator根据Transaction状态的变化触发与状态对应的事件。 MetricsSubscriber根据状态将相应的度量标准记录到注册表中;

出口商定期从注册表获取数据并将其发布到外部对接监控系统。

可以看出,Metrics被定位为可选功能。如果未配置,则不会创建和注册事件订阅者MetricsSubscriber以避免不必要的性能开销。

如果需要启用TC度量标准,则需要将配置项添加到其配置中:

启动TC,您可以在其上获取Metrics的文本格式数据。

提示:默认情况下,使用端口9988。 Prometheus已注册的端口列表在这里。如果要更改端口,可以通过metrics.exporter-prometheus-port对其进行修改。

下载并启动Prometheus

下载完成后,修改Prometheus配置文件prometheus.yml并添加度量数据以在scrape_configs中获取Seata:

查看数据输出

建议结合使用Grafana以获得更好的查询结果。 Seata导出的当前度量标准包括:

度量

描述

Seata.transaction(角色=TC,米=计数器,状态=活性/致力于/回滚)

当前活动/提交/回滚的事务总数

Seata.transaction(角色=TC,米=计数器,状态=活性/致力于/回滚)

在当前期间内提交/回滚的交易数量

Seata.transaction(角色=TC,米=摘要,统计量=TPS,状态=致力于/回滚)

当前周期中的事务/重新打印事务TPS(transactionpersecond)

Seata.transaction(角色=TC,米=计时器,统计量=总,状态=致力于/回滚)

在当前周期中提交/回滚所花费的时间总和

Seata.transaction(角色=TC,米=计时器,统计量=计数,状态=致力于/回滚)

在当前期间内提交/回滚的交易数量

Seata.transaction(角色=TC,米=计时器,统计量=平均,状态=致力于/回滚)

在当前周期中提交/回滚事务所花费的平均时间

Seata.transaction(角色=TC,米=计时器,统计=MAX,状态=致力于/回滚)

在当前周期中提交/回滚事务所花费的最长时间

提示:seta.transaction的值(role=tc,meter=summary,statistic=count,stat==committed/rollback)和seta.transaction(role=tc,meter=timer,statistic=count,status=committed/rollback)可能相同,但它们来自两个不同的指标。

如果有几种情况:

1.您没有将Prometheus用作操作和维护监控系统,但您希望能够将Seata的度量标准数据集成到仪表板中;

您需要实现一个新的Exporter,例如,如果您需要停靠Zabbix,创建seata-metrics-exporter-zabbix模块,然后将新的Exporter类型添加到ExporterType,最后在metrics.exporter-list中配置它。

2.您需要更复杂和功能强大的度量标准类型,这些类型已经存在于其他度量标准实现库中,并且您希望直接集成这些第三方依赖项;

您可以在不使用内置CompactRegistry实现的情况下扩展新的注册表库。例如,您希望使用NetflixSpectator实现,扩展名为seata-metrics-registry-spectator的模块,然后向RegistryType添加新的注册表类型。之后,将metrics.registry-type设置为相应的类型。

3,您需要更改默认度量的测量输出,例如在Timer中添加min或sd(方差);

您可以修改相应仪表的实现,包括measure()方法返回的测量列表。

1.将度量标准功能添加到TM和RM:

TM:稍后实施,包括:

Seata.transaction(role=tm,name {GlobalTransactionalName},meter=counter,status=active/committed/rollback):使用GlobalTransactionalName作为维度来区分不同Transactional的状态。

RM:稍后实施,包括:

Eata.transaction(role=rm,name {BranchTransactionalName},mode=at/mt,meter=counter,status=active/committed/rollback):区分不同分支的状态Transactional与BranchTransactionalName作为维度和AT/MT尺寸。

2.回应社区,扩展更多的注册管理机构和出口商,并支持更丰富的仪表。

本文中介绍的度量标准是一个侵入性功能。如果您只想使用非侵入式度量标准,则可以使用版本6.3中添加的SkyWalking版本的Seata集成。

作者:中间件兄弟

阅读原文

本文是云栖社区的原创内容,未经许可,不得转载。