J'ai un fichier kafka connect qui doit être exécuté en tant que conteneur docker. J'ai besoin de capturer tous mes journaux de connexion sur un fichier journal dans le conteneur (de préférence dans un répertoire/fichier -/etc/kafka/kafka-connect-logs) qui peut ensuite être déplacé vers localhost (sur lequel tourne le moteur docker) en utilisant volumes dans le docker. Lorsque je modifie mon connect-log4j.properties
pour ajouter dans un fichier journal, je vois qu'aucun fichier journal n'est créé. Si j'essaie la même chose sans docker et que je lance le kafka connect sur une VM linux locale en changeant connect-log4j.properties
pour écrire des logs dans un fichier journal, cela fonctionne parfaitement mais pas avec docker. Toutes les suggestions seront très utiles.Les journaux Kafka-connect dans le conteneur docker
Docker File
FROM confluent/platform
COPY Test.jar /usr/local/bin/
COPY kafka-connect-docker.sh /usr/local/bin/
COPY connect-distributed.properties /usr/local/bin/
COPY connect-log4j.properties /etc/kafka/connect-log4j.properties
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-yq", "curl"]
RUN ["chown", "-R", "confluent:confluent", "/usr/local/bin/kafka-connect-docker.sh", "/usr/local/bin/connect-distributed.properties", "/usr/local/bin/Test.jar"]
RUN ["chmod", "+x", "/usr/local/bin/kafka-connect-docker.sh", "/usr/local/bin/connect-distributed.properties", "/usr/local/bin/Test.jar"]
RUN ["chown", "-R", "confluent:confluent", "/etc/kafka/connect-log4j.properties"]
RUN ["chmod", "777", "/usr/local/bin/kafka-connect-docker.sh", "/etc/kafka/connect-log4j.properties"]
EXPOSE 8083
CMD [ "/usr/local/bin/kafka-connect-docker.sh" ]
connect-log4j.properties
# Root logger option
log4j.rootLogger = INFO, FILE
# Direct log messages to stdout
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=/etc/kafka/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%
log4j.logger.org.apache.zookeeper=ERROR
log4j.logger.org.I0Itec.zkclient=ERROR
kafka-connect-docker.sh
#!/bin/bash
export CLASSPATH=/usr/local/bin/Test.jar
exec /usr/bin/connect-distributed /usr/local/bin/connect-distributed.properties
Il fonctionne très bien lorsque j'utilise la valeur par défaut connect-log4j.properties
(ajoute les journaux à la console), mais je suis incapable de créer un fichier journal dans docker. En outre, même processus sans docker fonctionne bien (crée un fichier journal) dans la machine virtuelle locale.
Avez-vous essayé de déclarer le volume tout de suite et de placer le fichier directement dans le dossier du volume? Quelque chose comme VOLUME/etc/kafka dans votre fichier docker, puis sur docker exécuter la cartographie de ce volume? – hecko84
Merci! Cela a aidé :-) –
J'ai placé le résultat comme réponse aussi, voir ci-dessous – hecko84