对于最新的稳定版本,请使用 Spring Boot 3.4.0spring-doc.cadn.net.cn

指标

开始

Spring Boot 自动配置复合MeterRegistry并为它在 Classpath 上找到的每个受支持的实现向组合添加一个注册表。 依赖于micrometer-registry-{system}在你的运行时 Classpath 中就足够了,Spring Boot 可以配置注册表。spring-doc.cadn.net.cn

大多数注册表都具有共同的功能。 例如,即使 Micrometer 注册表实现位于 Classpath 上,您也可以禁用特定的注册表。 以下示例禁用 Datadog:spring-doc.cadn.net.cn

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

你也可以禁用所有注册表,除非特定于注册表的属性另有说明,如下例所示:spring-doc.cadn.net.cn

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

Spring Boot 还将任何自动配置的注册表添加到全局静态复合注册表中Metrics类,除非你明确告诉它不要:spring-doc.cadn.net.cn

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

您可以注册任意数量的MeterRegistryCustomizerbean 来进一步配置注册表,例如应用通用标记,然后再向注册表注册任何仪表:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

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 还配置了内置插桩,您可以通过配置或专用 Comments 标记来控制这些插桩。spring-doc.cadn.net.cn

支持的监控系统

本节简要介绍每个受支持的监控系统。spring-doc.cadn.net.cn

应用光学

默认情况下,AppOptics 注册表会定期将指标推送到api.appoptics.com/v1/measurements. 要将指标导出到 SaaS AppOptics,必须提供您的 API 令牌:spring-doc.cadn.net.cn

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

地图集

默认情况下,指标将导出到本地计算机上运行的 Atlas。 您可以提供 Atlas 服务器的位置:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

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

如果您额外提供应用程序密钥(可选),则还将导出仪表描述、类型和基本单位等元数据:spring-doc.cadn.net.cn

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 US 站点 (api.datadoghq.com). 如果您的 Datadog 项目托管在其他站点之一上,或者您需要通过代理发送指标,请相应地配置 URI:spring-doc.cadn.net.cn

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

您还可以更改将指标发送到 Datadog 的间隔:spring-doc.cadn.net.cn

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

Dynatrace 公司

Dynatrace 提供两种指标摄取 API,这两种 API 都是针对 Micrometer 实现的。 您可以在此处找到有关 Micrometer 指标摄取的 Dynatrace 文档。 Configuration 属性中的v1命名空间仅在导出到时间序列 v1 API 时适用。 Configuration 属性中的v2命名空间仅在导出到 Metrics v2 API 时适用。 请注意,此集成只能导出到v1v2版本,使用v2被优先考虑。 如果device-id(v1 需要,但在 v2 中未使用)在v1命名空间,指标将导出到v1端点。 否则v2spring-doc.cadn.net.cn

v2 API

您可以通过两种方式使用 v2 API。spring-doc.cadn.net.cn

自动配置

Dynatrace 自动配置可用于由 OneAgent 或 Dynatrace Operator for Kubernetes 监控的主机。spring-doc.cadn.net.cn

本地 OneAgent:如果 OneAgent 正在主机上运行,则指标会自动导出到本地 OneAgent 摄取终端节点。 摄取端点将指标转发到 Dynatrace 后端。spring-doc.cadn.net.cn

Dynatrace Kubernetes作员:在安装了 Dynatrace Operator 的 Kubernetes 中运行时,注册表将自动从 Operator 那里获取您的端点 URI 和 API 令牌。spring-doc.cadn.net.cn

这是默认行为,除了对io.micrometer:micrometer-registry-dynatrace.spring-doc.cadn.net.cn

手动配置

如果没有可用的自动配置,则需要 Metrics v2 API 的终端节点和 API 令牌。 API 令牌必须具有“摄取量度”(metrics.ingest) 权限集。 我们建议将令牌的范围限制为此权限。 您必须确保端点 URI 包含路径(例如/api/v2/metrics/ingest):spring-doc.cadn.net.cn

