Observability
可观察性是指从外部观察运行系统内部状态的能力。它由日志、指标和跟踪这三大支柱组成。
对于指标和跟踪,Spring Boot 使用 Micrometer Observation。若要创建你自己的观察(将生成指标和跟踪),可以注入 ObservationRegistry
。
include-code::MyCustomObservation[]
低基数标签将添加到指标和跟踪中,而高基数标签将仅添加到跟踪中。 |
类型为 ObservationPredicate
、GlobalObservationConvention
、ObservationFilter
和 ObservationHandler
的 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。要启用它,请将 |
Common tags
普通标记通常用于对操作系统环境中的维度进行深入分析,例如主机、实例、区域、堆栈和其他。普通标记作为低基数标记应用于所有观测,并且可以进行配置,如下面的示例所示:
management: observations: key-values: region: "us-east-1" stack: "prod"
前面的示例向所有观测分别添加了 region
和 stack
标记,其值为 us-east-1
和 prod
。
Preventing Observations
如果你想防止报告某些观测结果,可以使用 configprop:management.observations.enable[] 属性:
management: observations: enable: denied: prefix: false another: denied: prefix: false
前面的示例将防止名称以 denied.prefix
或 another.denied.prefix
开头的所有观测。
如果你想阻止 Spring Security 报告观测结果,请将属性 configprop:management.observations.enable.spring.security[] 设置为 |
如果你需要更大程度地控制观测阻止,可以注册类型为 ObservationPredicate
的 Bean。仅当所有 ObservationPredicate
Bean 都为该观测返回 true
时,才会报告观测。
前面的示例将阻止名称中包含“denied”的所有观测。
OpenTelemetry Support
Spring Boot 的执行器模块包括对 OpenTelemetry 的基本支持。
它提供了一个类型为 OpenTelemetry
的 Bean,并且如果应用程序上下文中存在类型为 SdkTracerProvider
、ContextPropagators
、SdkLoggerProvider
或 SdkMeterProvider
的 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] 参考文档。