【问题标题】:kafka metrics missing in micrometer since SpringBoot 2.3.x自 SpringBoot 2.3.x 以来,千分尺中缺少 kafka 指标
【发布时间】:2022-01-18 19:31:48
【问题描述】:

从 SpringBoot 2.2.13 切换到 2.3.x - 2.6.x 中的任何一个时 我不再有以千分尺发布的 kafka 指标。

我没有使用 spring-kafka,只是手动创建 KafkaStreams 或 KafkaConsumer,但这适用于 2.2.x。添加 spring-kafka 依赖项没有帮助。有谁知道我必须做些什么才能找回这些?

【问题讨论】:

    标签: java spring-boot apache-kafka micrometer


    【解决方案1】:

    自 Spring Boot 2.3 起,Kafka 指标名称已更改。

    kafka_consumer_records_consumed_total_records_total -> kafka_consumer_fetch_manager_records_consumed_total
    kafka_consumer_records_lag_records -> kafka_consumer_fetch_manager_records_lag
    kafka_consumer_records_lag_max_records -> kafka_consumer_fetch_manager_records_lag_max
    kafka_consumer_fetch_latency_max_seconds -> kafka_consumer_fetch_manager_fetch_latency_max
    kafka_consumer_bytes_consumed_total_bytes_total -> kafka_consumer_fetch_manager_bytes_consumed_total
    kafka_consumer_records_per_request_avg_records -> kafka_consumer_fetch_manager_records_per_request_avg
    kafka_consumer_heartbeat_rate_heartbeats -> kafka_consumer_coordinator_heartbeat_rate
    

    如果您有自定义的消费者工厂,请添加customizers.orderedStream().forEach(customizer -> customizer.customize(consumerFactory));

    @Bean
    public ConsumerFactory<Integer, String> customConsumerFactory(ObjectProvider<DefaultKafkaConsumerFactoryCustomizer> customizers) {
        DefaultKafkaConsumerFactory<Integer, String> consumerFactory = new DefaultKafkaConsumerFactory<>(customConsumerConfigs());
        customizers.orderedStream().forEach(customizer -> customizer.customize(consumerFactory));
        return consumerFactory;
    }
    

    【讨论】:

    • 我没有使用spring-kafka 只是new KafkaConsumer(...)new KafkaStreams(...)
    • 我注意到名字的变化,这很令人惊讶。为什么名称会随着 SpringBoot 而改变?我认为这将基于kafka本身的版本或千分尺的版本,但事实并非如此。这很令人沮丧,因为我在 datadog 中有一堆已建立的仪表板和警报。
    【解决方案2】:

    我认为如果您手动创建这些组件,您应该手动注册它们,请参阅KafkaMetrics(我不确定这在 2.2.x 中是如何工作的)。您还可以在 KafkaMetricsAutoConfiguration 中查看 Spring Boot 是如何做到这一点的。

    【讨论】:

    • 我也不确定它在 2.2.x 中是如何工作的,它只是工作,我从来没有考虑过它,然后它在 2.3.x 中停止工作。我看到了KafkaMetricsAutoConfiguration,但没有在我的用例中使用它的示例。我最终确实使用了new KafkaStreamsMetrics(stream).bindTo(registry)new KafkaClientMetrics(consumer).bindTo(registry),这似乎确实有效,但找到所有案例并手动添加它并不理想。
    • 是的,如果你想手动绑定它们,你应该这样做。你可以打开 Spring Boot 的 issue 并在那里提问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2022-07-05
    • 2019-04-10
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多