指标
开始
Spring Boot 会自动配置复合图MeterRegistry并且为类路径上每个支持的实现添加一个注册表。
对Micrometer-registry-{system}在你的运行时,Spring Boot 已经足够配置注册表了。
大多数注册机构有共同特征。 例如,即使Micrometer注册表实现在类路径上,你也可以禁用某个特定的注册表。 以下示例禁用了Datadog:
-
Properties
-
YAML
management.datadog.metrics.export.enabled=false
management:
datadog:
metrics:
export:
enabled: false
除非注册表特定属性另有说明,否则您也可以禁用所有注册表,如下示例所示:
-
Properties
-
YAML
management.defaults.metrics.export.enabled=false
management:
defaults:
metrics:
export:
enabled: false
Spring Boot 还会将任何自动配置的注册表添加到全局静态复合注册表中指标除非你明确告诉它不要:
-
Properties
-
YAML
management.metrics.use-global-registry=false
management:
metrics:
use-global-registry: false
你可以注册任意数量的MeterRegistryCustomizerBEANS 用于进一步配置注册表,例如在任何电表注册前应用公共标签:
-
Java
-
Kotlin
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.boot.micrometer.metrics.autoconfigure.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.micrometer.metrics.autoconfigure.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")
}
}
}
您可以通过更具体地针对通用类型,对特定注册表实现进行自定义:
-
Java
-
Kotlin
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.graphite.GraphiteMeterRegistry;
import org.springframework.boot.micrometer.metrics.autoconfigure.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.micrometer.metrics.autoconfigure.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 还配置内置仪表,可以通过配置或专用注释标记来控制。
支持的监控系统
本节简要介绍了支持的每一套监控系统。
应用光学
默认情况下,AppOptics 注册表会定期推送指标于api.appoptics.com/v1/measurements.
要将指标导出到 SaaS AppOptics,您的 API Tokens必须提供:
-
Properties
-
YAML
management.appoptics.metrics.export.api-token=YOUR_TOKEN
management:
appoptics:
metrics:
export:
api-token: "YOUR_TOKEN"
地图集
-
Properties
-
YAML
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"
数据狗
-
Properties
-
YAML
management.datadog.metrics.export.api-key=YOUR_KEY
management:
datadog:
metrics:
export:
api-key: "YOUR_KEY"
如果您还提供应用密钥(可选),那么电表描述、类型和基准单元等元数据也会被导出:
-
Properties
-
YAML
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美国网站 (api.datadoghq.com).
如果你的Datadog项目托管在其他站点,或者你需要通过代理发送指标,请相应配置URI:
-
Properties
-
YAML
management.datadog.metrics.export.uri=https://api.datadoghq.eu
management:
datadog:
metrics:
export:
uri: "https://api.datadoghq.eu"
你还可以更改向Datadog发送指标的间隔:
-
Properties
-
YAML
management.datadog.metrics.export.step=30s
management:
datadog:
metrics:
export:
step: "30s"
戴纳特雷斯
Dynatrace 提供两个指标导入 API,均为 Micrometer 实现。
你可以在这里找到Dynatrace关于微米计量导入的文档。
配置属性在第一版命名空间仅在导出到 Timeseries v1 API 时应用。
配置属性在V2命名空间仅在导出到 Metrics v2 API 时应用。
注意,该集成只能导出为任一第一版或V2API版本,且V2被优先考虑。
如果设备标识(v1 需要,但 v2 中未使用)被设置在第一版命名空间,度量导出为第一版端点。
否则V2被假定。
v2 API
你可以用 v2 API 有两种方式。
自动配置
Dynatrace 自动配置适用于由 OneAgent 或 Dynatrace 操作员监控的 Kubernetes 托管主机。
本地OneAgent:如果主机上运行着OneAgent,指标会自动导出到本地OneAgent的导入端点。 导入端点将指标转发到 Dynatrace 后端。
Dynatrace Kubernetes Operator:在安装了Dynatrace Operator的Kubernetes中运行时,注册表会自动从作符处获取你的端点URI和APITokens。
这是默认行为,除了依赖于io.micrometer:micrometer-registry-dynatrace.
手动配置
如果没有自动配置,则需要 Metrics v2 API 的端点和 API Tokens。
API Tokens必须包含“导入指标”(metrics.ingest) 权限设置。
我们建议将Tokens的权限限制在这一个权限范围内。
您必须确保端点 URI 包含路径(例如,/api/v2/metrics/ingest):
Metrics API v2 导入端点的 URL 会根据你的部署选项不同而有所不同:
-
SaaS:
https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingest -
托管部署:
https://{your-domain}/e/{your-environment-id}/api/v2/metrics/ingest
下面的示例是通过以下方式配置指标导出示例环境ID:
-
Properties
-
YAML
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 文档):
-
度量键前缀:设置一个前缀,该前缀会加在所有导出的度量键前。
-
丰富Dynatrace元数据:如果OneAgent或Dynatrace操作员正在运行,可以用额外的元数据丰富指标(例如关于主机、进程或Pod的元数据)。
-
默认维度:指定添加到所有导出指标中的键值对。 如果用Micrometer指定了带有相同密钥的标签,它们会覆盖默认尺寸。
-
使用Dynatrace汇总工具:在某些情况下,Micrometer Dynatrace注册系统创建的指标被拒绝。 在Micrometer 1.9.x中,通过引入Dynatrace专用的摘要仪器解决了这个问题。 将此开关设置为
falseMicrometer 强制退回到 1.9.x 之前的默认行为。 只有在从 Micrometer 1.8.x 迁移到 1.9.x 时遇到问题时才应使用。 -
导出电表元数据:从 Micrometer 1.12.0 起,Dynatrace 导出器默认还会导出电表元数据,如单位和描述。 使用该
导出-计量元数据切换关闭此功能。
也可以不指定 URI 和 API Tokens,如下例所示。 在这种情况下,自动配置端点使用的是:
-
Properties
-
YAML
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 Tokens、设备 ID 和 URI:
-
Properties
-
YAML
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端点路径是自动添加的。
版本无关设置
除了API端点和Tokens外,你还可以更改指标发送到Dynatrace的间隔。
默认导出间隔为60年代.
以下示例将导出间隔设置为30秒:
-
Properties
-
YAML
management.dynatrace.metrics.export.step=30s
management:
dynatrace:
metrics:
export:
step: "30s"
你可以在Micrometer文档和Dynatrace文档中找到更多关于如何设置Micrometer导出器的信息。
弹性的
默认情况下,指标会导出到运行在本地机器上的 Elastic。 您可以通过以下属性提供弹性服务器的位置:
-
Properties
-
YAML
management.elastic.metrics.export.host=https://elastic.example.com:8086
management:
elastic:
metrics:
export:
host: "https://elastic.example.com:8086"
神经节
默认情况下,指标会导出到运行在本地机器上的Ganglia。 你可以提供Ganglia服务器的主机和端口,如下示例所示:
-
Properties
-
YAML
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服务器的主机和端口,如下示例所示:
-
Properties
-
YAML
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是默认的层级NameMapper这决定了维度计ID如何映射到平面层级名称。
|
要控制这种行为,请定义你的
|
休米奥
默认情况下,Humio注册表会定期推送指标到 cloud.humio.com。 要将指标导出到 SaaS Humio,您必须提供您的 API Tokens:
-
Properties
-
YAML
management.humio.metrics.export.api-token=YOUR_TOKEN
management:
humio:
metrics:
export:
api-token: "YOUR_TOKEN"
你还应配置一个或多个标签,以识别推送指标的数据来源:
-
Properties
-
YAML
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,请配置组织,桶,以及认证Tokens用于写度量。
您可以通过以下方式提供Influx服务器的位置:
-
Properties
-
YAML
management.influx.metrics.export.uri=https://influx.example.com:8086
management:
influx:
metrics:
export:
uri: "https://influx.example.com:8086"
JMX
Micrometer 提供了与 JMX 的层级映射,主要作为一种廉价且便携的本地指标查看方式。
默认情况下,指标会导出为指标JMX域。
您可以通过以下方式提供域名:
-
Properties
-
YAML
management.jmx.metrics.export.domain=com.example.app.metrics
management:
jmx:
metrics:
export:
domain: "com.example.app.metrics"
Micrometer是默认的层级NameMapper这决定了维度计ID如何映射到平面层级名称。
|
要控制这种行为,请定义你的
|
KairosDB
默认情况下,指标会导出到运行在本地机器上的 KairosDB。 您可以通过以下方式提供 KairosDB 服务器的位置:
-
Properties
-
YAML
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"
新遗物
-
Properties
-
YAML
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发送指标的间隔:
-
Properties
-
YAML
management.newrelic.metrics.export.step=30s
management:
newrelic:
metrics:
export:
step: "30s"
默认情况下,度量通过 REST 调用发布,但如果你在类路径上有 Java Agent API,也可以使用它:
-
Properties
-
YAML
management.newrelic.metrics.export.client-provider-type=insights-agent
management:
newrelic:
metrics:
export:
client-provider-type: "insights-agent"
最后,你可以通过定义自己的方式来完全掌控NewRelicClientProvider豆。
OTLP
默认情况下,指标通过OpenTelemetry协议(OTLP)导出给运行在本地机器上的消费者。
要导出到另一个地点,请提供OTLP指标端点的位置,使用以下方式管理.otlp.metrics.export.URL:
-
Properties
-
YAML
management.otlp.metrics.export.url=https://otlp.example.com:4318/v1/metrics
management:
otlp:
metrics:
export:
url: "https://otlp.example.com:4318/v1/metrics"
自定义头部,例如用于认证,也可以通过以下方式提供管理.otlp.metrics.export.headers.*性能。
如果OtlpMetricsSenderBEAN 可用,它将在OtlpMeterRegistrySpring Boot会自动配置。
普罗 米修斯
Prometheus 期望抓取或轮查单个应用实例以获取指标。
Spring Boot 提供了一个执行器端点于/执行器/普罗米修斯以适当格式呈现普罗米修斯抓取。
| 默认情况下,端点不可用,必须被公开。详情请参见“暴露端点”。 |
以下示例scrape_config增加于prometheus.yml:
scrape_configs:
- job_name: "spring"
metrics_path: "/actuator/prometheus"
static_configs:
- targets: ["HOST:PORT"]
普罗米修斯·范例也被支持。
要启用此功能,需要跨度上下文豆豆应该在场。
如果你正在使用已弃用的Prometheus simpleclient支持并想启用该功能,SpanContextSupplier豆豆应该在场。
如果你用微尺追踪,这个会自动配置,但如果你愿意,也可以自己创建。
请查看Prometheus文档,因为此功能需要在Prometheus端明确启用,且仅支持OpenMetrics格式。
对于可能存在时间不够长、无法被抓取的临时或批处理作业,你可以使用 Prometheus Pushgateway 支持将指标暴露给 Prometheus。
要启用Prometheus Pushgateway支持,请在您的项目中添加以下依赖:
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>prometheus-metrics-exporter-pushgateway</artifactId>
</dependency>
当Prometheus Pushgateway依赖存在于类路径和管理.prometheus.metrics.export.pushgateway.enabled属性设置为true一个PrometheusPushGatewayManagerBean是自动配置的。
这用于管理向Prometheus Pushgateway推送指标。
你可以调音PrometheusPushGatewayManager通过利用以下属性管理.prometheus.metrics.export.pushgateway.
对于高级配置,你也可以提供自己的配置PrometheusPushGatewayManager豆。
简单
Micrometer 自带一个简单的内存后端,如果没有配置其他注册表,后端会自动作为备用。 这让你可以看到指标端点收集了哪些指标。
内存后端一旦使用其他可用后端,就会自动禁用。 你也可以明确禁用它:
-
Properties
-
YAML
management.simple.metrics.export.enabled=false
management:
simple:
metrics:
export:
enabled: false
堆叠驱动
Stackdriver 注册表会定期将度量推送到 Stackdriver。 要将指标导出到 SaaS Stackdriver,您必须提供您的 Google Cloud 项目 ID:
-
Properties
-
YAML
management.stackdriver.metrics.export.project-id=my-project
management:
stackdriver:
metrics:
export:
project-id: "my-project"
你也可以更改向 Stackdriver 发送指标的间隔:
-
Properties
-
YAML
management.stackdriver.metrics.export.step=30s
management:
stackdriver:
metrics:
export:
step: "30s"
统计D
StatsD 注册局积极地通过 UDP 向 StatsD 代理推送指标。 默认情况下,指标会导出到运行在本地机器上的 StatsD 代理。 你可以通过以下方式提供StatsD代理主机、端口和协议:
-
Properties
-
YAML
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):
-
Properties
-
YAML
management.statsd.metrics.export.flavor=etsy
management:
statsd:
metrics:
export:
flavor: "etsy"
支持的度量和计量器
Spring Boot 为多种技术提供自动电表注册功能。 在大多数情况下,默认数据提供了可行的指标,可以发布到任何支持的监控系统。
JVM 指标
通过使用核心的千米类自动配置,实现JVM指标。
JVM指标以以下方式发布,JVM。仪表名称。
以下JVM指标提供:
-
各种内存和缓冲池细节
-
垃圾回收相关的统计数据
-
线程利用
-
虚拟线程统计(针对此,
io.micrometer:Micrometer-java21必须在类路径上) -
载入和卸载的类别数量
-
JVM 版本信息
-
JIT 编译时间
系统指标
自动配置通过使用核心的微米类实现系统度量。
系统度量以系统。,过程。和磁盘。计价器名称。
提供以下系统指标:
-
CPU指标
-
文件描述符度量
-
运行时间指标(包括应用程序运行时间和固定的绝对启动时间指标)
-
可用磁盘空间
任务执行与调度指标
自动配置支持所有可用仪器线程池任务执行者和ThreadPoolTaskScheduler豆子,只要手下线程池执行器已开放。
指标以执行人名称标记,执行人名称源自豆子名称。
JMS指标
自动配置支持所有可用仪器Jms模板豆子和@JmsListener注释方法。
这将产生“jms.message.publish”和“jms.message.process”分别是指标。
有关产生观测的更多信息,请参见春季框架参考文档。
JmsClient和JmsMessagingTemplate该Jms模板Beans也有仪器。 |
春季MVC指标
自动配置支持对Spring MVC控制器和功能处理程序处理的所有请求进行仪器化。
默认情况下,指标以以下名称生成,http.server.requests.
你可以通过设置management.observations.http.server.requests.name财产。
为了添加默认标签,请提供@Bean这在DefaultServerRequestObservationConvention来自org.springframework.http.server.observation包。
要替换默认标签,请提供@Bean实现ServerRequestObservationConvention.
| 在某些情况下,网页控制器处理的异常不会被记录为请求度量标签。 应用程序可以通过将处理异常设置为请求属性来选择加入并记录异常。 |
默认情况下,所有请求都会被处理。
要自定义过滤器,请提供@Bean实现FilterRegistrationBean<ServerHttpObservationFilter>.
春季WebFlux指标
自动配置支持对 Spring WebFlux 控制器和功能处理程序处理的所有请求进行仪表化。
默认情况下,指标以以下名称生成,http.server.requests.
你可以通过设置management.observations.http.server.requests.name财产。
为了添加默认标签,请提供@Bean这在DefaultServerRequestObservationConvention来自org.springframework.http.server.reactive.observation包。
要替换默认标签,请提供@Bean实现ServerRequestObservationConvention.
| 在某些情况下,控制器和处理函数处理的异常不会作为请求度量标签记录。 应用程序可以通过将处理异常设置为请求属性来选择加入并记录异常。 |
Jersey服务器指标
自动配置支持对JerseyJAX-RS实现处理的所有请求进行仪器化。
默认情况下,指标以以下名称生成,http.server.requests.
你可以通过设置management.observations.http.server.requests.name财产。
默认情况下,Jersey服务器的指标会被标记为以下信息:
| 标记 | 描述 |
|---|---|
|
处理请求时抛出的任何异常的简单类名称。 |
|
请求的方法(例如, |
|
请求的结果,基于响应的状态代码。
1xx 是 |
|
响应的HTTP状态码(例如, |
|
请求在变量替换前的URI模板(例如, |
要自定义标签,请提供@Bean实现Jersey观测大会.
SSL 捆绑指标
Spring Boot Actuator 发布了关于 SSL 捆绑包的过期指标。
度规ssl.chain.expiary能在几秒钟内判断每条证书链的有效期。
如果链条已经过期,这个数字将为负数。
该指标标注如下信息:
| 标记 | 描述 |
|---|---|
|
包含证书链的捆绑包名称 |
|
证书链中最早到期的序列号(十六进制格式) |
|
证书链的名称。 |
HTTP 客户端指标
你也可以手动应用负责这些仪器的自定义器,具体来说ObservationRestTemplateCustomizer,ObservationWebClientCustomizer和ObservationRestClientCustomizer.
默认情况下,指标以以下名称生成,http.client.requests.
你可以通过设置management.observations.http.client.requests.name财产。
Tomcat 指标
自动配置仅在 MBean 时支持 Tomcat 的仪器化注册表已启用。
默认情况下,MBean注册表是禁用的,但你可以通过设置来启用server.tomcat.mbeanregistry.enabled自true.
Tomcat的指标以以下形式发布公猫。仪表名称。
缓存指标
自动配置支持所有可用仪器缓存启动时的实例,指标前缀为缓存.
缓存仪器已标准化为一组基本的指标。
此外,还提供针对缓存的额外指标。
支持以下缓存库:
-
缓存2k
-
咖啡因
-
Hazelcast
-
任何符合标准的 JCache(JSR-107) 实现
-
Redis
| 应启用度量,自动配置才能识别这些指标。 请参阅你所使用的缓存库的文档以获取更多细节。 |
度量以缓存名称和缓存管理器,这个名字源自豆子的名字。
只有启动时配置好的缓存才绑定到注册表。
对于缓存配置中未定义的缓存,如即时创建或启动阶段后程序创建的缓存,则需要显式注册。
一个CacheMetrics注册商豆子的推出是为了简化这一过程。 |
Spring Batch指标
请参阅Spring Batch参考文档。
数据源指标
自动配置支持所有可用仪器数据来源以 为 的度量为前缀的对象JDBC.connections.
数据源仪器生成的规范表示池中当前活跃、空闲、最大允许和最小允许连接。
度量指标也会以数据来源根据豆子的名字计算。
默认情况下,Spring Boot 为所有支持的数据源提供元数据。
你可以添加额外的内容DataSourcePoolMetadataProvider如果你喜欢的数据源不支持,那就用豆子。
看DataSourcePoolMetadataProvidersConfiguration举个例子。 |
此外,光的专属指标通过以下内容暴露希卡里普前缀。
每个指标都标注池名(你可以用spring.datasource.name).
休眠指标
如果org.hibernate.orm:hibernate-micrometer在类路径上,所有可用的休眠状态EntityManagerFactory启用统计的实例会用一个名为Hibernate.
度量指标也会以EntityManagerFactory,这个名字源自豆子的名字。
为了启用统计,标准的JPA性质hibernate.generate_statistics必须设置为true.
你可以在自动配置中启用EntityManagerFactory:
-
Properties
-
YAML
spring.jpa.properties[hibernate.generate_statistics]=true
spring:
jpa:
properties:
"[hibernate.generate_statistics]": true
Spring 数据仓库指标
自动配置支持所有 Spring 数据的测量存储 库方法调用。
默认情况下,指标以以下名称生成,spring.data.repository.invocations.
你可以通过设置management.metrics.data.repository.metric-name财产。
这@Timed注释来自io.micrometer.core.annotation包在存储 库接口和方法。
如果你不想为所有人记录指标存储 库调用,你可以设置管理.metrics.data.repository.autotime.enabled自false并且仅用于@Timed而是注释。
一个@Timed注释longTask = 真该方法使得长时间的任务计时器得以实现。
长任务计时器需要单独的度量名称,并且可以与短任务计时器叠加使用。 |
默认情况下,与仓库调用相关的指标会被标记为以下信息:
| 标记 | 描述 |
|---|---|
|
源的简单类名 |
|
名称 |
|
结果状态( |
|
任何从调用中抛出的例外的简单类名称。 |
要替换默认标签,请提供@Bean实现RepositoryTagsProvider.
春季集成指标
Spring集成自动提供微米支持,只要MeterRegistry豆子是有供应的。
指标发布于以下spring.integration。仪表名称。
卡夫卡度量
自动配置寄存器MicrometerConsumerListener和MicrometerProducerListener分别用于自动配置的消费工厂和生产者工厂。
它还会识别KafkaStreamsMicrometerListener为StreamsBuilderFactoryBean.
更多细节请参见Spring Kafka文档中的Micrometer Native Metric部分。
MongoDB 指标
本节简要介绍MongoDB可用的指标。
MongoDB 命令度量
自动配置寄存器MongoMetricsCommandListener带有自动配置的Mongo客户端.
一个名为mongodb.driver.commands为每个命令下达底层 MongoDB 驱动创建。
每个指标默认标注以下信息:
| 标记 | 描述 |
|---|---|
|
命令名称。 |
|
命令发送到的集群标识符。 |
|
命令发送到服务器的地址。 |
|
命令的结果( |
要替换默认的度量标签,定义一个MongoCommandTagsProvider(蒙戈指令标签提供者)Bean,正如以下例子所示:
-
Java
-
Kotlin
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()
}
}
要禁用自动配置的命令指标,请设置以下属性:
-
Properties
-
YAML
management.metrics.mongodb.command.enabled=false
management:
metrics:
mongodb:
command:
enabled: false
MongoDB 连接池指标
自动配置寄存器MongoMetricsConnectionPoolListener带有自动配置的Mongo客户端.
为连接池创建了以下规范指标:
-
mongodb.driver.pool.size报告当前连接池规模,包括闲置和正在使用的成员。 -
mongodb.driver.pool.已退查报告当前正在使用的连接数量。 -
mongodb.driver.pool.waitqueuesize报告当前连接池等待队列的大小。
每个指标默认标注以下信息:
| 标记 | 描述 |
|---|---|
|
连接池对应的集群标识符。 |
|
连接池对应的服务器地址。 |
要替换默认的度量标签,定义一个MongoConnectionPoolTagsProvider豆:
-
Java
-
Kotlin
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()
}
}
要禁用自动配置的连接池指标,请设置以下属性:
-
Properties
-
YAML
management.metrics.mongodb.connectionpool.enabled=false
management:
metrics:
mongodb:
connectionpool:
enabled: false
Neo4j 指标
自动配置寄存器MicrometerObservationProvider对于自动配置Drivers.
要覆盖此行为,你可以注册ConfigBuilderCustomizer豆子的阶数大于零。
Jetty指标
自动配置绑定了 Jetty 的度量线程池通过使用微米JettyServerThreadPoolMetrics.
Jetty的指标连接器实例通过使用微米Jetty连接指标以及server.ssl.enabled设置为true,微米的JettySslHandshakeMetrics.
注册自定义指标
要注册自定义指标,注入MeterRegistry进入你的组件:
-
Java
-
Kotlin
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)
}
}
如果你的指标依赖其他豆子,我们建议你使用MeterBinder注册方式:
-
Java
-
Kotlin
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确保建立正确的依赖关系,并且在检索度量值时豆子仍然可用。
一个MeterBinder如果你发现自己会反复在组件或应用之间进行一套指标的测量,实施也会非常有用。
默认情况下,所有指标MeterBinder豆子会自动绑定到Spring管理的MeterRegistry. |
个性化指标
例如,如果你想重命名mytag.region标签到mytag.area对于所有以com.example,你可以这样做:
-
Java
-
Kotlin
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")
}
}
默认情况下,全部计量Filter豆子会自动绑定到Spring管理的MeterRegistry.
务必通过使用Spring管理的系统注册你的指标MeterRegistry而不是 上的任何静态方法指标.
这些都使用了非Spring管理的全局注册表。 |
常见标签
常见标签通常用于对作环境进行维度下降,如主机、实例、区域、堆栈等。 Commons 标签适用于所有电表,并可配置,如下示例所示:
-
Properties
-
YAML
management.metrics.tags.region=us-east-1
management.metrics.tags.stack=prod
management:
metrics:
tags:
region: "us-east-1"
stack: "prod"
前述例子补充地区和叠所有计量表的标签,值为美国东1号和刺分别。
如果你用Graphite,常见标签的顺序很重要。
由于使用这种方法无法保证常见标签的顺序,建议Graphite用户定义自定义标签计量Filter相反。 |
每米属性
此外计量Filter豆子,你可以根据属性在每米范围内有限度地自定义。
按米数进行自定义,使用Spring靴PropertiesMeterFilter,变为任何以名字开头的电表编号。
以下示例过滤掉所有编号为example.remote.
-
Properties
-
YAML
management.metrics.enable.example.remote=false
management:
metrics:
enable:
example:
remote: false
以下特性允许按米进行定制:
| 属性 | 描述 |
|---|---|
|
是否接受带有特定身份标识的电表。
不被接受的电表会被过滤到 |
|
是否发布适合计算可聚合(跨维)百分位近似的直方图。 |
|
通过限制期望值范围,减少发布直方图桶。 |
|
发布申请中计算的百分位数值 |
|
通过将近期样本积累在环形缓冲区中,这些缓冲区在可配置的到期后旋转,赋予其更大权重,且 可配置缓冲区长度。 |
|
发布一个累计直方图,桶由你的服务水平目标定义。 |
关于背后概念的更多细节百分位-直方图,百分位数和慢速,请参见Micrometer文档中的直方图和百分位部分。
指标端点
Spring靴提供了指标端点,你可以用它来诊断性地检查应用程序收集的指标。
该端点默认不可用,必须被暴露。
详情请参见“暴露端点”。
导航至/执行器/度量显示可用电表名称列表。
您可以通过选择器提供该仪表的名称,向下查看其信息——例如,/执行器/度量/jvm.memory.max.
|
你在这里使用的名称应与代码中使用的名字一致,而不是在被规范命名规范后,针对该监控系统而定。
换句话说,如果 |
你也可以添加任意数量的标签=键:值查询URL末尾的参数以在度量上向下钻探——例如,/actuator/metrics/jvm.memory.max?tag=area:nonheap.
|
报告的测量数据是所有与仪表名称相符的电表统计数据和所有已贴标签的总和。
在上述例子中,返回的 |
与微米观测的积分
一个默认计量观察处理程序自动注册于ObservationRegistry,为每一个完成的观测生成指标。