Как настроить кластер Flink для входа в систему через веб-интерфейс?
У меня настроен кластер Flink, и я хотел бы иметь возможность просматривать журналы и стандартный вывод для JobManager и TaskManager. Когда я захожу в веб-интерфейс, я вижу следующие сообщения об ошибках на соответствующих вкладках:
JobManager:
Logs
(log file unavailable)
Stdout
(stdout file unavailable)
TaskManager
Logs
Fetching TaskManager log failed.
Stdout
Fetching TaskManager log failed.
Я вижу, что есть некоторые параметры конфигурации, которые могут быть установлены, особенно taskmanager.log.path
, job manager.web.log.path
а также env.log.dir
, Тем не менее, нет упоминания о том, должны ли они быть сетевыми доступными путями или они являются локальными путями и т. Д.
Что мне нужно сделать, чтобы просматривать журналы диспетчера задач и диспетчера заданий?
1 ответ
Я обнаружил, что если вы работаете с официальным док-контейнером Flink ( https://hub.docker.com/_/flink), он по умолчанию выкладывает все на консоль (то есть, как я полагаю, лучшая практика докера), Таким образом, конфиг log4j, который кажется уместным для настройки /opt/flink/conf/log4j-console.properties
, Это касается как jobamanger(s)
а также taskmanager(s)
,
Таким образом, я настроил этот файл, чтобы он не просто плевался в консоль, но и в файл (в моем случае это был скользящий файл):
log4j-console.properties:
log4j.rootLogger=INFO, console, file
# Uncomment this if you want to _only_ change Flink's logging
#log4j.logger.org.apache.flink=INFO
# The following lines keep the log level of common libraries/connectors on
# log level INFO. The root logger does not override this. You have to manually
# change the log levels here.
log4j.logger.akka=INFO
log4j.logger.org.apache.kafka=INFO
log4j.logger.org.apache.hadoop=INFO
log4j.logger.org.apache.zookeeper=INFO
# Log all infos to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
# Log all INFOs to the given rolling file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.file=/opt/flink/log/output.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
# Suppress the irrelevant (wrong) warnings from the Netty channel handler
log4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline=ERROR, console, file
Вышеизложенное в сочетании с flink-conf.yaml
ниже удалось отобразить журнал менеджера заданий на вкладке "Журнал" менеджера заданий и отобразить журнал таксмена на вкладке "Журнал" диспетчера задач.
Flink-conf.yaml:
# General configuration
taskmanager.data.port: 6121
taskmanager.rpc.port: 6122
jobmanager.rpc.port: 6123
blob.server.port: 6124
query.server.port: 6125
jobmanager.rpc.address: <your location>
jobmanager.heap.size: 1024m
taskmanager.heap.size: 1024m
taskmanager.numberOfTaskSlots: 1
web.log.path: /opt/flink/log/output.log
taskmanager.log.path: /opt/flink/log/output.log
ПРИМЕЧАНИЕ: я нахожусь на Flink 1.8.0, работаю в небольшом кластере в Kubernetes (т.е. отдельные модули для менеджера заданий и менеджеров задач)
Веб-интерфейс JobManager запрашивает журналы TaskManager удаленно, поэтому они не обязательно должны находиться в общей файловой системе. С другой стороны, журналы JobManager, по-видимому, считываются из локальной файловой системы.
При использовании по умолчанию log4j.properties все файлы журнала записываются по пути, указанному log.file
имущество. С помощью сценария запуска Flink по умолчанию каталог в этом свойстве управляется env.log.dir
опция конфигурации (через FLINK_LOG_DIR
переменная).
taskmanager.log.path
появляется только для использования, когда JobManager запрашивает журналы из TaskManager. Тем не менее, есть запасной вариант для log.file
если он не установлен, это должно привести к тому, что правильный каталог будет автоматически использоваться. Так же, jobmanager.web.log.path
даже не привыкать вообще, когда log.file
установлено.
Поэтому я не думаю, taskmanager.log.path
а также jobmanager.web.log.path
имеют отношение к производственному развертыванию и не могут сказать, как они должны использоваться (см. мой соответствующий отчет об ошибке Flink). Вы можете установить env.log.dir
контролировать местоположение файла журнала, который в принципе должен также работать с веб-интерфейсом.