指标发射器

优质
小牛编辑
129浏览
2023-12-01

Spring Cloud Stream提供了一个名为spring-cloud-stream-metrics的模块,可以用来从Spring Boot度量端点到命名通道发出任何可用度量。该模块允许运营商从流应用收集指标,而不依赖轮询其端点。

当您设置度量绑定的目标名称(例如spring.cloud.stream.bindings.applicationMetrics.destination=<DESTINATION_NAME>)时,该模块将被激活。可以以与任何其他生成器绑定相似的方式配置applicationMetricsapplicationMetricscontentType默认设置为application/json

以下属性可用于自定义度量标准的排放:

spring.cloud.stream.metrics.key

要发射的度量的名称。应该是每个应用程序的唯一值。

默认

${spring.application.name:${vcap.application.name:${spring.config.name:application}}}

spring.cloud.stream.metrics.prefix

前缀字符串,以前缀到度量键。

默认值:``

spring.cloud.stream.metrics.properties

就像includes选项一样,它允许将白名单应用程序属性添加到度量有效负载

默认值:null。

有关度量导出过程的详细概述,请参见Spring Boot参考文档。Spring Cloud Stream提供了一个名为application的指标导出器,可以通过常规Spring Boot指标配置属性进行配置

可以通过使用出口商的全局Spring Boot配置设置或使用特定于导出器的属性来配置导出器。要使用全局配置设置,属性应以spring.metric.export为前缀(例如spring.metric.export.includes=integration**)。这些配置选项将适用于所有出口商(除非它们的配置不同)。或者,如果要使用与其他出口商不同的配置设置(例如,限制发布的度量数量),则可以使用前缀spring.metrics.export.triggers.application配置Spring Cloud Stream提供的度量导出器(例如spring.metrics.export.triggers.application.includes=integration**)。

注意

由于Spring Boot的轻松约束,所包含的属性的值可能与原始值稍有不同。

作为经验法则,度量导出器将尝试使用点符号(例如JAVA_HOME成为java.home)以一致的格式标准化所有属性。

规范化的目标是使下游用户能够始终如一地接收属性名称,无论它们如何设置在受监视的应用程序上(--spring.application.nameSPRING_APPLICATION_NAME始终会生成spring.application.name)。

以下是通过以下命令以JSON格式发布到频道的数据的示例:

java -jar time-source.jar \
  --spring.cloud.stream.bindings.applicationMetrics.destination=someMetrics \
  --spring.cloud.stream.metrics.properties=spring.application** \
  --spring.metrics.export.includes=integration.channel.input**,integration.channel.output**

得到的JSON是:

{
  "name":"time-source",
  "metrics":[
   {
    "name":"integration.channel.output.errorRate.mean",
    "value":0.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.errorRate.max",
    "value":0.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.errorRate.min",
    "value":0.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.errorRate.stdev",
    "value":0.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.errorRate.count",
    "value":0.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.sendCount",
    "value":6.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.sendRate.mean",
    "value":0.994885872292989,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.sendRate.max",
    "value":1.006247080013156,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.sendRate.min",
    "value":1.0012035220116378,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.sendRate.stdev",
    "value":6.505181111084848E-4,
    "timestamp":"2017-04-11T16:56:35.790Z"
   },
   {
    "name":"integration.channel.output.sendRate.count",
    "value":6.0,
    "timestamp":"2017-04-11T16:56:35.790Z"
   }
  ],
  "createdTime":"2017-04-11T20:56:35.790Z",
  "properties":{
   "spring.application.name":"time-source",
   "spring.application.index":"0"
  }
}