Metrics API v2 摄取端点的 URL 因部署选项而异:spring-doc.cadn.net.cn

  • 软件即服务 (SaaS):https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingestspring-doc.cadn.net.cn

  • 托管部署:https://{your-domain}/e/{your-environment-id}/api/v2/metrics/ingestspring-doc.cadn.net.cn

下面的示例使用example环境 ID:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

  • Metric key prefix(指标键前缀):设置附加到所有导出的指标键的前缀。spring-doc.cadn.net.cn

  • 使用 Dynatrace 元数据进行扩充:如果 OneAgent 或 Dynatrace 运算符正在运行,请使用其他元数据(例如,关于主机、进程或 pod)来扩充指标。spring-doc.cadn.net.cn

  • 默认维度:指定添加到所有导出指标的键值对。 如果使用 Micrometer 指定了具有相同键的标签,则它们会覆盖默认尺寸。spring-doc.cadn.net.cn

  • 使用 Dynatrace Summary 仪器:在某些情况下,Micrometer Dynatrace 注册表创建的指标被拒绝。 在 Micrometer 1.9.x 中,通过引入 Dynatrace 特定的汇总仪器解决了这个问题。 将此开关设置为false强制 Micrometer 回退到 1.9.x 之前的默认设置。 它只应在从 Micrometer 1.8.x 迁移到 1.9.x 时遇到问题时使用。spring-doc.cadn.net.cn

  • 导出仪表元数据:从 Micrometer 1.12.0 开始,Dynatrace 导出器还将默认导出仪表元数据,例如单位和描述。 使用export-meter-metadata切换以关闭此功能。spring-doc.cadn.net.cn

可以不指定 URI 和 API 令牌,如以下示例所示。 在此方案中,使用自动配置的终端节点:spring-doc.cadn.net.cn

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。 为了向后兼容现有设置,当device-id(对于 v1 是必需的,但在 v2 中未使用),则指标将导出到时间序列 v1 终端节点。 要将指标导出到 Dynatrace,必须提供您的 API 令牌、设备 ID 和 URI:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

与版本无关的设置

除了 API 端点和令牌之外,您还可以更改将指标发送到 Dynatrace 的间隔。 默认导出间隔为60s. 以下示例将导出间隔设置为 30 秒:spring-doc.cadn.net.cn

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

您可以在 Micrometer 文档Dynatrace 文档中找到有关如何为 Micrometer 设置 Dynatrace 导出器的更多信息。spring-doc.cadn.net.cn

弹性的

默认情况下,指标会导出到本地计算机上运行的 Elastic。 您可以使用以下属性提供要使用的弹性服务器的位置:spring-doc.cadn.net.cn

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

神经节

默认情况下,指标将导出到本地计算机上运行的 Ganglia。 您可以提供 Ganglia 服务器主机和端口,如下例所示:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

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

Micrometer 提供默认的HierarchicalNameMapper控制维度计量器 ID 如何映射到平面分层名称spring-doc.cadn.net.cn

要控制此行为,请定义GraphiteMeterRegistry并自给自足HierarchicalNameMapper. 自动配置GraphiteConfigClock除非您定义自己的 bean,否则会提供 bean:spring-doc.cadn.net.cn

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 注册表会定期将指标推送到 cloud.humio.com。 要将指标导出到 SaaS Humio,您必须提供 API 令牌:spring-doc.cadn.net.cn

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

您还应配置一个或多个标签,以标识将指标推送到的数据源:spring-doc.cadn.net.cn

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,请配置org,bucket和 authenticationtoken用于编写指标。 您可以使用以下方法提供要使用的 Influx 服务器的位置:spring-doc.cadn.net.cn

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

JMX

Micrometer 提供到 JMX 的分层映射,主要作为一种在本地查看指标的廉价且可移植的方式。 默认情况下,指标将导出到metricsJMX 域。 您可以使用以下方法提供要使用的域:spring-doc.cadn.net.cn

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

Micrometer 提供默认的HierarchicalNameMapper控制维度计量器 ID 如何映射到平面分层名称spring-doc.cadn.net.cn

要控制此行为,请定义JmxMeterRegistry并自给自足HierarchicalNameMapper. 自动配置JmxConfigClock除非您定义自己的 bean,否则会提供 bean:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

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-doc.cadn.net.cn

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-doc.cadn.net.cn

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

