Apache flink 如何配置Flink群集以通过web ui进行日志记录?
我已经设置了Flink集群,我希望能够查看JobManager和TaskManager的日志和标准输出。当我转到web ui时,我在相应的选项卡上看到以下错误消息:Apache flink 如何配置Flink群集以通过web ui进行日志记录?,apache-flink,Apache Flink,我已经设置了Flink集群,我希望能够查看JobManager和TaskManager的日志和标准输出。当我转到web ui时,我在相应的选项卡上看到以下错误消息: JobManager: Logs (log file unavailable) Stdout (stdout file unavailable) TaskManager Logs Fetching TaskManager log failed. Std
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
。但是,没有提到这些路径是网络可访问路径还是本地路径等
要查看任务管理器和作业管理器日志,我需要做什么?作业管理器web UI远程请求任务管理器日志,因此这些日志不必驻留在共享文件系统上。另一方面,JobManager日志似乎是从本地文件系统读取的 使用默认的log4j.properties,所有日志文件都会写入
log.file
属性指定的路径。使用默认的Flink启动脚本,此属性中的目录由env.log.dir
config选项(通过Flink\u log\u dir
变量)控制
taskmanager.log.path
仅在作业管理器从taskmanager请求日志时才显示出来。但是,如果未设置,则会返回到log.file
,这将导致自动使用正确的目录。类似地,当设置了log.file
时,jobmanager.web.log.path
甚至根本不被使用
因此,我不认为
taskmanager.log.path
和jobmanager.web.log.path
与生产部署相关,也不知道应该如何使用它们(请参阅)。您可以设置env.log.dir
来控制日志文件的位置,这原则上也应该与web UI一起工作。我发现,如果您运行的是正式的Flink docker容器(),默认情况下,它会将所有内容发送到控制台(即docker最佳实践,一般来说,我猜)。因此,似乎与调整相关的log4j配置是/opt/flink/conf/log4j console.properties
。这对于求职者和任务经理都是如此
因此,我将该文件配置为不仅向控制台吐出,还向文件吐出(在我的情况下是滚动文件):
log4j-console.properties:
上面的代码与下面的flink-conf.yaml
相结合,能够在jobmanager的日志选项卡中显示jobmanager的日志,并在Taskmanager的日志选项卡中显示taksmanager的日志
flink-conf.yaml:
#一般配置
taskmanager.data.port:6121
taskmanager.rpc.port:6122
jobmanager.rpc.port:6123
blob.server.port:6124
query.server.port:6125
jobmanager.rpc.address:
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的单独pod)您使用的是哪种操作系统?你是怎么部署弗林克的?您是否检查了计算机上是否存在日志文件(在log/
目录中),以及它们是否存在,是否包含任何错误?Centos7,通过Kubernetes部署。当我转到运行运行作业的任务管理器的容器时,我在安装Flink的日志
目录中没有看到任何内容(对我来说是/opt/Flink/log
)。但是,我确实从容器控制台看到了Flink日志。据我所见,Flink运行正常(集群和作业都正常)。啊,好的。我认为“问题”在于docker映像没有记录到日志文件,而是记录到标准输出。也许您也可以采用log4j属性来记录到文件中?当前Docker映像(flink 1.5)也存在同样的问题,您解决了吗?我想知道在哪里设置env.log.dir。我试图在flink-conf.yaml:/opt/flink/log中设置它。但它似乎被完全忽视了。但是当我添加jobmanager.web.log.path:/opt/flink/log/output.log时,webui将至少显示日志。@buddyenv.log.dir
是如果设置了flink\u log\u dir
环境变量,那么您可以检查是否在您的环境中定义了它。根据您启动Flink的确切方式,它可以在启动脚本中显式设置。
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
# 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