要了解有关 Micrometer 功能的更多信息,请参阅其参考文档,特别是概念部分

开始

Spring Boot 会自动配置一个复合体,并为它在类路径上找到的每个受支持的实现向复合体添加一个注册表。 在运行时类路径中具有依赖关系足以让 Spring Boot 配置注册表。MeterRegistrymicrometer-registry-{system}Spring中文文档

大多数注册管理机构都具有共同的特征。 例如,即使 Micrometer 注册表实现位于类路径上,也可以禁用特定注册表。 以下示例禁用 Datadog:Spring中文文档

management.datadog.metrics.export.enabled=false
management:
  datadog:
    metrics:
      export:
        enabled: false

除非注册表特定属性另有说明,否则还可以禁用所有注册表,如以下示例所示:Spring中文文档

management.defaults.metrics.export.enabled=false
management:
  defaults:
    metrics:
      export:
        enabled: false

Spring Boot 还会将任何自动配置的注册表添加到类的全局静态复合注册表中,除非您明确告诉它不要:MetricsSpring中文文档

management.metrics.use-global-registry=false
management:
  metrics:
    use-global-registry: false

在向注册表注册任何计量之前,您可以注册任意数量的 Bean 以进一步配置注册表,例如应用通用标签:MeterRegistryCustomizerSpring中文文档

import io.micrometer.core.instrument.MeterRegistry;

import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyMeterRegistryConfiguration {

	@Bean
	public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
		return (registry) -> registry.config().commonTags("region", "us-east-1");
	}

}
import io.micrometer.core.instrument.MeterRegistry
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyMeterRegistryConfiguration {

	@Bean
	fun metricsCommonTags(): MeterRegistryCustomizer<MeterRegistry> {
		return MeterRegistryCustomizer { registry ->
			registry.config().commonTags("region", "us-east-1")
		}
	}

}

可以通过更具体地了解泛型类型,将自定义项应用于特定的注册表实现:Spring中文文档

import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.graphite.GraphiteMeterRegistry;

import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyMeterRegistryConfiguration {

	@Bean
	public MeterRegistryCustomizer<GraphiteMeterRegistry> graphiteMetricsNamingConvention() {
		return (registry) -> registry.config().namingConvention(this::name);
	}

	private String name(String name, Meter.Type type, String baseUnit) {
		return ...
	}

}
import io.micrometer.core.instrument.Meter
import io.micrometer.core.instrument.config.NamingConvention
import io.micrometer.graphite.GraphiteMeterRegistry
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyMeterRegistryConfiguration {

	@Bean
	fun graphiteMetricsNamingConvention(): MeterRegistryCustomizer<GraphiteMeterRegistry> {
		return MeterRegistryCustomizer { registry: GraphiteMeterRegistry ->
			registry.config().namingConvention(this::name)
		}
	}

	private fun name(name: String, type: Meter.Type, baseUnit: String?): String {
		return  ...
	}

}

Spring Boot 还配置了内置检测,您可以通过配置或专用注释标记来控制这些检测Spring中文文档

支持的监控系统

本节简要介绍每个受支持的监控系统。Spring中文文档

AppOptics

默认情况下,AppOptics 注册表会定期将指标推送到 。 若要将指标导出到 SaaS AppOptics,必须提供 API 令牌:api.appoptics.com/v1/measurementsSpring中文文档

management.appoptics.metrics.export.api-token=YOUR_TOKEN
management:
  appoptics:
    metrics:
      export:
        api-token: "YOUR_TOKEN"

地图集

默认情况下,指标将导出到本地计算机上运行的 Atlas。 您可以提供 Atlas 服务器的位置:Spring中文文档

management.atlas.metrics.export.uri=https://atlas.example.com:7101/api/v1/publish
management:
  atlas:
    metrics:
      export:
        uri: "https://atlas.example.com:7101/api/v1/publish"

数据狗

Datadog 注册表会定期将指标推送到 datadoghq。 若要将指标导出到 Datadog,必须提供 API 密钥:Spring中文文档

management.datadog.metrics.export.api-key=YOUR_KEY
management:
  datadog:
    metrics:
      export:
        api-key: "YOUR_KEY"

如果另外提供应用程序密钥(可选),则还将导出计量描述、类型和基本单位等元数据:Spring中文文档

management.datadog.metrics.export.api-key=YOUR_API_KEY
management.datadog.metrics.export.application-key=YOUR_APPLICATION_KEY
management:
  datadog:
    metrics:
      export:
        api-key: "YOUR_API_KEY"
        application-key: "YOUR_APPLICATION_KEY"

默认情况下,指标将发送到 Datadog 美国站点 ()。 如果您的 Datadog 项目托管在其他站点之一上,或者您需要通过代理发送指标,请相应地配置 URI:api.datadoghq.comSpring中文文档

management.datadog.metrics.export.uri=https://api.datadoghq.eu
management:
  datadog:
    metrics:
      export:
        uri: "https://api.datadoghq.eu"

您还可以更改将指标发送到 Datadog 的时间间隔:Spring中文文档

management.datadog.metrics.export.step=30s
management:
  datadog:
    metrics:
      export:
        step: "30s"

Dynatrace

Dynatrace 提供了两个指标摄取 API,这两个 API 都是针对 Micrometer 实现的。 您可以在此处找到有关 Micrometer 指标摄取的 Dynatrace 文档。 仅当导出到 Timeseries v1 API 时,命名空间中的配置属性才适用。 命名空间中的配置属性仅在导出到 Metrics v2 API 时适用。 请注意,此集成一次只能导出到 API 的任一版本,并且是首选。 如果在命名空间中设置了(v1 是必需的,但在 v2 中未使用),则指标将导出到终结点。 否则,假设。v1v2v1v2v2device-idv1v1v2Spring中文文档

v2 API

可以通过两种方式使用 v2 API。Spring中文文档

自动配置

Dynatrace 自动配置适用于由 OneAgent 或 Dynatrace Operator for Kubernetes 监控的主机。Spring中文文档

本地 OneAgent:如果主机上正在运行 OneAgent,则指标会自动导出到本地 OneAgent 引入终结点。 引入端点将指标转发到 Dynatrace 后端。Spring中文文档

Dynatrace Kubernetes 操作员:在安装了 Dynatrace Operator 的 Kubernetes 中运行时,注册表将自动从 Operator 获取端点 URI 和 API 令牌。Spring中文文档

这是默认行为,除了依赖 之外,不需要任何特殊设置。io.micrometer:micrometer-registry-dynatraceSpring中文文档

手动配置

如果没有可用的自动配置,则需要指标 v2 API 的终端节点和 API 令牌。 API 令牌必须具有“引入指标”() 权限集。 建议将令牌的范围限制为此权限。 您必须确保终结点 URI 包含以下路径(例如,):metrics.ingest/api/v2/metrics/ingestSpring中文文档