默认情况下,指标是通过 REST 调用发布的,但如果您在 Classpath 上有 Java 代理 API,也可以使用它:spring-doc.cadn.net.cn

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

最后,您可以通过定义自己的NewRelicClientProvider豆。spring-doc.cadn.net.cn

开放遥测

默认情况下,指标将导出到本地计算机上运行的 OpenTelemetry。 您可以通过以下方式提供要使用的 OpenTelemetry 指标终端节点的位置:spring-doc.cadn.net.cn

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 在/actuator/prometheus以适当格式呈现 Prometheus 抓取spring-doc.cadn.net.cn

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

以下示例scrape_config添加到prometheus.yml:spring-doc.cadn.net.cn

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

还支持 Prometheus Exemplars。 要启用此功能,需要SpanContextbean 应该存在。 如果您使用的是已弃用的 Prometheus simpleclient 支持并希望启用该功能,则SpanContextSupplierbean 应该存在。 如果您使用 Micrometer Tracing,这将为您自动配置,但您始终可以根据需要创建自己的跟踪。 请查看 Prometheus 文档,因为此功能需要在 Prometheus 端明确启用,并且仅支持使用 OpenMetrics 格式。spring-doc.cadn.net.cn

对于存在时间不够长而无法抓取的临时或批处理作业,您可以使用 Prometheus Pushgateway 支持向 Prometheus 公开指标。spring-doc.cadn.net.cn

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

要启用 Prometheus Pushgateway 支持,请将以下依赖项添加到您的项目中:spring-doc.cadn.net.cn

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

当 Prometheus Pushgateway 依赖项存在于 Classpath 上并且management.prometheus.metrics.export.pushgateway.enabled属性设置为true一个PrometheusPushGatewayManagerbean 是自动配置的。 这将管理将指标推送到 Prometheus Pushgateway。spring-doc.cadn.net.cn

您可以调整PrometheusPushGatewayManager通过使用management.prometheus.metrics.export.pushgateway. 对于高级配置,您还可以提供自己的PrometheusPushGatewayManager豆。spring-doc.cadn.net.cn

信号外汇

SignalFx 注册表定期将指标推送到 SignalFx。 要将指标导出到 SignalFx,您必须提供访问令牌:spring-doc.cadn.net.cn

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

您还可以更改将指标发送到 SignalFx 的间隔:spring-doc.cadn.net.cn

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

简单

Micrometer 附带了一个简单的内存后端,如果未配置其他注册表,则会自动用作后备。 这样,您就可以查看 metrics 终端节点中收集了哪些指标。spring-doc.cadn.net.cn

一旦您使用任何其他可用的后端,内存中后端就会自行禁用。 您也可以显式禁用它:spring-doc.cadn.net.cn

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

堆栈驱动程序

Stackdriver 注册表会定期将指标推送到 Stackdriver。 要将指标导出到 SaaS Stackdriver,您必须提供您的 Google Cloud 项目 ID:spring-doc.cadn.net.cn

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

您还可以更改将指标发送到 Stackdriver 的时间间隔:spring-doc.cadn.net.cn

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

统计 D

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

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-doc.cadn.net.cn

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

Wavefront 注册表会定期将指标推送到 Wavefront。 如果要直接将指标导出到 Wavefront,则必须提供 API 令牌:spring-doc.cadn.net.cn

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

或者,您可以在环境中使用 Wavefront sidecar 或内部代理将指标数据转发到 Wavefront API 主机:spring-doc.cadn.net.cn

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

您还可以更改将指标发送到 Wavefront 的间隔:spring-doc.cadn.net.cn

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

支持的指标和计量

Spring Boot 为各种技术提供自动仪表注册。 在大多数情况下,默认值提供合理的指标,这些指标可以发布到任何受支持的监控系统。spring-doc.cadn.net.cn

JVM 指标

自动配置通过使用核心 Micrometer 类启用 JVM 指标。 JVM 指标发布在jvm.计量名称。spring-doc.cadn.net.cn

提供了以下 JVM 指标:spring-doc.cadn.net.cn

