kafka-clients之监控

以生产者为例介绍spring如何整合kafka-clients,micrometer,prometheus。上报生产者监控打点

可以通过在Spring Boot应用中手动添加Kafka Producer的度量监控,确保Prometheus能够采集到Producer的指标。以下是一个示例代码,其中使用了MeterRegistry注册Kafka Producer的度量指标:

1. 引入依赖

确保在pom.xml中引入Micrometer和Prometheus相关的依赖:

xml 复制代码
<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
</dependency>

2. 配置Kafka和Prometheus监控

在配置类中,手动为Producer添加度量注册。

java 复制代码
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.binder.MeterBinder;
import io.micrometer.core.instrument.binder.kafka.KafkaMetrics;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class KafkaProducerConfig {

    @Bean
    public KafkaProducer<String, String> kafkaProducer() {
        Map<String, Object> configProps = new HashMap<>();
        configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        configProps.put(ProducerConfig.METRICS_RECORDING_LEVEL_CONFIG, "INFO");  // 启用INFO级别的监控

        return new KafkaProducer<>(configProps);
    }

    @Bean
    public MeterBinder kafkaProducerMetrics(KafkaProducer<String, String> kafkaProducer) {
        return new KafkaMetrics(kafkaProducer);
    }
}

3. 配置Prometheus端点

application.yml中配置Prometheus的端点:

yaml 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*"
  metrics:
    export:
      prometheus:
        enabled: true
  endpoint:
    prometheus:
      enabled: true

4. 配置Prometheus采集

确保Prometheus的配置文件中包含Spring Boot应用的Prometheus端点,通常是http://<application-host>:<port>/actuator/prometheus

5. 使用Producer并触发度量

在应用代码中使用KafkaProducer发送消息,以确保Producer的指标数据生成:

java 复制代码
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class KafkaProducerService {

    private final KafkaProducer<String, String> producer;

    @Autowired
    public KafkaProducerService(KafkaProducer<String, String> producer) {
        this.producer = producer;
    }

    public void sendMessage(String topic, String key, String value) {
        ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
        producer.send(record);
    }
}

6. 验证

运行应用并访问http://<application-host>:<port>/actuator/prometheus,检查是否包含Producer的指标数据。这样Prometheus应该能够采集到Producer的度量指标。

相关推荐
网络工程小王1 小时前
【HCIE-AI】12.deepspeed分布式并行训练进阶版
人工智能·pytorch·分布式·学习·昇腾·deepspeed
ACP广源盛139246256734 小时前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
花生了什么事o4 小时前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法
java1234_小锋5 小时前
【免费】基于Spark实时电商用户行为分析与预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
java·spark·kafka·实时电商用户行为分析与预测系统
爱吃提升19 小时前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python
ZENERGY-众壹1 天前
跨品牌逆变器升级:华为锦浪德业 API 对接的 7 个坑
分布式·华为·数据归一化·光伏运维·逆变器api
薛定谔的猫19821 天前
LLaMA-Factory +DeepSpeed 分布式多卡训练实战全解
分布式·deepspeed·zero·多卡训练·多卡分布式训练
稚南城才子,乌衣巷风流1 天前
RabbitMQ 消息队列:从入门到实战
分布式·rabbitmq
AI人工智能+电脑小能手1 天前
【大白话说Java面试题 第194题】【08_Kafka篇】第10题:简述 Kafka 的 Rebalance 机制?
java·kafka·消费者组·rebalance·分布式消息队列
Database_Cool_2 天前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql