[英]How to enable Cassandra CqlSession Metrics in springbootapplication
我想啟用 cassandra cqlsession 指標。 當嘗試注冊 cqlsession 指標時,它在 springboot 應用程序中提供 optional.empty()。 這里我使用 cassandra datastax java 驅動程序 4.6。
這是我的代碼:
@Autowired
private CqlSession cqlsession;
MetricRegistry metricRegistry = cqlsession.getMetrics()
.orElseThrow(() -> new IllegalArgumentException("not able to get metrics"))
.getRegistry();
引發 IllegalArgumentException 錯誤。
當參考 cassandra datastax 的官方文檔時( https://docs.datastax.com/en/developer/java-driver/4.6/manual/core/metrics/#configuration )。 添加到項目中的同一組 conf 文件不能解決問題
我用以下方法解決了這個問題:
配置class
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.METRICS_NODE_ENABLED;
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.METRICS_SESSION_ENABLED;
import org.springframework.boot.autoconfigure.cassandra.DriverConfigLoaderBuilderCustomizer;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(CassandraProperties.class)
public class CassandraMetricsConfig {
@Bean
DriverConfigLoaderBuilderCustomizer configLoaderBuilderCustomizer(CassandraProperties cassandraProperties) {
return builder -> {
builder.withStringList(METRICS_SESSION_ENABLED, cassandraProperties.getSessionMetrics());
builder.withStringList(METRICS_NODE_ENABLED, cassandraProperties.getNodeMetrics());
};
}
}
屬性 class
@ConfigurationProperties(prefix = "cassandra")
@Data
public class CassandraProperties {
@NotNull
private List<String> sessionMetrics = new ArrayList<>();
@NotNull
private List<String> nodeMetrics = new ArrayList<>();
}
應用程序.yml
cassandra:
session-metrics:
- bytes-sent
- connected-nodes
...
node-metrics:
- pool.open-connections
- pool.in-flight
...
請注意,此方法僅適用於不需要額外配置(如 cql-requests)的指標。 如果要監視 cql 請求,則必須擴展示例以配置所需的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.