系统指标

自动配置通过使用核心 Micrometer 类来启用系统指标。 系统指标发布在system.,process.disk.计量名称。spring-doc.cadn.net.cn

提供了以下系统指标:spring-doc.cadn.net.cn

应用程序启动指标

自动配置会公开应用程序启动时间指标:spring-doc.cadn.net.cn

指标由应用程序类的完全限定名称标记。spring-doc.cadn.net.cn

记录器指标

自动配置为 Logback 和 Log4J2 启用事件指标。 详细信息发布在log4j2.events.logback.events.计量名称。spring-doc.cadn.net.cn

任务执行和调度指标

自动配置支持所有可用ThreadPoolTaskExecutorThreadPoolTaskScheduler豆子,只要下属ThreadPoolExecutor可用。 度量由执行程序的名称标记,该名称派生自 Bean 名称。spring-doc.cadn.net.cn

JMS 指标

自动配置支持所有可用JmsTemplatebeans 和@JmsListener带注释的方法。 这将产生"jms.message.publish""jms.message.process"指标。 有关生成的观察结果的更多信息,请参阅 Spring Framework 参考文档spring-doc.cadn.net.cn

Spring MVC 指标

自动配置可以检测 Spring MVC 控制器和功能处理程序处理的所有请求。 默认情况下,使用名称http.server.requests. 您可以通过设置management.observations.http.server.requests.name财产。spring-doc.cadn.net.cn

要添加到默认标签,请提供@Bean延伸DefaultServerRequestObservationConventionorg.springframework.http.server.observation包。 要替换默认标签,请提供@Bean实现ServerRequestObservationConvention.spring-doc.cadn.net.cn

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

默认情况下,将处理所有请求。 要自定义过滤器,请提供@Bean实现FilterRegistrationBean<ServerHttpObservationFilter>.spring-doc.cadn.net.cn

Spring WebFlux 指标

自动配置允许检测 Spring WebFlux 控制器和功能处理程序处理的所有请求。 默认情况下,使用名称http.server.requests. 您可以通过设置management.observations.http.server.requests.name财产。spring-doc.cadn.net.cn

要添加到默认标签,请提供@Bean延伸DefaultServerRequestObservationConventionorg.springframework.http.server.reactive.observation包。 要替换默认标签,请提供@Bean实现ServerRequestObservationConvention.spring-doc.cadn.net.cn

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

Jersey Server 指标

自动配置允许检测 Jersey JAX-RS 实现处理的所有请求。 默认情况下,使用名称http.server.requests. 您可以通过设置management.observations.http.server.requests.name财产。spring-doc.cadn.net.cn

默认情况下,Jersey 服务器指标使用以下信息进行标记:spring-doc.cadn.net.cn

标记 描述

exceptionspring-doc.cadn.net.cn

处理请求时引发的任何异常的简单类名。spring-doc.cadn.net.cn

methodspring-doc.cadn.net.cn

请求的方法(例如GETPOST)spring-doc.cadn.net.cn

outcomespring-doc.cadn.net.cn

请求的结果,基于响应的状态代码。 1xx 是INFORMATIONAL,2xx 是SUCCESS, 3xx 是REDIRECTION, 4xx 是CLIENT_ERROR,5xx 为SERVER_ERRORspring-doc.cadn.net.cn

statusspring-doc.cadn.net.cn

响应的 HTTP 状态代码(例如200500)spring-doc.cadn.net.cn

urispring-doc.cadn.net.cn

变量替换之前的请求的 URI 模板(如果可能)(例如/api/person/{id})spring-doc.cadn.net.cn

要自定义标签,请提供@Bean实现JerseyObservationConvention.spring-doc.cadn.net.cn

HTTP 客户端指标

Spring Boot Actuator 管理RestTemplate,WebClientRestClient. 为此,您必须注入自动配置的构建器并使用它来创建实例:spring-doc.cadn.net.cn

默认情况下,使用名称http.client.requests. 您可以通过设置management.observations.http.client.requests.name财产。spring-doc.cadn.net.cn

