Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 在spring应用程序prometheus中启用kafka客户端指标_Apache Kafka_Grafana_Spring Kafka - Fatal编程技术网

Apache kafka 在spring应用程序prometheus中启用kafka客户端指标

Apache kafka 在spring应用程序prometheus中启用kafka客户端指标,apache-kafka,grafana,spring-kafka,Apache Kafka,Grafana,Spring Kafka,我有一个应用程序,它使用卡夫卡主题并生成卡夫卡主题。我正在尝试设置Grafana仪表板以显示卡夫卡指标。我正试图向普罗米修斯公开卡夫卡指标,这样格拉法纳仪表板就可以获取这些指标并进一步显示它们 下面是我正在使用的库和属性 org.apache.kafka:kafka-clients:jar:2.5.1:compile io.micrometer:micrometer-registry-prometheus:jar:1.5.4:compile io.micrometer:micrometer-je

我有一个应用程序,它使用卡夫卡主题并生成卡夫卡主题。我正在尝试设置Grafana仪表板以显示卡夫卡指标。我正试图向普罗米修斯公开卡夫卡指标,这样格拉法纳仪表板就可以获取这些指标并进一步显示它们

下面是我正在使用的库和属性

org.apache.kafka:kafka-clients:jar:2.5.1:compile
io.micrometer:micrometer-registry-prometheus:jar:1.5.4:compile
io.micrometer:micrometer-jersey2:jar:1.5.4:compile
应用程序属性:

spring.jmx.enabled=true
management.endpoints.web.base-path=/
management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=prometheus
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
prometheus使用测微计显示jvm、tomcat相关指标以及自定义指标。但卡夫卡的衡量标准并未曝光。我试着调试,却毫无头绪地离开了。任何建议都会大有帮助

作为提醒,我没有使用spring kafka注释。我将它作为独立的多线程运行,在这里我使用
consumer.poll(1000L)
方法获取记录

卡夫卡消费者创建为:
新卡夫卡消费者(getProps())
,卡夫卡制作人创建为
新卡夫卡制作人(props)

props.put(ConsumerConfig.BOOTSTRAP\u SERVERS\u CONFIG,…);
put(ConsumerConfig.CLIENT_ID_CONFIG,CONFIG.getConsumerName());
put(ConsumerConfig.GROUP_ID_CONFIG,CONFIG.getGroupId());
put(ConsumerConfig.KEY_反序列化器_CLASS_CONFIG,CONFIG.getKeyDeserializer());
put(ConsumerConfig.VALUE_反序列化器_CLASS_CONFIG,CONFIG.getValueDeserializer());
put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,CONFIG.getenableautocomit());
put(ConsumerConfig.RECEIVE\u BUFFER\u CONFIG,CONFIG.getReceiveBufferBytes());
put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG,CONFIG.getMaxPartitionFetchBytes());
put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG,CONFIG.getMaxPollRecords());
put(ConsumerConfig.PARTITION\u ASSIGNMENT\u STRATEGY\u CONFIG,RoundRobinAssignor.class.getName());
受保护的KafkaConsumer getConsumer(列表输入OPIC){
卡夫卡消费者=新卡夫卡消费者(道具);
consumer.subscribe(InputOpics,new ConsumerBalanceListener()){
@凌驾
已撤销分区上的公共void(集合分区){
info(“已撤销分区:”+分区);
consumer.commitAsync();
}
@凌驾
已签名的分区上的公共void(集合分区){
logger.info(“分配的分区:”+分区);
}
});
退货消费者;
}

我已经在Gitter上回答了您的问题-上面的代码没有将Spring用于Apache Kafka,您正在创建自己的消费者和生产者

如果您将Spring用于Apache Kafka的
DefaultKafkanConsumerFactory
,则可以向其添加
千分尺ConsumerListener
,Spring将通过
KafkaClientMetrics
向仪表注册表注册每个消费者的指标。如果你创造自己的消费者,你必须自己创造


制片人也是如此。

谢谢Gary,我会检查是否可以将其更改为spring kafka以获取这些指标
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, ...);
props.put(ConsumerConfig.CLIENT_ID_CONFIG, config.getConsumerName());

props.put(ConsumerConfig.GROUP_ID_CONFIG, config.getGroupId());
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, config.getKeyDeserializer());
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, config.getValueDeserializer());
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, config.getEnableAutoCommit());
props.put(ConsumerConfig.RECEIVE_BUFFER_CONFIG, config.getReceiveBufferBytes());
props.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, config.getMaxPartitionFetchBytes());
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, config.getMaxPollRecords());
props.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, RoundRobinAssignor.class.getName());

protected KafkaConsumer<byte[], Event> getConsumer(List<String> inputTopics) {
    KafkaConsumer<byte[], Event> consumer = new KafkaConsumer<>(props));
    consumer.subscribe(inputTopics, new ConsumerRebalanceListener() {
        @Override
        public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
            logger.info("PARTITIONS revoked: " + partitions);
            consumer.commitAsync();
        }

        @Override
        public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
            logger.info("PARTITIONS assigned: " + partitions);
        }
    });
    return consumer;
}