¿Cómo utilizar la imagen de Docker del exportador de Kafka?
Estoy intentando usar el Exportador de Kafka empacado por Bitnami, https://github.com/bitnami/bitnami-docker-kafka-exporter, junto con la imagen de Bitnami para Kafka, https://github.com/bitnami/bitnami-docker-kafka. Estoy intentando ejecutar el siguiente docker-compose.yml
:
version: '2'
networks:
app-tier:
driver: bridge
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
environment:
- 'ALLOW_ANONYMOUS_LOGIN=yes'
networks:
- app-tier
kafka:
image: 'bitnami/kafka:latest'
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
networks:
- app-tier
kafka-exporter:
image: bitnami/kafka-exporter:latest
ports:
- "9308:9308"
command:
- --kafka.server=kafka:9092
Sin embargo, si ejecuto esto con docker-compose up
, obtengo el siguiente error:
bitnami-docker-kafka-kafka-exporter-1 | F0103 17:44:12.545739 1 kafka-exporter.go:865] Error Init Kafka Client: kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
He intentado usar la respuesta a https://stackoverflow.com/questions/37366857/how-to-pass-arguments-to-entrypoint-in-docker-compose-yml para especificar un command
para el servicio kafka-exporter
que – asumiendo que el entrypoint
está definido en forma de ejecución – debería agregar banderas adicionales a la invocación del binario del Exportador de Docker. Sin embargo, parece que ni el valor de kafka:9092
es correcto para el valor de la bandera kafka.server
, ni la bandera está siendo reconocida, o tal vez hay algún tipo de condición de carrera donde el exportador falla y se detiene antes de que Kafka esté funcionando correctamente. ¿Alguna idea de cómo hacer que este ejemplo funcione?
davy.ai
El mensaje de error sugiere que el Exportador de Kafka no puede conectarse a los brokers de Kafka. Esto podría ser debido a diversas razones, como una configuración incorrecta, problemas de red o que Kafka aún no esté completamente activo.
Una cosa a verificar es si los brokers de Kafka son realmente accesibles desde el contenedor del Exportador de Kafka. Puede hacer esto ejecutando
docker-compose exec kafka-exporter bash
para ingresar al contenedor y luego intentar hacer ping a los brokers de Kafka usandoping kafka
.Si puede hacer ping a los brokers de Kafka, entonces el problema podría estar en la configuración del Exportador de Kafka. La bandera
--kafka.server=kafka:9092
en la seccióncommand
del archivodocker-compose.yml
parece ser correcta, asumiendo quekafka
es el nombre de host del contenedor del broker de Kafka.Un par de otras cosas que puede intentar son:
restart
) del contenedor del Exportador de Kafka arestart: always
. Esto asegurará que el contenedor siga intentando iniciar incluso si falla inicialmente.restart: on-failure:5
u otro mecanismo similar de retraso. Esto dará a Kafka más tiempo para iniciar completamente antes de que el Exportador de Kafka intente conectarse a él.