有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

日志说明

流计算 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 declined
Checkpoint was canceled
Checkpoint expired
job has failed
Task has failed
Failure to finalize

超时/失败

下列关键字代表外部系统访问(例如 MySQL、Kafka 等)可能因为网络原因出现了超时。结果中可能会有很多配置相关的内容,请自行甄别是否是报错。例如,Kafka 的 Timeout expired while fetching topic metadata 表示初始化超时;MySQL 的 Communications link failure 表示连接中断(可能是很长时间没有数据流入,造成客户端超时)。
java.util.concurrent.TimeoutException
timeout
failure
timed out
failed

异常

异常 Exception 关键字代表可能发生了异常。例如,下图某个 Flink 作业的启动日志,它因为异常而没有提交成功。搜索 Exception 关键字,可以从各级异常栈的 Caused by 中看到具体的异常:
注意
由于日志关键字分词的原因,并非所有含有 Exception 的日志都能搜到。




WARN 和 ERROR 日志

一般情况下也可以搜索所有含 WARNERROR 关键字的日志,可能有较多结果,请注意筛选过滤有价值的信息。例如,下图的 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 failed

WARN org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

WARN 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.yaml

WARN 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