如何在Flink作业执行期间记录未捕获的异常

时间:2018-05-01 21:00:25

标签: logging apache-flink sentry

我正在尝试将Sentry附加到我们的Flink群集来跟踪作业执行情况。 Sentry充当记录器,捕获消息并将其发送到中央服务器。默认情况下,它会捕获所有级别为WARN或更高级别的消息。

要让Sentry捕获所有问题,每当操作员引发未捕获的异常时,我都需要编写WARN或ERROR日志消息。如果重新启动策略失败,则执行环境中的execute()方法将抛出最终异常,我可以正确记录该异常。但我还没有找到一种方法来记录导致作业重启的异常。 Flink将它们记录为INFO消息,但这使得难以从其余消息中进行过滤。

在Flink作业中处理未捕获的异常的适当方法是什么?

1 个答案:

答案 0 :(得分:1)

从Flink的角度来看,可能会出现用户代码错误,因此Flink不会将它们记录在WARNERROR上。 WARNERROR保留用于记录表明Flink本身有问题的语句。

捕获任务失败的最佳选择是为<TASK_NAME> switched from RUNNING to FAILED使用grep。这样,只要<TASK_NAME>失败,就会通知您。但是请注意,不能保证日志记录语句永远不会更改。