要在使用RestTemplateRestClient,提供@Bean实现ClientRequestObservationConventionorg.springframework.http.client.observation包。 要在使用WebClient,提供@Bean实现ClientRequestObservationConventionorg.springframework.web.reactive.function.client包。spring-doc.cadn.net.cn

Tomcat 指标

自动配置仅在 MBeanRegistry已启用。 默认情况下,MBean 注册表处于禁用状态,但您可以通过设置server.tomcat.mbeanregistry.enabledtrue.spring-doc.cadn.net.cn

Tomcat 指标发布在tomcat.计量名称。spring-doc.cadn.net.cn

缓存指标

自动配置支持所有可用Cache实例,其指标前缀为cache. 缓存插桩是针对一组基本指标进行标准化的。 此外,还提供了特定于缓存的指标。spring-doc.cadn.net.cn

支持以下缓存库:spring-doc.cadn.net.cn

指标按缓存名称和CacheManager,该名称派生自 Bean 名称。spring-doc.cadn.net.cn

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

Spring Batch 指标

Spring GraphQL 指标

DataSource 指标

自动配置支持所有可用DataSource指标前缀为jdbc.connections. 数据源检测会生成表示池中当前活动、空闲、允许的最大连接数和允许的最小连接的仪表。spring-doc.cadn.net.cn

Metrics 也由DataSource根据 bean 名称计算。spring-doc.cadn.net.cn

默认情况下, Spring Boot 为所有支持的数据源提供元数据。 您可以添加其他DataSourcePoolMetadataProviderbeans(如果您最喜欢的数据源不受支持)。 看DataSourcePoolMetadataProvidersConfiguration例如。

此外,特定于 Hikari 的指标通过hikaricp前缀。 每个指标都由池的名称进行标记(您可以使用spring.datasource.name).spring-doc.cadn.net.cn

Hibernate 指标

如果org.hibernate.orm:hibernate-micrometer在 Classpath 上,所有可用的 HibernateEntityManagerFactory启用了统计信息的实例将使用名为hibernate.spring-doc.cadn.net.cn

Metrics 也由EntityManagerFactory,该名称派生自 Bean 名称。spring-doc.cadn.net.cn

要启用统计信息,标准 JPA 属性hibernate.generate_statistics必须设置为true. 您可以在自动配置的EntityManagerFactory:spring-doc.cadn.net.cn

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

Spring Data Repository 指标

自动配置支持所有 Spring Data 的检测Repository方法调用。 默认情况下,使用名称spring.data.repository.invocations. 您可以通过设置management.metrics.data.repository.metric-name财产。spring-doc.cadn.net.cn

@Timed注解io.micrometer.core.annotation支持 packageRepository接口和方法。 如果您不想记录所有Repositoryinvocations,您可以设置management.metrics.data.repository.autotime.enabledfalse并专门使用@Timedannotations 来代替。spring-doc.cadn.net.cn

一个@Timedannotation 替换为longTask = true为方法启用长任务计时器。 长任务计时器需要单独的指标名称,并且可以与短任务计时器堆叠。

默认情况下,存储库调用相关指标使用以下信息进行标记:spring-doc.cadn.net.cn

标记 描述

repositoryspring-doc.cadn.net.cn

源的简单类名Repository.spring-doc.cadn.net.cn

methodspring-doc.cadn.net.cn

的名称Repository方法。spring-doc.cadn.net.cn

statespring-doc.cadn.net.cn

结果状态 (SUCCESS,ERROR,CANCELEDRUNNING).spring-doc.cadn.net.cn

exceptionspring-doc.cadn.net.cn

从调用中引发的任何异常的简单类名。spring-doc.cadn.net.cn

要替换默认标签,请提供@Bean实现RepositoryTagsProvider.spring-doc.cadn.net.cn

RabbitMQ 指标

自动配置允许使用名为rabbitmq.spring-doc.cadn.net.cn

Spring 集成指标

Spring 集成会自动提供 Micrometer 支持,只要有MeterRegistryBean 可用。 指标发布在spring.integration.计量名称。spring-doc.cadn.net.cn

Kafka 指标

