Observability

可观察性是指从外部观察运行系统内部状态的能力。它由日志、指标和跟踪这三大支柱组成。 对于指标和跟踪,Spring Boot 使用 Micrometer Observation。若要创建你自己的观察(将生成指标和跟踪),可以注入 ObservationRegistry。 include-code::MyCustomObservation[]

低基数标签将添加到指标和跟踪中,而高基数标签将仅添加到跟踪中。

类型为 ObservationPredicateGlobalObservationConventionObservationFilterObservationHandler 的 Bean 将自动在 ObservationRegistry 中注册。此外,您还可以注册任意数量的 ObservationRegistryCustomizer Bean 以进一步配置注册表。 可观测性支持依靠 Context Propagation library 来跨线程和响应式管道转发当前观测值。默认情况下,ThreadLocal 值不会自动重新恢复在响应式操作符中。此行为受 configprop:spring.reactor.context-propagation[] 属性控制,可以将其设置为 auto 以启用自动传播。 有关观测值的更多详细信息,请参阅 Micrometer Observation documentation

可以使用单独的项目来配置 JDBC 的可观测性。 Datasource Micrometer project 提供 Spring Boot 启动程序,在调用 JDBC 操作时自动创建观测值。在 in the reference documentation 了解更多相关信息。

Observability for R2D2 已内置到 Spring Boot。要启用它,请将 io.r2dbc:r2dbc-proxy 依赖项添加到项目。

Common tags

普通标记通常用于对操作系统环境中的维度进行深入分析,例如主机、实例、区域、堆栈和其他。普通标记作为低基数标记应用于所有观测,并且可以进行配置,如下面的示例所示:

management:
  observations:
    key-values:
      region: "us-east-1"
      stack: "prod"

前面的示例向所有观测分别添加了 regionstack 标记,其值为 us-east-1prod

Preventing Observations

如果你想防止报告某些观测结果,可以使用 configprop:management.observations.enable[] 属性:

management:
  observations:
    enable:
      denied:
        prefix: false
      another:
        denied:
          prefix: false

前面的示例将防止名称以 denied.prefixanother.denied.prefix 开头的所有观测。

如果你想阻止 Spring Security 报告观测结果,请将属性 configprop:management.observations.enable.spring.security[] 设置为 false

如果你需要更大程度地控制观测阻止,可以注册类型为 ObservationPredicate 的 Bean。仅当所有 ObservationPredicate Bean 都为该观测返回 true 时,才会报告观测。

前面的示例将阻止名称中包含“denied”的所有观测。

OpenTelemetry Support

Spring Boot 的执行器模块包括对 OpenTelemetry 的基本支持。

它提供了一个类型为 OpenTelemetry 的 Bean,并且如果应用程序上下文中存在类型为 SdkTracerProviderContextPropagatorsSdkLoggerProviderSdkMeterProvider 的 Bean,它们将自动注册。此外,它还提供了一个 Resource Bean。自动配置的 Resource 的属性可以通过 configprop:management.opentelemetry.resource-attributes[] 配置属性进行配置。如果你已经定义了自己的 Resource Bean,则不再是这种情况下。

Spring Boot 不提供 OpenTelemetry 指标或日志记录的自动配置。OpenTelemetry 跟踪仅在与 Micrometer Tracing 一起使用时自动配置。

接下来的部分将提供有关日志记录、指标和跟踪的更多详细信息。

Micrometer Observation Annotations support

要启用诸如 @Timed@Counted@MeterTag@NewSpan 注释的指标和跟踪注释的扫描,你需要将 configprop:management.observations.annotations.enabled[] 属性设置为 true。此功能直接受 Micrometer 支持,请参阅 {url-micrometer-docs-concepts}#_the_timed_annotation[Micrometer] 和 {url-micrometer-tracing-docs}/api.html#_aspect_oriented_programming[Micrometer Tracing] 参考文档。