Назад | Перейти на главную страницу

Расположение файла журнала Kafka

Чтобы прояснить некоторые вещи: я говорю о файле журнала процесса, который содержит сообщения stdout и stderr.

Это мой файл модуля systemd:

[Unit]
Description=Apache Kafka server
Documentation=http://kafka.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
PIDFile=/var/run/kafka.pid
User=kafka
Group=kafka
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:/var/log/kafka"

ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
SyslogIdentifier=kafka

[Install]
WantedBy=multi-user.target

Обратите внимание, что я добавил переменную среды KAFKA_LOG4J_OPTS.

Однако, похоже, это ничего не дает. Это результат, когда я пытаюсь запустить свою службу:

Feb 11 00:55:30 kafka01 kafka[4047]: mkdir: cannot create directory ‘/opt/kafka/bin/../logs’: Permission denied
Feb 11 00:55:30 kafka01 kafka[4047]: OpenJDK 64-Bit Server VM warning: Cannot open file /opt/kafka/bin/../logs/kafkaServer-gc.log due to No such file or directory
Feb 11 00:55:30 kafka01 kafka[4047]: log4j:WARN No appenders could be found for logger (kafka.Kafka$).
Feb 11 00:55:30 kafka01 kafka[4047]: log4j:WARN Please initialize the log4j system properly.

Итак, может, кто-нибудь подскажет мне, как правильно изменить местоположение файла журнала kafka? KAFKA_LOG4J_OPTS не работает, KAFKA_LOG_DIR тоже не работает (= я надеялся, что kafka реализовал это аналогично zookeeper). Документация kafka мне тоже ничего не говорит.

Другим несчастным парням вроде моего нужно изменить LOG_DIR переменная окружения (проверено для Kafka v0.11).

Если вы откроете скрипт kafka-server-start или /usr/bin/zookeeper-server-start, вы увидите внизу, что он вызывает kafka-run-class сценарий. И вы увидите, что он использует LOG_DIR в качестве папки для логов сервиса (не путать с данными тем kafka).

Как упоминалось в предыдущем ответе eddyP23 ... kata-run-class использует LOG_DIR

Однако в нем есть логика использовать скрипт непосредственно в родительской папке, если переменная LOG_DIR не установлена.

Итак, если ваши скрипты находятся в папках kafka / bin, в которых вы запускаете kafka ... тогда журналы будут присутствовать в kafka / log

Возможно, это не совсем ответ на вопросы, но я пришел сюда в поисках того, где kafka хранит журналы приложений, а не данные производителей / потребителей. ИМО, называя эти журналы данных, действительно плохим именем.

Я развернул кластер Kafka на движке GCP Kubernetes, и мне хотелось просмотреть журналы приложения, и вот как я это сделал.

1- Получить стручки

    > kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    kafka-0   1/1     Running   0          32m
    kafka-1   1/1     Running   0          32m
    kafka-2   1/1     Running   0          32m
    zk-0      1/1     Running   0          23h
    zk-1      1/1     Running   0          23h
    zk-2      1/1     Running   0          23h

2- Подключитесь к одному из модулей Kafkas с помощью интерактивной команды

> kubectl exec -it kafka-0 /bin/bash 

3- Echo $, в командной строке типа echo $ и нажмите кнопку табуляции несколько раз ... вы получите список всех определенных переменных среды, выполните поиск $KAFKA_HOME или просто введите

> cd $KAFKA_HOME 

Вы получите:

/opt/kafka$ ls -al 
total 68
drwxr-xr-x 1 kafka kafka  4096 Aug  2 09:37 .
drwxr-xr-x 1 root  root   4096 Jun 26  2017 ..
-rw-r--r-- 1 kafka kafka 28824 Apr 21  2017 LICENSE
-rw-r--r-- 1 kafka kafka   336 Apr 21  2017 NOTICE
drwxr-xr-x 1 kafka kafka  4096 Jun 26  2017 bin
drwxr-xr-x 1 kafka kafka  4096 Jun 26  2017 config
drwxr-xr-x 1 kafka kafka  4096 Jun 26  2017 libs
drwxr-xr-x 2 kafka kafka  4096 Aug  2 09:37 logs
drwxr-xr-x 1 kafka kafka  4096 Jun 26  2017 site-docs

Каталог журналов - это то, что я искал ...