指标 API v2 引入终结点的 URL 因部署选项而异:Spring中文文档

  • SaaS的:https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingestSpring中文文档

  • 托管部署:https://{your-domain}/e/{your-environment-id}/api/v2/metrics/ingestSpring中文文档

以下示例使用环境 ID 配置指标导出:exampleSpring中文文档

management.dynatrace.metrics.export.uri=https://example.live.dynatrace.com/api/v2/metrics/ingest
management.dynatrace.metrics.export.api-token=YOUR_TOKEN
management:
  dynatrace:
    metrics:
      export:
        uri: "https://example.live.dynatrace.com/api/v2/metrics/ingest"
        api-token: "YOUR_TOKEN"

使用 Dynatrace v2 API 时,可以使用以下可选功能(有关详细信息,请参阅 Dynatrace 文档):Spring中文文档

  • 指标键前缀:设置附加到所有导出的指标键的前缀。Spring中文文档

  • 使用 Dynatrace 元数据扩充:如果 OneAgent 或 Dynatrace 运算符正在运行,请使用其他元数据(例如,关于主机、进程或 Pod 的元数据)扩充指标。Spring中文文档

  • 默认维度:指定添加到所有导出指标的键值对。 如果使用 Micrometer 指定了具有相同键的标签,则它们将覆盖默认尺寸。Spring中文文档

  • 使用 Dynatrace 摘要工具:在某些情况下,Micrometer Dynatrace 注册表创建的指标被拒绝。 在 Micrometer 1.9.x 中,通过引入特定于 Dynatrace 的摘要工具解决了此问题。 将此开关设置为强制 Micrometer 回退到 1.9.x 之前的默认行为。 仅当从 Micrometer 1.8.x 迁移到 1.9.x 时遇到问题时,才应使用它。falseSpring中文文档

  • 导出测量仪元数据:从 Micrometer 1.12.0 开始,Dynatrace 导出器还会默认导出测量仪元数据,例如单位和描述。 使用切换开关关闭此功能。export-meter-metadataSpring中文文档

可以不指定 URI 和 API 令牌,如以下示例所示。 在此方案中,使用自动配置的终结点:Spring中文文档

management.dynatrace.metrics.export.v2.metric-key-prefix=your.key.prefix
management.dynatrace.metrics.export.v2.enrich-with-dynatrace-metadata=true
management.dynatrace.metrics.export.v2.default-dimensions.key1=value1
management.dynatrace.metrics.export.v2.default-dimensions.key2=value2
management.dynatrace.metrics.export.v2.use-dynatrace-summary-instruments=true
management.dynatrace.metrics.export.v2.export-meter-metadata=true
management:
  dynatrace:
    metrics:
      export:
        # Specify uri and api-token here if not using the local OneAgent endpoint.
        v2:
          metric-key-prefix: "your.key.prefix"
          enrich-with-dynatrace-metadata: true
          default-dimensions:
            key1: "value1"
            key2: "value2"
          use-dynatrace-summary-instruments: true # (default: true)
          export-meter-metadata: true             # (default: true)

v1 API(旧版)

Dynatrace v1 API 指标注册表使用时序 v1 API 定期将指标推送到配置的 URI。 为了向后兼容现有设置,当设置(v1 需要,但在 v2 中不使用)时,指标将导出到 Timeseries v1 终结点。 要将指标导出到 Dynatrace,必须提供 API 令牌、设备 ID 和 URI:device-idSpring中文文档

management.dynatrace.metrics.export.uri=https://{your-environment-id}.live.dynatrace.com
management.dynatrace.metrics.export.api-token=YOUR_TOKEN
management.dynatrace.metrics.export.v1.device-id=YOUR_DEVICE_ID
management:
  dynatrace:
    metrics:
      export:
        uri: "https://{your-environment-id}.live.dynatrace.com"
        api-token: "YOUR_TOKEN"
        v1:
          device-id: "YOUR_DEVICE_ID"

对于 v1 API,您必须指定不带路径的基本环境 URI,因为 v1 终结点路径是自动添加的。Spring中文文档

与版本无关的设置

除了 API 端点和令牌之外,您还可以更改指标发送到 Dynatrace 的时间间隔。 默认导出间隔为 。 以下示例将导出间隔设置为 30 秒:60sSpring中文文档

management.dynatrace.metrics.export.step=30s
management:
  dynatrace:
    metrics:
      export:
        step: "30s"

您可以在 Micrometer 文档Dynatrace 文档中找到有关如何为 Micrometer 设置 Dynatrace 导出器的更多信息。Spring中文文档

弹性的

默认情况下,指标会导出到在本地计算机上运行的 Elastic。 您可以使用以下属性提供要使用的弹性服务器的位置:Spring中文文档

management.elastic.metrics.export.host=https://elastic.example.com:8086
management:
  elastic:
    metrics:
      export:
        host: "https://elastic.example.com:8086"

神经节

默认情况下,指标将导出到本地计算机上运行的 Ganglia。 您可以提供 Ganglia 服务器主机和端口,如以下示例所示:Spring中文文档

management.ganglia.metrics.export.host=ganglia.example.com
management.ganglia.metrics.export.port=9649
management:
  ganglia:
    metrics:
      export:
        host: "ganglia.example.com"
        port: 9649

石墨

默认情况下,指标将导出到本地计算机上运行的 Graphite。 您可以提供 Graphite 服务器主机和端口,如以下示例所示:Spring中文文档

management.graphite.metrics.export.host=graphite.example.com
management.graphite.metrics.export.port=9004
management:
  graphite:
    metrics:
      export:
         host: "graphite.example.com"
         port: 9004

千分尺提供了一个默认值,用于控制如何将尺寸计 ID 映射到平面层次结构名称HierarchicalNameMapperSpring中文文档

要控制此行为,请定义您的行为并提供您自己的 . 除非您定义自己的 bean,否则会提供自动配置的 bean 和 bean:GraphiteMeterRegistryHierarchicalNameMapperGraphiteConfigClockSpring中文文档

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.core.instrument.util.HierarchicalNameMapper;
import io.micrometer.graphite.GraphiteConfig;
import io.micrometer.graphite.GraphiteMeterRegistry;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyGraphiteConfiguration {

	@Bean
	public GraphiteMeterRegistry graphiteMeterRegistry(GraphiteConfig config, Clock clock) {
		return new GraphiteMeterRegistry(config, clock, this::toHierarchicalName);
	}

	private String toHierarchicalName(Meter.Id id, NamingConvention convention) {
		return ...
	}

}
import io.micrometer.core.instrument.Clock
import io.micrometer.core.instrument.Meter
import io.micrometer.core.instrument.config.NamingConvention
import io.micrometer.core.instrument.util.HierarchicalNameMapper
import io.micrometer.graphite.GraphiteConfig
import io.micrometer.graphite.GraphiteMeterRegistry
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyGraphiteConfiguration {

	@Bean
	fun graphiteMeterRegistry(config: GraphiteConfig, clock: Clock): GraphiteMeterRegistry {
		return GraphiteMeterRegistry(config, clock, this::toHierarchicalName)
	}
	private fun toHierarchicalName(id: Meter.Id, convention: NamingConvention): String {
		return  ...
	}

}

