如何阅读由 kafka 创建的 Java 中的 _confluent-metrics 主题

Posted

技术标签:

【中文标题】如何阅读由 kafka 创建的 Java 中的 _confluent-metrics 主题【英文标题】:How to read from the _confluent-metrics topic in Java which is created by kafka 【发布时间】:2020-11-13 14:27:15 【问题描述】:

我想获取此处给出的我的一个接收器连接器的接收器记录活动计数值https://docs.confluent.io/current/connect/managing/monitoring.html#sink-task-metrics

我使用 docker compose 文件在 docker 桌面上运行所有容器 docker ps docker Ps

我已经使用了 confluent-metrics 报告器来完成这项任务。

也指https://docs.confluent.io/5.4.0/kafka/metrics-reporter.html和https://neo4j.com/docs/labs/neo4j-streams/current/examples/#_confluent_with_docker我有 像这样将 env 变量添加到 kafka 容器中

 kafka-service:
    image: confluentinc/cp-enterprise-kafka:5.4.0
    container_name: kafka
    depends_on:
      - zookeeper
    links:
      - zookeeper
    ports:
      - 9092:9092
    expose:
      - "29092"
    environment:
      METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
      CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
      CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
      CONFLUENT_METRICS_REPORTER_TOPIC_CREATE: 'true'
      CONFLUENT_METRICS_ENABLE: 'true'
      CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: http://kafka-service:29092
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-service:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 100
    command:
      - bash
      - -c 
      - |
        echo '127.0.0.1 kafka-service' >> /etc/hosts
        /etc/confluent/docker/run
        sleep infinity  

在 kafka 日志中我收到了消息

INFO 创建的指标报告主题 _confluent-metrics (io.confluent.metrics.reporter.ConfluentMetricsReporter)

我不确定如何阅读 Java 中的这个主题。这个主题也有必要的指标吗?与接收器连接器有关吗?

第三次在此页面上https://docs.confluent.io/current/connect/managing/monitoring.html#sink-task-metrics 给出了 Mbeans .. 我也不知道如何使用它。如果它也需要 JMX,我曾尝试在遵循此 https://rmoff.net/2018/09/17/accessing-kafka-docker-containers-jmx-from-host/ 之后放置 KAFKA_JMX_HOSTNAME = localhost 和 KAFKA_JMX_PORT: 9010,但我不确定如何继续。

【问题讨论】:

【参考方案1】:

据我所知,ConfluentMetricsReporter 是专有的二进制格式,如果没有作为控制中心一部分的反序列化库,则无法读取。

我建议使用 Prometheus JMX Exporter + Grafana 让这些数据在 Kafka Consumer 应用程序或控制中心之外进行可视化(Confluent Helm Charts 已经提供了这样的设置)


旁注:请不要编辑任何/etc/hosts 文件

【讨论】:

哦,我明白了,但我使用的是 Confluent 包的社区版,我的帖子中提到了一个链接,显示使用 JMX Mbeans 和 Confluent 指标来获取 Sink 任务指标 docs.confluent.io/current/connect/managing/…。 您的问题表明您正在使用企业代理。社区和企业对 Kafka Connect 有相同的方式。我不确定我是否理解。此外,Sink 任务指标将是 kafka 连接图像的一部分,而不是您问题中的代理 是的@OneCricketeer 我将所有这些配置都放在了 Kafka-connect 容器中,但我仍然无法继续。帮助赞赏。我只是想要某种方法来获取我的一个 ES 接收器连接器运行时的接收器任务指标。提前致谢 我不确定您在寻找什么指标,但就像我提到的,您可以使用 Elasticsearch 的 Prometheus insead 来收集 JMX 指标。否则,您需要使用 Jolokia 和 Beats。 ConfluentMetricsReporter 不适用于 JMX,它主要用于延迟计算,即使这样也可以从 Burrow 或 Remora 等外部工具获得

以上是关于如何阅读由 kafka 创建的 Java 中的 _confluent-metrics 主题的主要内容,如果未能解决你的问题,请参考以下文章

kafka源码阅读环境

java——spring boot集成kafka——kafka集群中controller的作用

如何创建kafka consumer

kafka过滤/动态主题创建

Kafka架构及基本原理简析

如何通过 Java 在 Kafka 中创建主题