2017-05-25 648 views
0

我有一个Flink集群设置,我希望能够查看JobManager和TaskManagers的日志和标准输出。当我去到Web UI,我看到相应选项卡上的以下错误消息:如何配置Flink群集以通过web ui进行日志记录?

JobManager: 
    Logs 
     (log file unavailable) 
    Stdout 
     (stdout file unavailable) 

TaskManager 
    Logs 
     Fetching TaskManager log failed. 
    Stdout 
     Fetching TaskManager log failed. 

我可以看到有可能被设置,特别是taskmanager.log.pathjob manager.web.log.pathenv.log.dir一些配置参数。但是,没有提及这些应该是网络可访问路径,还是它们是本地路径等。

我需要做什么才能查看任务管理器和作业管理器日志?

+0

您正在使用哪种操作系统? 你是如何部署Flink的?你有没有检查日志文件是否存在于机器上(在'log /'目录下),如果它们存在,如果它们包含任何错误? –

+0

Centos7,通过Kubernetes部署。当我去运行任务管理器的容器运行作业时,我看不到安装Flink的'log'目录(这对我来说是'/ opt/flink/log')。但是,我确实从容器控制台看到Flink日志。从我所看到的Flink看起来运行正常(集群和作业)。 – John

+0

啊,好吧。我认为“问题”是码头图像不记录到日志文件,而是标准输出。 也许你可以采用log4j属性登录到一个文件? –

回答

0

JobManager Web UI远程请求TaskManager日志,因此它们不必驻留在共享文件系统上。另一方面,JobManager日志似乎从本地文件系统读取。

使用默认的log4j.properties,所有日志文件将写入到由log.file属性指定的路径。使用默认的Flink启动脚本,此属性中的目录由env.log.dir配置选项(通过FLINK_LOG_DIR变量)控制。

taskmanager.log.path只有当日志是要求从JobManager通过JobManager使用似乎得到使用。但是,如果未设置,则会回退到log.file,这会导致正确的目录自动使用。同样,jobmanager.web.log.path甚至在设置了log.file时根本不会使用。

因此,我不认为taskmanager.log.pathjobmanager.web.log.path与生产部署相关,并且不能说明它们应该如何使用(请参阅my corresponding Flink bug report)。您可以设置env.log.dir来控制日志文件的位置,原则上该位置也应该与Web UI一起使用。

+0

我想知道在哪里设置env.log.dir。我试图将其设置在flink-conf.yaml:/ opt/flink/log中。但似乎完全被忽略。但是当我添加jobmanager.web.log.path:/opt/flink/log/output.log时,那么webui将至少显示日志。 – buddy

+0

@buddy'env.log.dir'为[不从YAML配置读](https://github.com/apache/flink/blob/release-1.4.0/flink-dist/src/main/flink- bin/bin/config.sh#L279)如果设置了“FLINK_LOG_DIR”环境变量,那么您可以检查在您的环境中是否定义了该变量。取决于你如何开始Flink,它可能会例如在启动脚本中显式设置。 – F30

相关问题