Humio(休米奥酒店)

默认情况下,Humio 注册表会定期将指标推送到 cloud.humio.com。 要将指标导出到 SaaS Humio,您必须提供 API 令牌:Spring中文文档

management.humio.metrics.export.api-token=YOUR_TOKEN
management:
  humio:
    metrics:
      export:
        api-token: "YOUR_TOKEN"

您还应该配置一个或多个标签来标识指标推送到的数据源:Spring中文文档

management.humio.metrics.export.tags.alpha=a
management.humio.metrics.export.tags.bravo=b
management:
  humio:
    metrics:
      export:
        tags:
          alpha: "a"
          bravo: "b"

流入

默认情况下,指标将导出到使用默认配置在本地计算机上运行的 Influx v1 实例。 要将指标导出到 InfluxDB v2,请配置用于写入指标的 、 和 身份验证。 您可以使用以下方法提供要使用的 Influx 服务器的位置:orgbuckettokenSpring中文文档

management.influx.metrics.export.uri=https://influx.example.com:8086
management:
  influx:
    metrics:
      export:
        uri: "https://influx.example.com:8086"

JMX公司

Micrometer 提供了到 JMX 的分层映射,主要作为一种廉价且可移植的本地查看指标的方式。 缺省情况下,指标将导出到 JMX 域。 您可以使用以下方法提供要使用的域:metricsSpring中文文档

management.jmx.metrics.export.domain=com.example.app.metrics
management:
  jmx:
    metrics:
      export:
        domain: "com.example.app.metrics"

千分尺提供了一个默认值,用于控制如何将尺寸计 ID 映射到平面层次结构名称HierarchicalNameMapperSpring中文文档

要控制此行为,请定义您的行为并提供您自己的 . 除非您定义自己的 bean,否则会提供自动配置的 bean 和 bean:JmxMeterRegistryHierarchicalNameMapperJmxConfigClockSpring中文文档

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.core.instrument.util.HierarchicalNameMapper;
import io.micrometer.jmx.JmxConfig;
import io.micrometer.jmx.JmxMeterRegistry;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyJmxConfiguration {

	@Bean
	public JmxMeterRegistry jmxMeterRegistry(JmxConfig config, Clock clock) {
		return new JmxMeterRegistry(config, clock, this::toHierarchicalName);
	}

	private String toHierarchicalName(Meter.Id id, NamingConvention convention) {
		return ...
	}

}
import io.micrometer.core.instrument.Clock
import io.micrometer.core.instrument.Meter
import io.micrometer.core.instrument.config.NamingConvention
import io.micrometer.core.instrument.util.HierarchicalNameMapper
import io.micrometer.jmx.JmxConfig
import io.micrometer.jmx.JmxMeterRegistry
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyJmxConfiguration {

	@Bean
	fun jmxMeterRegistry(config: JmxConfig, clock: Clock): JmxMeterRegistry {
		return JmxMeterRegistry(config, clock, this::toHierarchicalName)
	}

	private fun toHierarchicalName(id: Meter.Id, convention: NamingConvention): String {
		return  ...
	}

}

KairosDB数据库

默认情况下,指标将导出到本地计算机上运行的 KairosDB。 您可以通过以下方式提供要使用的 KairosDB 服务器的位置:Spring中文文档

management.kairos.metrics.export.uri=https://kairosdb.example.com:8080/api/v1/datapoints
management:
  kairos:
    metrics:
      export:
        uri: "https://kairosdb.example.com:8080/api/v1/datapoints"

新遗物

New Relic 注册中心会定期将指标推送到 New Relic。 要将指标导出到 New Relic,您必须提供 API 密钥和账户 ID:Spring中文文档

management.newrelic.metrics.export.api-key=YOUR_KEY
management.newrelic.metrics.export.account-id=YOUR_ACCOUNT_ID
management:
  newrelic:
    metrics:
      export:
        api-key: "YOUR_KEY"
        account-id: "YOUR_ACCOUNT_ID"

您还可以更改将指标发送到 New Relic 的时间间隔:Spring中文文档

management.newrelic.metrics.export.step=30s
management:
  newrelic:
    metrics:
      export:
        step: "30s"

缺省情况下,指标是通过 REST 调用发布的,但如果类路径上有 Java 代理 API,您也可以使用它:Spring中文文档

management.newrelic.metrics.export.client-provider-type=insights-agent
management:
  newrelic:
    metrics:
      export:
        client-provider-type: "insights-agent"

最后,您可以通过定义自己的 Bean 来完全控制。NewRelicClientProviderSpring中文文档

OpenTelemetry

默认情况下,指标将导出到本地计算机上运行的 OpenTelemetry。 您可以使用以下方法提供要使用的 OpenTelemetry 指标终结点的位置:Spring中文文档

management.otlp.metrics.export.url=https://otlp.example.com:4318/v1/metrics
management:
  otlp:
    metrics:
      export:
        url: "https://otlp.example.com:4318/v1/metrics"

普罗 米修斯

Prometheus 希望抓取或轮询单个应用程序实例的指标。 Spring Boot 提供了一个执行器端点,用于呈现具有适当格式的 Prometheus 抓取/actuator/prometheusSpring中文文档

默认情况下,终结点不可用,必须公开。有关更多详细信息,请参阅公开终结点

以下示例添加到:scrape_configprometheus.ymlSpring中文文档

scrape_configs:
- job_name: "spring"
  metrics_path: "/actuator/prometheus"
  static_configs:
  - targets: ["HOST:PORT"]

还支持 Prometheus 示例。 要启用此功能,应存在 Bean。 如果您使用的是已弃用的 Prometheus simpleclient 支持,并且想要启用该功能,则应该存在一个 bean。 如果您使用千分尺跟踪,这将为您自动配置,但您可以随时根据需要创建自己的千分尺跟踪。 请查看 Prometheus 文档,因为此功能需要在 Prometheus 端显式启用,并且仅支持使用 OpenMetrics 格式。SpanContextSpanContextSupplierSpring中文文档

对于可能存在时间不够长而无法抓取的临时或批处理作业,您可以使用 Prometheus Pushgateway 支持将指标公开给 Prometheus。Spring中文文档