自动配置会注册一个MicrometerConsumerListenerMicrometerProducerListener分别用于 auto-configured Consumer Factory 和 Producer Factory。 它还注册了一个KafkaStreamsMicrometerListenerStreamsBuilderFactoryBean. 有关更多详细信息,请参阅 Spring Kafka 文档的 Micrometer Native Metrics 部分。spring-doc.cadn.net.cn

MongoDB 指标

本节简要介绍了 MongoDB 的可用指标。spring-doc.cadn.net.cn

MongoDB 命令指标

自动配置会注册一个MongoMetricsCommandListener使用自动配置的MongoClient.spring-doc.cadn.net.cn

名为mongodb.driver.commands为向底层 MongoDB 驱动程序发出的每个命令创建。 默认情况下,每个指标都标有以下信息:spring-doc.cadn.net.cn

标记 描述

commandspring-doc.cadn.net.cn

发出的命令的名称。spring-doc.cadn.net.cn

cluster.idspring-doc.cadn.net.cn

命令发送到的集群的标识符。spring-doc.cadn.net.cn

server.addressspring-doc.cadn.net.cn

命令发送到的服务器的地址。spring-doc.cadn.net.cn

statusspring-doc.cadn.net.cn

命令的结果 (SUCCESSFAILED).spring-doc.cadn.net.cn

要替换默认指标标签,请定义一个MongoCommandTagsProviderbean,如下例所示:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

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

MongoDB 连接池指标

自动配置会注册一个MongoMetricsConnectionPoolListener使用自动配置的MongoClient.spring-doc.cadn.net.cn

将为连接池创建以下仪表指标:spring-doc.cadn.net.cn

默认情况下,每个指标都标有以下信息:spring-doc.cadn.net.cn

标记 描述

cluster.idspring-doc.cadn.net.cn

连接池对应的集群的标识符。spring-doc.cadn.net.cn

server.addressspring-doc.cadn.net.cn

连接池对应的服务器的地址。spring-doc.cadn.net.cn

要替换默认指标标签,请定义一个MongoConnectionPoolTagsProvider豆:spring-doc.cadn.net.cn

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-doc.cadn.net.cn

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

Jetty 指标

自动配置绑定 Jetty 的ThreadPool通过使用 Micrometer 的JettyServerThreadPoolMetrics. Jetty's 的指标Connector实例使用 Micrometer 的JettyConnectionMetrics并且,当server.ssl.enabled设置为true、千分尺的JettySslHandshakeMetrics.spring-doc.cadn.net.cn

@Timed 注释支持

要启用 扫描@Timedannotations 中,您需要设置management.observations.annotations.enabledproperty 设置为true. 请参阅 Micrometer 文档spring-doc.cadn.net.cn

Redis 指标

自动配置会注册一个MicrometerCommandLatencyRecorder对于自动配置的LettuceConnectionFactory. 有关更多详细信息,请参阅 Lettuce 文档的 Micrometer Metrics 部分spring-doc.cadn.net.cn

注册自定义指标

要注册自定义指标,请注入MeterRegistry添加到您的组件中:spring-doc.cadn.net.cn

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,我们建议您使用MeterBinder要注册它们:spring-doc.cadn.net.cn

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)
		}
	}

}

使用MeterBinder确保设置正确的依赖关系,并确保在检索度量的值时 Bean 可用。 一个MeterBinder如果您发现跨组件或应用程序重复检测一套指标,则 implementation 也很有用。spring-doc.cadn.net.cn

默认情况下,来自所有MeterBinderbean 会自动绑定到 Spring 管理的MeterRegistry.

自定义单个量度

如果您需要将自定义项应用于特定的Meter实例中,您可以使用MeterFilter接口。spring-doc.cadn.net.cn

例如,如果要重命名mytag.region标签设置为mytag.area对于所有以com.example中,您可以执行以下作:spring-doc.cadn.net.cn

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")
	}

}
默认情况下,所有MeterFilterbean 会自动绑定到 Spring 管理的MeterRegistry. 确保使用 Spring 管理的MeterRegistry而不是Metrics. 这些使用非 Spring Management 的全局注册表。

常用标签

