Как настроить кластер 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 контролировать местоположение файла журнала, который в принципе должен также работать с веб-интерфейсом.

Другие вопросы по тегам