Prometheus Pushgateway 目前仅适用于已弃用的 Prometheus simpleclient,直到 Prometheus 1.x 客户端添加对它的支持。 要切换到 simpleclient,请从项目中删除并改为添加。io.micrometer:micrometer-registry-prometheusio.micrometer:micrometer-registry-prometheus-simpleclient

要启用 Prometheus Pushgateway 支持,请将以下依赖项添加到您的项目中:Spring中文文档

<dependency>
	<groupId>io.prometheus</groupId>
	<artifactId>simpleclient_pushgateway</artifactId>
</dependency>

当类路径上存在 Prometheus Pushgateway 依赖项并且该属性设置为 时,将自动配置 Bean。 这管理将指标推送到 Prometheus Pushgateway。management.prometheus.metrics.export.pushgateway.enabledtruePrometheusPushGatewayManagerSpring中文文档

您可以使用 下的属性来调整 。 对于高级配置,您还可以提供自己的 bean。PrometheusPushGatewayManagermanagement.prometheus.metrics.export.pushgatewayPrometheusPushGatewayManagerSpring中文文档

信号Fx

SignalFx 注册表会定期将指标推送到 SignalFx。 若要将指标导出到 SignalFx,必须提供访问令牌:Spring中文文档

management.signalfx.metrics.export.access-token=YOUR_ACCESS_TOKEN
management:
  signalfx:
    metrics:
      export:
        access-token: "YOUR_ACCESS_TOKEN"

还可以更改将指标发送到 SignalFx 的时间间隔:Spring中文文档

management.signalfx.metrics.export.step=30s
management:
  signalfx:
    metrics:
      export:
        step: "30s"

简单

Micrometer 附带一个简单的内存中后端,如果未配置其他注册表,该后端会自动用作回退。 这使您可以查看在指标终结点中收集的指标。Spring中文文档

一旦您使用任何其他可用的后端,内存中的后端就会自行禁用。 您也可以显式禁用它:Spring中文文档

management.simple.metrics.export.enabled=false
management:
  simple:
    metrics:
      export:
        enabled: false

堆栈驱动程序

Stackdriver 注册表会定期将指标推送到 Stackdriver。 要将指标导出到 SaaS Stackdriver,您必须提供 Google Cloud 项目 ID:Spring中文文档

management.stackdriver.metrics.export.project-id=my-project
management:
  stackdriver:
    metrics:
      export:
        project-id: "my-project"

您还可以更改将指标发送到 Stackdriver 的时间间隔:Spring中文文档

management.stackdriver.metrics.export.step=30s
management:
  stackdriver:
    metrics:
      export:
        step: "30s"

统计数字

StatsD 注册表急切地通过 UDP 将指标推送到 StatsD 代理。 默认情况下,指标将导出到本地计算机上运行的 StatsD 代理。 可以使用以下方法提供要使用的 StatsD 代理主机、端口和协议:Spring中文文档

management.statsd.metrics.export.host=statsd.example.com
management.statsd.metrics.export.port=9125
management.statsd.metrics.export.protocol=udp
management:
  statsd:
    metrics:
      export:
        host: "statsd.example.com"
        port: 9125
        protocol: "udp"

您还可以更改要使用的 StatsD 行协议(默认为 Datadog):Spring中文文档

management.statsd.metrics.export.flavor=etsy
management:
  statsd:
    metrics:
      export:
        flavor: "etsy"

Wavefront 注册表会定期将指标推送到 Wavefront。 如果您直接将指标导出到 Wavefront,则必须提供 API 令牌:Spring中文文档

management.wavefront.api-token=YOUR_API_TOKEN
management:
  wavefront:
    api-token: "YOUR_API_TOKEN"

或者,您可以使用环境中的 Wavefront sidecar 或内部代理将指标数据转发到 Wavefront API 主机:Spring中文文档

management.wavefront.uri=proxy://localhost:2878
management:
  wavefront:
    uri: "proxy://localhost:2878"
如果将指标发布到 Wavefront 代理(如 Wavefront 文档中所述),则主机必须采用以下格式。proxy://HOST:PORT

您还可以更改将指标发送到 Wavefront 的时间间隔:Spring中文文档

management.wavefront.metrics.export.step=30s
management:
  wavefront:
    metrics:
      export:
        step: "30s"

要控制此行为,请定义您的行为并提供您自己的 . 除非您定义自己的 bean,否则会提供自动配置的 bean 和 bean:GraphiteMeterRegistryHierarchicalNameMapperGraphiteConfigClockSpring中文文档

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.core.instrument.util.HierarchicalNameMapper;
import io.micrometer.graphite.GraphiteConfig;
import io.micrometer.graphite.GraphiteMeterRegistry;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyGraphiteConfiguration {

	@Bean
	public GraphiteMeterRegistry graphiteMeterRegistry(GraphiteConfig config, Clock clock) {
		return new GraphiteMeterRegistry(config, clock, this::toHierarchicalName);
	}

	private String toHierarchicalName(Meter.Id id, NamingConvention convention) {
		return ...
	}

}
import io.micrometer.core.instrument.Clock
import io.micrometer.core.instrument.Meter
import io.micrometer.core.instrument.config.NamingConvention
import io.micrometer.core.instrument.util.HierarchicalNameMapper
import io.micrometer.graphite.GraphiteConfig
import io.micrometer.graphite.GraphiteMeterRegistry
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyGraphiteConfiguration {

	@Bean
	fun graphiteMeterRegistry(config: GraphiteConfig, clock: Clock): GraphiteMeterRegistry {
		return GraphiteMeterRegistry(config, clock, this::toHierarchicalName)
	}
	private fun toHierarchicalName(id: Meter.Id, convention: NamingConvention): String {
		return  ...
	}

}

要控制此行为,请定义您的行为并提供您自己的 . 除非您定义自己的 bean,否则会提供自动配置的 bean 和 bean:JmxMeterRegistryHierarchicalNameMapperJmxConfigClockSpring中文文档

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.core.instrument.util.HierarchicalNameMapper;
import io.micrometer.jmx.JmxConfig;
import io.micrometer.jmx.JmxMeterRegistry;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyJmxConfiguration {

	@Bean
	public JmxMeterRegistry jmxMeterRegistry(JmxConfig config, Clock clock) {
		return new JmxMeterRegistry(config, clock, this::toHierarchicalName);
	}

	private String toHierarchicalName(Meter.Id id, NamingConvention convention) {
		return ...
	}

}
import io.micrometer.core.instrument.Clock
import io.micrometer.core.instrument.Meter
import io.micrometer.core.instrument.config.NamingConvention
import io.micrometer.core.instrument.util.HierarchicalNameMapper
import io.micrometer.jmx.JmxConfig
import io.micrometer.jmx.JmxMeterRegistry
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyJmxConfiguration {

	@Bean
	fun jmxMeterRegistry(config: JmxConfig, clock: Clock): JmxMeterRegistry {
		return JmxMeterRegistry(config, clock, this::toHierarchicalName)
	}

	private fun toHierarchicalName(id: Meter.Id, convention: NamingConvention): String {
		return  ...
	}

}
默认情况下,终结点不可用,必须公开。有关更多详细信息,请参阅公开终结点
Prometheus Pushgateway 目前仅适用于已弃用的 Prometheus simpleclient,直到 Prometheus 1.x 客户端添加对它的支持。 要切换到 simpleclient,请从项目中删除并改为添加。io.micrometer:micrometer-registry-prometheusio.micrometer:micrometer-registry-prometheus-simpleclient
如果将指标发布到 Wavefront 代理(如 Wavefront 文档中所述),则主机必须采用以下格式。proxy://HOST:PORT