常用标签通常用于对运行环境进行维度下钻,例如主机、实例、区域、堆栈等。 Commons 标签应用于所有计量,并且可以进行配置,如下例所示:spring-doc.cadn.net.cn

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

前面的示例将regionstack标记添加到值为us-east-1prod分别。spring-doc.cadn.net.cn

如果您使用 Graphite,则常用标签的顺序非常重要。 由于使用这种方法无法保证常用 tag 的顺序,因此建议 Graphite 用户定义自定义MeterFilter相反。

每米属性

除了MeterFilterbean 中,您可以使用 properties 按计量应用一组有限的自定义。 使用 Spring Boot 的PropertiesMeterFilter,添加到以给定名称开头的任何计量 ID 中。 以下示例筛选出 ID 以example.remote.spring-doc.cadn.net.cn

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

以下属性允许按计量进行自定义:spring-doc.cadn.net.cn

表 1.按计量自定义
财产 描述

management.metrics.enablespring-doc.cadn.net.cn

是否接受具有特定 ID 的仪表。 不接受的计量将从MeterRegistry.spring-doc.cadn.net.cn

management.metrics.distribution.percentiles-histogramspring-doc.cadn.net.cn

是否发布适合计算可聚合(跨维度)百分位数近似值的直方图。spring-doc.cadn.net.cn

management.metrics.distribution.minimum-expected-value,management.metrics.distribution.maximum-expected-valuespring-doc.cadn.net.cn

通过限制预期值的范围来发布更少的直方图存储桶。spring-doc.cadn.net.cn

management.metrics.distribution.percentilesspring-doc.cadn.net.cn

发布在应用程序中计算的百分位值spring-doc.cadn.net.cn

management.metrics.distribution.expiry,management.metrics.distribution.buffer-lengthspring-doc.cadn.net.cn

通过将最近的样本累积在可配置的到期后轮换的环形缓冲区中,赋予最近的样本更大的权重,其中 可配置的缓冲区长度。spring-doc.cadn.net.cn

management.metrics.distribution.slospring-doc.cadn.net.cn

发布包含由服务级别目标定义的存储桶的累积直方图。spring-doc.cadn.net.cn

有关背后概念的更多详细信息percentiles-histogram,percentilesslo,请参阅 Micrometer 文档的 Histograms and percentiles 部分。spring-doc.cadn.net.cn

Metrics 终端节点

Spring Boot 提供了一个metrics终端节点,您可以诊断性地使用它来检查应用程序收集的指标。 默认情况下,终端节点不可用,必须公开。 有关更多详细信息,请参阅公开终端节点spring-doc.cadn.net.cn

导航到/actuator/metrics显示可用计量器名称的列表。 您可以通过提供特定计量的名称作为选择器来深入查看有关该计量的信息,例如,/actuator/metrics/jvm.memory.max.spring-doc.cadn.net.cn

您在此处使用的名称应与代码中使用的名称匹配,而不是与针对其寄送到的监控系统进行命名约定规范化后的名称匹配。 换句话说,如果jvm.memory.max显示为jvm_memory_max由于 snake 大小写命名约定,您仍然应该使用jvm.memory.max作为选择器,在metrics端点。spring-doc.cadn.net.cn

您还可以添加任意数量的tag=KEY:VALUEquery 参数添加到网址末尾,以维度向下钻取仪表 — 例如,/actuator/metrics/jvm.memory.max?tag=area:nonheap.spring-doc.cadn.net.cn

报告的测量值是与仪表名称和已应用的任何标签匹配的所有仪表的统计数据的总和。 在前面的示例中,返回的Valuestatistic 是堆的 “Code Cache”、“Compressed Class Space” 和 “Metaspace” 区域的最大内存占用量之和。 如果你只想看到 “Metaspace” 的最大大小,你可以添加一个额外的tag=id:Metaspace— 也就是说,/actuator/metrics/jvm.memory.max?tag=area:nonheap&tag=id:Metaspace.spring-doc.cadn.net.cn

与 Micrometer Observation 集成

一个DefaultMeterObservationHandler会自动注册到ObservationRegistry,它会为每个已完成的观察创建指标。spring-doc.cadn.net.cn