日志说明
流计算 Oceanus 的日志分为启动日志和运行日志两部分。
启动日志:在流计算集群中提交用户的 SQL 或 JAR 等作业时,首先会进入生成 Flink 运行图的启动过程。这个过程中产生的日志,称为启动日志。当作业启动失败时,流计算控制台的作业名后会出现一个黄色小三角⚠️,可鼠标悬停至其上方查看说明;也可以通过日志面板,阅读报错的上下文日志。
运行日志:当作业运行图生成完毕,则会启动 JobManager 和 TaskManager,并将运行图提交到集群进行执行,作业进入“运行中”状态。之后 JobManager 和各个 TaskManager 打印的日志称为运行日志。
常见异常关键字
作业失败原因
通过
from RUNNING to FAILED
关键字可以搜索到作业崩溃的直接原因,异常栈中的 Caused by
后即为故障信息。例如,下图显示了报错的位置位于用户自定义的快照方法:
是否发生过 OOM
如果出现了
java.lang.OutOfMemoryError
关键字,说明很可能出现了 OOM 堆内存溢出。需尝试增加作业的算子并行度(CU)数和优化内存占用,避免内存泄露。例如,下图是一个 OOM 的日志范例:
JVM 退出等致命错误
进程退出码通常出现在以下关键字后,可以辅助定位 JVM 或 Akka 等发生了致命错误被强制关闭等的错误。
exit code OR shutting down JVM OR fatal OR kill OR killing
例如,下图表示 ZooKeeper 连接丢失的致命错误,命中了
fatal
关键字:
快照失败(超时)
如果出现了下列关键字,说明快照失败,请根据原因进行进一步的分析。例如,
declined
表示由于资源未到位(作业并未处于运行中)、个别算子已进入 FINISHED
状态、快照超时、快照文件不完整等原因,造成了快照的失败。Checkpoint was declinedCheckpoint was canceledCheckpoint expiredjob has failedTask has failedFailure to finalize
超时/失败
下列关键字代表外部系统访问(例如 MySQL、Kafka 等)可能因为网络原因出现了超时。结果中可能会有很多配置相关的内容,请自行甄别是否是报错。例如,Kafka 的
Timeout expired while fetching topic metadata
表示初始化超时;MySQL 的 Communications link failure
表示连接中断(可能是很长时间没有数据流入,造成客户端超时)。java.util.concurrent.TimeoutExceptiontimeoutfailuretimed outfailed
异常
异常
Exception
关键字代表可能发生了异常。例如,下图某个 Flink 作业的启动日志,它因为异常而没有提交成功。搜索 Exception
关键字,可以从各级异常栈的 Caused by
中看到具体的异常:注意
由于日志关键字分词的原因,并非所有含有 Exception 的日志都能搜到。
WARN 和 ERROR 日志
一般情况下也可以搜索所有含
WARN
和 ERROR
关键字的日志,可能有较多结果,请注意筛选过滤有价值的信息。例如,下图的 WARN 和 ERROR 报错是正常的,并不代表有错误出现:
可忽略的报错信息
流计算 Oceanus 日志中有一些常见的报错,不会影响作业运行,在查找问题时可以直接跳过:
WARN org.apache.flink.core.plugin.PluginConfig - The plugins directory [plugins] does not exist.WARN org.apache.flink.shaded.zookeeper3.org.apache.zookeeper.ClientCnxn - SASL configuration failed: javax.security.auth.login.LoginException: No JAAS configuration section named 'Client' was found in specified JAAS configuration file: '/tmp/jaas-00000000.conf'. Will continue connection to Zookeeper server without SASL authentication, if Zookeeper server allows it.ERROR org.apache.flink.shaded.curator4.org.apache.curator.ConnectionState - Authentication failedWARN org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicableWARN org.apache.flink.kubernetes.utils.KubernetesInitializerUtils - Ship directory /data/workspace/.../shipFiles is not exists. Ignoring it.WARN org.apache.flink.configuration.GlobalConfiguration - Error while trying to split key and value in configuration file /opt/flink-1.11.0/conf/flink-conf.yamlWARN org.apache.flink.shaded.curator4.org.apache.curator.utils.ZKPaths - The version of ZooKeeper being used doesn't support Container nodes. CreateMode.PERSISTENT will be used instead.WARNING: Unable to load JDK7 types (annotations, java.nio.file.Path): no Java7 support added