支持的指标和计量

Spring Boot 为各种技术提供自动计量注册。 在大多数情况下,默认值提供可发布到任何受支持的监视系统的合理指标。Spring中文文档

JVM 指标

自动配置通过使用核心 Micrometer 类启用 JVM Metrics。 JVM 指标在计量名称下发布。jvm.Spring中文文档

提供了以下 JVM 指标:Spring中文文档

系统指标

自动配置通过使用核心千分尺类启用系统指标。 系统指标以 、 和 计量名称发布。system.process.disk.Spring中文文档

提供以下系统指标:Spring中文文档

应用程序启动指标

自动配置公开应用程序启动时间指标:Spring中文文档

  • application.started.time:启动应用程序所花费的时间。Spring中文文档

  • application.ready.time:应用程序准备好处理请求所需的时间。Spring中文文档

指标由应用程序类的完全限定名称标记。Spring中文文档

记录器指标

自动配置可启用 Logback 和 Log4J2 的事件指标。 详细信息以 or 计量名称发布。log4j2.events.logback.events.Spring中文文档

任务执行和调度指标

自动配置允许检测所有可用和 Bean,只要下属可用即可。 指标由执行程序的名称标记,该名称派生自 Bean 名称。ThreadPoolTaskExecutorThreadPoolTaskSchedulerThreadPoolExecutorSpring中文文档

JMS 指标

自动配置支持检测所有可用的 Bean 和带注释的方法。 这将分别产生和指标。 请参阅 Spring Framework 参考文档,了解有关生成的观察值的更多信息JmsTemplate@JmsListener"jms.message.publish""jms.message.process"Spring中文文档

Spring MVC 指标

自动配置支持检测 Spring MVC 控制器和功能处理程序处理的所有请求。 默认情况下,使用名称 . 您可以通过设置属性来自定义名称。http.server.requestsmanagement.observations.http.server.requests.nameSpring中文文档

若要添加到默认标记,请提供从包扩展而来的标记。 要替换默认标记,请提供实现 的 。@BeanDefaultServerRequestObservationConventionorg.springframework.http.server.observation@BeanServerRequestObservationConventionSpring中文文档

在某些情况下,Web 控制器中处理的异常不会记录为请求指标标记。 应用程序可以通过将已处理的异常设置为请求属性来选择加入并记录异常。

默认情况下,将处理所有请求。 若要自定义筛选器,请提供实现 的 。@BeanFilterRegistrationBean<ServerHttpObservationFilter>Spring中文文档

Spring WebFlux 指标

自动配置支持检测 Spring WebFlux 控制器和功能处理程序处理的所有请求。 默认情况下,使用名称 . 您可以通过设置属性来自定义名称。http.server.requestsmanagement.observations.http.server.requests.nameSpring中文文档

若要添加到默认标记,请提供从包扩展而来的标记。 要替换默认标记,请提供实现 的 。@BeanDefaultServerRequestObservationConventionorg.springframework.http.server.reactive.observation@BeanServerRequestObservationConventionSpring中文文档

在某些情况下,控制器和处理程序函数中处理的异常不会记录为请求指标标记。 应用程序可以通过将已处理的异常设置为请求属性来选择加入并记录异常。

Jersey Server 指标

自动配置支持检测 Jersey JAX-RS 实现处理的所有请求。 默认情况下,使用名称 . 您可以通过设置属性来自定义名称。http.server.requestsmanagement.observations.http.server.requests.nameSpring中文文档

默认情况下,Jersey 服务器指标使用以下信息进行标记:Spring中文文档

标记 描述

exceptionSpring中文文档

处理请求时引发的任何异常的简单类名。Spring中文文档

methodSpring中文文档

请求的方法(例如,或GETPOST)Spring中文文档

outcomeSpring中文文档

请求的结果,基于响应的状态代码。 1xx 是 , 2xx 是 , 3xx 是 , 4xx 是 , 5xx 是INFORMATIONALSUCCESSREDIRECTIONCLIENT_ERRORSERVER_ERRORSpring中文文档

statusSpring中文文档

响应的 HTTP 状态代码(例如,或200500)Spring中文文档

uriSpring中文文档

变量替换之前请求的 URI 模板(如果可能)(例如,/api/person/{id})Spring中文文档

要自定义标记,请提供实现 的 。@BeanJerseyObservationConventionSpring中文文档

HTTP 客户端指标

Spring Boot Actuator 管理 和 的检测。 为此,您必须注入自动配置的构建器并使用它来创建实例:RestTemplateWebClientRestClientSpring中文文档

您还可以手动应用负责此检测的定制员,即 和 。ObservationRestTemplateCustomizerObservationWebClientCustomizerObservationRestClientCustomizerSpring中文文档

默认情况下,使用名称 . 您可以通过设置属性来自定义名称。http.client.requestsmanagement.observations.http.client.requests.nameSpring中文文档

若要在使用 或 时自定义标记,请提供从包实现的标记。 若要在使用 时自定义标记,请提供从包中实现的标记。RestTemplateRestClient@BeanClientRequestObservationConventionorg.springframework.http.client.observationWebClient@BeanClientRequestObservationConventionorg.springframework.web.reactive.function.clientSpring中文文档

Tomcat 指标

自动配置仅在启用 后才启用 Tomcat 的检测。 默认情况下,该 处于禁用状态,但您可以通过设置为 来启用它。MBeanRegistryMBeanRegistryserver.tomcat.mbeanregistry.enabledtrueSpring中文文档

Tomcat 指标以计量名称发布。tomcat.Spring中文文档

缓存指标

自动配置允许在启动时检测所有可用实例,其指标前缀为 。 缓存检测针对一组基本指标进行了标准化。 此外,还提供特定于缓存的其他指标。CachecacheSpring中文文档

支持以下缓存库:Spring中文文档

指标由缓存的名称和 的名称标记,该名称派生自 Bean 名称。CacheManagerSpring中文文档

