可观察性

从应用程序组件获取其操作、计时以及与应用程序代码的关系的洞察力对于理解延迟至关重要。Spring Data Cassandra 通过 Cassandra 驱动程序提供 Micrometer 监控功能,以便在 Cassandra 交互期间收集观察结果。一旦集成设置完成,Micrometer 将为每个 Cassandra 语句创建度量和跨度(用于分布式追踪)。

要启用监控功能,请将以下配置应用于您的应用程序

@Configuration
class ObservabilityConfiguration {

  @Bean
  public ObservableCqlSessionFactoryBean observableCqlSession(CqlSessionBuilder builder,
                                                              ObservationRegistry registry) {
    return new ObservableCqlSessionFactoryBean(builder, registry); (1)
  }

  @Bean
  public ObservableReactiveSessionFactoryBean observableReactiveSession(CqlSession session,
                                                              ObservationRegistry registry) {
    return new ObservableReactiveSessionFactoryBean(session, registry); (2)
  }
}
1 包装 CQL 会话对象以观察 Cassandra 语句的执行。此外,使用 `CqlSessionBuilder` 注册 `ObservationRequestTracker.INSTANCE`。
2 包装 CQL 会话对象以观察响应式 Cassandra 语句的执行。

另请参阅 OpenTelemetry 语义约定 以了解更多信息。

约定

下面您可以找到该项目声明的所有 `GlobalObservabilityConventions` 和 `ObservabilityConventions` 列表。

表1. ObservationConvention 实现

ObservationConvention 类名

适用的 ObservationContext 类名

org.springframework.data.cassandra.observability.DefaultCassandraObservationConvention

n/a

指标

下面您可以找到该项目声明的所有指标列表。

Cassandra 查询观察

为基于 Cassandra 的查询创建一个 `io.micrometer.observation.Observation`。

**指标名称** `spring.data.cassandra.query`。**类型** `timer` 和**基本单位** `seconds`。

封闭类的完全限定名称 `org.springframework.data.cassandra.observability.CassandraObservation`。

表2. 低基数键

名称

描述

db.cassandra.coordinator.dc

db.cassandra.coordinator.id

db.name

Cassandra keyspace 的名称。

db.operation

数据库操作。

db.system

数据库系统。

net.peer.name

数据库主机名。

net.peer.port

逻辑远程端口号。

net.sock.peer.addr

Cassandra 对等地址。

net.sock.peer.port

Cassandra 对等端口。

net.transport

网络传输。

spring.data.cassandra.methodName

方法名

spring.data.cassandra.sessionName

Cassandra 会话

表3. 高基数键

名称

描述

db.cassandra.consistency_level

db.cassandra.idempotence

db.cassandra.page_size

db.statement

包含 Cassandra CQL 的键值对。

spring.data.cassandra.node[%s].error

包含针对给定节点发生的错误的标签。(由于名称包含 `%s`,因此最终值将在运行时解析)

跨度

下面您可以找到该项目声明的所有跨度列表。

Cassandra 查询观察跨度

为基于 Cassandra 的查询创建一个 `io.micrometer.observation.Observation`。

**跨度名称** `spring.data.cassandra.query`。

封闭类的完全限定名称 `org.springframework.data.cassandra.observability.CassandraObservation`。

表4. 标签键

名称

描述

db.cassandra.consistency_level

db.cassandra.coordinator.dc

db.cassandra.coordinator.id

db.cassandra.idempotence

db.cassandra.page_size

db.name

Cassandra keyspace 的名称。

db.operation

数据库操作。

db.statement

包含 Cassandra CQL 的键值对。

db.system

数据库系统。

net.peer.name

数据库主机名。

net.peer.port

逻辑远程端口号。

net.sock.peer.addr

Cassandra 对等地址。

net.sock.peer.port

Cassandra 对等端口。

net.transport

网络传输。

spring.data.cassandra.methodName

方法名

spring.data.cassandra.node[%s].error

包含针对给定节点发生的错误的标签。(由于名称包含 `%s`,因此最终值将在运行时解析)

spring.data.cassandra.sessionName

Cassandra 会话