可観測性

レイテンシを理解するには、アプリケーションコンポーネントからその動作、タイミング、アプリケーションコードとの関係についてインサイトを得ることが重要です。Spring Data Cassandra には、Cassandra の相互作用中に観測値を収集するために、Cassandra ドライバーを介して Micrometer 計測器が同梱されています。統合が設定されると、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)
  }
}
1CQL セッションオブジェクトをラップして、Cassandra ステートメントの実行を監視します。また、ObservationRequestTracker.INSTANCE を CqlSessionBuilder に登録します。
2CQL セッションオブジェクトをラップして、リアクティブな 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 キースペースの名前。

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 を含む Key-Value。

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 キースペースの名前。

db.operation

データベース操作。

db.statement

Cassandra CQL を含む Key-Value。

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 セッション