只有在启动时配置的缓存才会绑定到注册表。 对于缓存配置中未定义的缓存,例如动态创建的缓存或在启动阶段后以编程方式创建的缓存,需要显式注册。 提供 Bean 可以使该过程更容易。CacheMetricsRegistrar

Spring Batch 指标

Spring GraphQL 指标

DataSource 指标

自动配置允许检测所有以前缀为前缀的指标的可用对象。 数据源检测生成的仪表表示池中当前活动、空闲、允许的最大连接数和允许的最小连接数。DataSourcejdbc.connectionsSpring中文文档

指标也由基于 Bean 名称计算的名称进行标记。DataSourceSpring中文文档

默认情况下,Spring Boot 为所有受支持的数据源提供元数据。 如果不支持您喜欢的数据源,则可以添加其他 Bean。 有关示例,请参阅。DataSourcePoolMetadataProviderDataSourcePoolMetadataProvidersConfiguration

此外,特定于 Hikari 的指标会使用前缀公开。 每个指标都由池的名称标记(您可以使用 来控制它)。hikaricpspring.datasource.nameSpring中文文档

Hibernate 指标

如果位于类路径上,则所有启用了统计信息的可用休眠实例都使用名为 的指标进行检测。org.hibernate.orm:hibernate-micrometerEntityManagerFactoryhibernateSpring中文文档

指标也由 的名称 标记,该名称派生自 Bean 名称。EntityManagerFactorySpring中文文档

要启用统计信息,必须将标准 JPA 属性设置为 。 您可以在自动配置的 :hibernate.generate_statisticstrueEntityManagerFactorySpring中文文档

spring.jpa.properties[hibernate.generate_statistics]=true
spring:
  jpa:
    properties:
      "[hibernate.generate_statistics]": true

Spring 数据存储库指标

自动配置支持检测所有 Spring Data 方法调用。 默认情况下,使用名称 . 您可以通过设置属性来自定义名称。Repositoryspring.data.repository.invocationsmanagement.metrics.data.repository.metric-nameSpring中文文档

接口和方法支持包中的注释。 如果您不想记录所有调用的指标,则可以设置为并独占使用注释。@Timedio.micrometer.core.annotationRepositoryRepositorymanagement.metrics.data.repository.autotime.enabledfalse@TimedSpring中文文档

注释 with 为该方法启用较长的任务计时器。 长任务计时器需要单独的指标名称,并且可以与短任务计时器堆叠。@TimedlongTask = true

默认情况下,与存储库调用相关的指标使用以下信息进行标记:Spring中文文档

标记 描述

repositorySpring中文文档

源 的简单类名。RepositorySpring中文文档

methodSpring中文文档

调用的方法的名称。RepositorySpring中文文档

stateSpring中文文档

结果状态(、、或)。SUCCESSERRORCANCELEDRUNNINGSpring中文文档

exceptionSpring中文文档

从调用中引发的任何异常的简单类名。Spring中文文档

要替换默认标记,请提供实现 的 。@BeanRepositoryTagsProviderSpring中文文档

RabbitMQ 指标

自动配置允许使用名为 的指标检测所有可用的 RabbitMQ 连接工厂。rabbitmqSpring中文文档

Spring 集成指标

Spring Integration 会在 bean 可用时自动提供 Micrometer 支持。 指标以计量名称发布。MeterRegistryspring.integration.Spring中文文档

Kafka 指标

自动配置分别为自动配置的消费者工厂和生产者工厂注册 和 。 它还注册了 for . 有关更多详细信息,请参阅 Spring Kafka 文档的 Micrometer Native Metrics 部分。MicrometerConsumerListenerMicrometerProducerListenerKafkaStreamsMicrometerListenerStreamsBuilderFactoryBeanSpring中文文档

MongoDB 指标

本节简要介绍MongoDB的可用指标。Spring中文文档

MongoDB 命令指标

自动配置将 a 注册到自动配置的 .MongoMetricsCommandListenerMongoClientSpring中文文档

为向基础MongoDB驱动程序发出的每个命令创建名为计时器的指标。 默认情况下,每个指标都使用以下信息进行标记:mongodb.driver.commandsSpring中文文档

标记 描述

commandSpring中文文档

发出的命令的名称。Spring中文文档

cluster.idSpring中文文档

将命令发送到的群集的标识符。Spring中文文档

server.addressSpring中文文档

将命令发送到的服务器的地址。Spring中文文档

statusSpring中文文档

命令 ( 或 ) 的结果。SUCCESSFAILEDSpring中文文档

要替换默认指标标签,请定义一个 bean,如以下示例所示:MongoCommandTagsProviderSpring中文文档

import io.micrometer.core.instrument.binder.mongodb.MongoCommandTagsProvider;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyCommandTagsProviderConfiguration {

	@Bean
	public MongoCommandTagsProvider customCommandTagsProvider() {
		return new CustomCommandTagsProvider();
	}

}
import io.micrometer.core.instrument.binder.mongodb.MongoCommandTagsProvider
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyCommandTagsProviderConfiguration {

	@Bean
	fun customCommandTagsProvider(): MongoCommandTagsProvider? {
		return CustomCommandTagsProvider()
	}

}

要禁用自动配置的命令指标,请设置以下属性:Spring中文文档

management.metrics.mongo.command.enabled=false
management:
  metrics:
    mongo:
      command:
        enabled: false

MongoDB 连接池指标

自动配置将 a 注册到自动配置的 .MongoMetricsConnectionPoolListenerMongoClientSpring中文文档

为连接池创建以下仪表指标:Spring中文文档

  • mongodb.driver.pool.size报告连接池的当前大小,包括空闲成员和正在使用的成员。Spring中文文档

  • mongodb.driver.pool.checkedout报告当前正在使用的连接计数。Spring中文文档

  • mongodb.driver.pool.waitqueuesize报告来自池的连接的等待队列的当前大小。Spring中文文档

默认情况下,每个指标都使用以下信息进行标记:Spring中文文档

标记 描述

cluster.idSpring中文文档

连接池对应的群集的标识符。Spring中文文档

server.addressSpring中文文档

连接池对应的服务器的地址。Spring中文文档

要替换默认指标标签,请定义一个 bean:MongoConnectionPoolTagsProviderSpring中文文档

import io.micrometer.core.instrument.binder.mongodb.MongoConnectionPoolTagsProvider;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyConnectionPoolTagsProviderConfiguration {

	@Bean
	public MongoConnectionPoolTagsProvider customConnectionPoolTagsProvider() {
		return new CustomConnectionPoolTagsProvider();
	}

}
import io.micrometer.core.instrument.binder.mongodb.MongoConnectionPoolTagsProvider
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyConnectionPoolTagsProviderConfiguration {

	@Bean
	fun customConnectionPoolTagsProvider(): MongoConnectionPoolTagsProvider {
		return CustomConnectionPoolTagsProvider()
	}

}

