Developer Hub — Kafka Plugin

Kafka Plugin en Red Hat Developer Hub

El plugin @backstage-community/plugin-kafka permite ver información de Kafka directamente en las entity pages de Developer Hub.

¿Qué muestra?

  • Topic offsets: posición actual de producción por partición

  • Consumer group offsets: posición de consumo por consumer group

  • Consumer lag: diferencia entre posición de producción y consumo

  • Dashboard URL: link directo a Grafana/Streams Console

Configuración

El plugin está habilitado como dynamic plugin en Developer Hub:

# Backend — conectividad al cluster Kafka
- package: ./dynamic-plugins/dist/backstage-community-plugin-kafka-backend-dynamic
  disabled: false
  pluginConfig:
    kafka:
      clientId: backstage
      clusters:
        - name: cdc-cluster
          brokers:
            - cdc-cluster-kafka-bootstrap.kafka-cdc.svc:9092

# Frontend — UI en entity pages
- package: ./dynamic-plugins/dist/backstage-community-plugin-kafka
  disabled: false
  pluginConfig:
    dynamicPlugins:
      frontend:
        backstage-community.plugin-kafka:
          mountPoints:
            - mountPoint: entity.page.overview/cards
              importName: EntityKafkaContent
              config:
                if:
                  anyOf:
                    - hasAnnotation: kafka.apache.org/consumer-groups

Annotación en catalog entities

Para que el plugin de Kafka aparezca en una entity page, agrega la siguiente anotación al catalog-info.yaml del componente:

metadata:
  annotations:
    kafka.apache.org/consumer-groups: camel-cdc-consumer

Esto hace que Developer Hub muestre los offsets y lag del consumer group camel-cdc-consumer directamente en la vista del componente.

How it Works

Plugin backend: conexión al cluster Kafka

El plugin de Kafka en Developer Hub no usa APIs REST de terceros — se conecta directamente al cluster Kafka:

  1. El backend del plugin (plugin-kafka-backend-dynamic) establece una conexión AdminClient al cluster usando los brokers configurados (cdc-cluster-kafka-bootstrap.kafka-cdc.svc:9092).

  2. Usa la API AdminClient.describeConsumerGroups() para obtener el estado de los consumer groups.

  3. Consulta AdminClient.listConsumerGroupOffsets() para los offsets actuales y AdminClient.listOffsets(OffsetSpec.latest()) para los high watermarks.

  4. Calcula el lag por partición y lo expone al frontend via la API interna de Backstage.

Plugin frontend: entity-driven UI

El frontend se monta condicionalmente en las entity pages:

  1. Cuando un usuario navega a un componente en Developer Hub, el router verifica si la entity tiene la anotación kafka.apache.org/consumer-groups.

  2. Si la anotación existe, el card EntityKafkaContent se renderiza en el mountPoint configurado (entity.page.overview/cards).

  3. El card hace un fetch al backend del plugin, que devuelve los datos del consumer group en JSON.

  4. El frontend muestra una tabla con: topic, partición, offset actual, high watermark, lag, y el estado del consumidor (active/idle).

Software Templates: auto-anotación

Los Software Templates de Developer Hub pueden inyectar automáticamente la anotación Kafka en el catalog-info.yaml generado, asegurando que cada nuevo componente que consume de Kafka tenga visibilidad de lag desde el primer commit.

Streams for Apache Kafka Console

Además del plugin de Developer Hub, la Streams Console (StreamsHub) proporciona una UI dedicada para gestión de Kafka:

Features de la Streams Console

Feature Descripción

Cluster Overview

Vista general del cluster: brokers, particiones, replication factor

Topics

Listar topics, ver mensajes en tiempo real, buscar por offset

Consumer Groups

Ver estado de consumer groups, lag por partición, reset de offsets

Kafka Nodes

Estado de cada broker, métricas de disco y red

Kafka Connect (Tech Preview)

Gestión de connectors directamente desde la consola

Verificación

Para verificar que el plugin de Kafka funciona:

  1. Accede a Developer Hub: https://backstage-developer-hub-developer-hub.apps.cluster-l9nhj.dynamic.redhatworkshops.io

  2. Navega a un componente que tenga la anotación kafka.apache.org/consumer-groups

  3. En la pestaña Overview, deberías ver el card de Kafka con offsets y lag

  4. Clickea en el consumer group para ver el detalle por partición

Documentación Oficial