若要禁用自动配置的连接池指标,请设置以下属性:Spring中文文档

management.metrics.mongo.connectionpool.enabled=false
management:
  metrics:
    mongo:
      connectionpool:
        enabled: false

Jetty指标

自动配置通过使用 Micrometer 的 . Jetty 实例的指标使用 Micrometer's 绑定,当设置为 Micrometer's 时,则使用 Micrometer's 绑定。ThreadPoolJettyServerThreadPoolMetricsConnectorJettyConnectionMetricsserver.ssl.enabledtrueJettySslHandshakeMetricsSpring中文文档

@Timed注释支持

若要启用注释扫描,需要将属性设置为 。 请参阅千分尺文档@Timedmanagement.observations.annotations.enabledtrueSpring中文文档

Redis 指标

自动配置为自动配置的 . 有关详细信息,请参阅 Lettuce 文档的 Micrometer Metrics 部分MicrometerCommandLatencyRecorderLettuceConnectionFactorySpring中文文档

在某些情况下,Web 控制器中处理的异常不会记录为请求指标标记。 应用程序可以通过将已处理的异常设置为请求属性来选择加入并记录异常。
在某些情况下,控制器和处理程序函数中处理的异常不会记录为请求指标标记。 应用程序可以通过将已处理的异常设置为请求属性来选择加入并记录异常。
标记 描述

exceptionSpring中文文档

处理请求时引发的任何异常的简单类名。Spring中文文档

methodSpring中文文档

请求的方法(例如,或GETPOST)Spring中文文档

outcomeSpring中文文档

请求的结果,基于响应的状态代码。 1xx 是 , 2xx 是 , 3xx 是 , 4xx 是 , 5xx 是INFORMATIONALSUCCESSREDIRECTIONCLIENT_ERRORSERVER_ERRORSpring中文文档

statusSpring中文文档

响应的 HTTP 状态代码(例如,或200500)Spring中文文档

uriSpring中文文档

变量替换之前请求的 URI 模板(如果可能)(例如,/api/person/{id})Spring中文文档

只有在启动时配置的缓存才会绑定到注册表。 对于缓存配置中未定义的缓存,例如动态创建的缓存或在启动阶段后以编程方式创建的缓存,需要显式注册。 提供 Bean 可以使该过程更容易。CacheMetricsRegistrar
默认情况下,Spring Boot 为所有受支持的数据源提供元数据。 如果不支持您喜欢的数据源,则可以添加其他 Bean。 有关示例,请参阅。DataSourcePoolMetadataProviderDataSourcePoolMetadataProvidersConfiguration
注释 with 为该方法启用较长的任务计时器。 长任务计时器需要单独的指标名称,并且可以与短任务计时器堆叠。@TimedlongTask = true
标记 描述

repositorySpring中文文档

源 的简单类名。RepositorySpring中文文档

methodSpring中文文档

调用的方法的名称。RepositorySpring中文文档

stateSpring中文文档

结果状态(、、或)。SUCCESSERRORCANCELEDRUNNINGSpring中文文档

exceptionSpring中文文档

从调用中引发的任何异常的简单类名。Spring中文文档

标记 描述

commandSpring中文文档

发出的命令的名称。Spring中文文档

cluster.idSpring中文文档

将命令发送到的群集的标识符。Spring中文文档

server.addressSpring中文文档

将命令发送到的服务器的地址。Spring中文文档

statusSpring中文文档

命令 ( 或 ) 的结果。SUCCESSFAILEDSpring中文文档

标记 描述

cluster.idSpring中文文档

连接池对应的群集的标识符。Spring中文文档

server.addressSpring中文文档

连接池对应的服务器的地址。Spring中文文档

注册自定义指标

要注册自定义指标,请注入到组件中:MeterRegistrySpring中文文档

import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tags;

import org.springframework.stereotype.Component;

@Component
public class MyBean {

	private final Dictionary dictionary;

	public MyBean(MeterRegistry registry) {
		this.dictionary = Dictionary.load();
		registry.gauge("dictionary.size", Tags.empty(), this.dictionary.getWords().size());
	}

}
import io.micrometer.core.instrument.MeterRegistry
import io.micrometer.core.instrument.Tags
import org.springframework.stereotype.Component

@Component
class MyBean(registry: MeterRegistry) {

	private val dictionary: Dictionary

	init {
		dictionary = Dictionary.load()
		registry.gauge("dictionary.size", Tags.empty(), dictionary.words.size)
	}

}

如果您的指标依赖于其他 Bean,我们建议您使用 a 来注册它们:MeterBinderSpring中文文档

import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.binder.MeterBinder;

import org.springframework.context.annotation.Bean;

public class MyMeterBinderConfiguration {

	@Bean
	public MeterBinder queueSize(Queue queue) {
		return (registry) -> Gauge.builder("queueSize", queue::size).register(registry);
	}

}
import io.micrometer.core.instrument.Gauge
import io.micrometer.core.instrument.binder.MeterBinder
import org.springframework.context.annotation.Bean

class MyMeterBinderConfiguration {

	@Bean
	fun queueSize(queue: Queue): MeterBinder {
		return MeterBinder { registry ->
			Gauge.builder("queueSize", queue::size).register(registry)
		}
	}

}

使用 a 可确保设置正确的依赖关系,并且在检索指标值时 Bean 可用。 如果您发现跨组件或应用程序重复检测一组指标,则实现也很有用。MeterBinderMeterBinderSpring中文文档

默认情况下,所有 Bean 中的指标都会自动绑定到 Spring 管理的 .MeterBinderMeterRegistry
默认情况下,所有 Bean 中的指标都会自动绑定到 Spring 管理的 .MeterBinderMeterRegistry

自定义单个指标

如果您需要将自定义项应用于特定实例,则可以使用该界面。Meterio.micrometer.core.instrument.config.MeterFilterSpring中文文档

例如,如果要将标签重命名为以 开头的所有计量 ID,则可以执行以下操作:mytag.regionmytag.areacom.exampleSpring中文文档

import io.micrometer.core.instrument.config.MeterFilter;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyMetricsFilterConfiguration {

	@Bean
	public MeterFilter renameRegionTagMeterFilter() {
		return MeterFilter.renameTag("com.example", "mytag.region", "mytag.area");
	}

}
import io.micrometer.core.instrument.config.MeterFilter
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration(proxyBeanMethods = false)
class MyMetricsFilterConfiguration {

	@Bean
	fun renameRegionTagMeterFilter(): MeterFilter {
		return MeterFilter.renameTag("com.example", "mytag.region", "mytag.area")
	}

}
默认情况下,所有 Bean 都会自动绑定到 Spring 管理的 . 请确保使用 Spring 管理的指标,而不是 上的任何静态方法。 它们使用非 Spring 管理的全局注册表。MeterFilterMeterRegistryMeterRegistryMetrics

常见标签

常用标签通常用于对操作环境进行维度向下钻取,如主机、实例、地域、堆栈等。 Commons 标签应用于所有仪表,并且可以进行配置,如以下示例所示:Spring中文文档

management.metrics.tags.region=us-east-1
management.metrics.tags.stack=prod
management:
  metrics:
    tags:
      region: "us-east-1"
      stack: "prod"

前面的示例分别将值为 和 的所有计量添加 和 标记。regionstackus-east-1prodSpring中文文档

如果使用 Graphite,则常见标签的顺序很重要。 由于使用这种方法无法保证常见标签的顺序,因此建议 Graphite 用户改为定义自定义。MeterFilter

每米属性

除了 Bean 之外,您还可以使用属性按米应用一组有限的自定义设置。 使用 Spring Boot 将每计量自定义项应用于以给定名称开头的任何计量 ID。 以下示例筛选出 ID 以 开头的所有计量。MeterFilterPropertiesMeterFilterexample.remoteSpring中文文档

management.metrics.enable.example.remote=false
management:
  metrics:
    enable:
      example:
        remote: false

以下属性允许按仪表进行自定义:Spring中文文档

表 1.每米自定义
财产 描述

management.metrics.enableSpring中文文档

是否接受具有特定 ID 的测量仪。 不接受的仪表将从 中筛选出来。MeterRegistrySpring中文文档

management.metrics.distribution.percentiles-histogramSpring中文文档

是否发布适合计算可聚合(跨维度)百分位数近似值的直方图。Spring中文文档

management.metrics.distribution.minimum-expected-value,management.metrics.distribution.maximum-expected-valueSpring中文文档

通过限制预期值的范围来发布更少的直方图桶。Spring中文文档

management.metrics.distribution.percentilesSpring中文文档

发布在应用程序中计算的百分位数值Spring中文文档

management.metrics.distribution.expiry,management.metrics.distribution.buffer-lengthSpring中文文档

通过将近期样品累积在环形缓冲液中,为最近的样品赋予更大的权重,环形缓冲液在可配置的到期后旋转,并带有 可配置的缓冲区长度。Spring中文文档

management.metrics.distribution.sloSpring中文文档

发布累积直方图,其中包含由服务级别目标定义的存储桶。Spring中文文档

有关 、 和 背后的概念的更多详细信息,请参阅 千分尺文档的“直方图和百分位数”部分percentiles-histogrampercentilessloSpring中文文档

默认情况下,所有 Bean 都会自动绑定到 Spring 管理的 . 请确保使用 Spring 管理的指标,而不是 上的任何静态方法。 它们使用非 Spring 管理的全局注册表。MeterFilterMeterRegistryMeterRegistryMetrics
如果使用 Graphite,则常见标签的顺序很重要。 由于使用这种方法无法保证常见标签的顺序,因此建议 Graphite 用户改为定义自定义。MeterFilter
表 1.每米自定义
财产 描述

management.metrics.enableSpring中文文档

是否接受具有特定 ID 的测量仪。 不接受的仪表将从 中筛选出来。MeterRegistrySpring中文文档

management.metrics.distribution.percentiles-histogramSpring中文文档

是否发布适合计算可聚合(跨维度)百分位数近似值的直方图。Spring中文文档

management.metrics.distribution.minimum-expected-value,management.metrics.distribution.maximum-expected-valueSpring中文文档

通过限制预期值的范围来发布更少的直方图桶。Spring中文文档

management.metrics.distribution.percentilesSpring中文文档

发布在应用程序中计算的百分位数值Spring中文文档

management.metrics.distribution.expiry,management.metrics.distribution.buffer-lengthSpring中文文档

通过将近期样品累积在环形缓冲液中,为最近的样品赋予更大的权重,环形缓冲液在可配置的到期后旋转,并带有 可配置的缓冲区长度。Spring中文文档

management.metrics.distribution.sloSpring中文文档

发布累积直方图,其中包含由服务级别目标定义的存储桶。Spring中文文档

指标终结点

Spring Boot 提供了一个端点,您可以诊断性地使用它来检查应用程序收集的指标。 默认情况下,终结点不可用,必须公开。 有关更多详细信息,请参阅公开终结点metricsSpring中文文档

导航到将显示可用计量名称的列表。 您可以通过提供特定计量的名称作为选择器(例如,./actuator/metrics/actuator/metrics/jvm.memory.maxSpring中文文档

您在此处使用的名称应与代码中使用的名称匹配,而不是针对它所传送到的监视系统进行命名约定规范化后的名称。 换言之,如果由于 Prometheus 的蛇形案例命名约定而显示为“Prometheus”,则在检查端点中的仪表时仍应将其用作选择器。jvm.memory.maxjvm_memory_maxjvm.memory.maxmetricsSpring中文文档

您还可以在 URL 末尾添加任意数量的查询参数,以在计量器上向下钻取维度,例如 .tag=KEY:VALUE/actuator/metrics/jvm.memory.max?tag=area:nonheapSpring中文文档

报告的测量值是与测量仪名称匹配的所有测量仪的统计信息以及已应用的任何标记的总和。 在前面的示例中,返回的统计信息是堆的“代码缓存”、“压缩类空间”和“元空间”区域的最大内存占用量之和。 如果您只想查看“元空间”的最大大小,则可以添加一个附加值,即 .Valuetag=id:Metaspace/actuator/metrics/jvm.memory.max?tag=area:nonheap&tag=id:MetaspaceSpring中文文档

您在此处使用的名称应与代码中使用的名称匹配,而不是针对它所传送到的监视系统进行命名约定规范化后的名称。 换言之,如果由于 Prometheus 的蛇形案例命名约定而显示为“Prometheus”,则在检查端点中的仪表时仍应将其用作选择器。jvm.memory.maxjvm_memory_maxjvm.memory.maxmetricsSpring中文文档

报告的测量值是与测量仪名称匹配的所有测量仪的统计信息以及已应用的任何标记的总和。 在前面的示例中,返回的统计信息是堆的“代码缓存”、“压缩类空间”和“元空间”区域的最大内存占用量之和。 如果您只想查看“元空间”的最大大小,则可以添加一个附加值,即 .Valuetag=id:Metaspace/actuator/metrics/jvm.memory.max?tag=area:nonheap&tag=id:MetaspaceSpring中文文档

与千分尺观察集成

A 会自动注册到 ,这会为每个完成的观测值创建度量。DefaultMeterObservationHandlerObservationRegistrySpring中文文档