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

Tza*_*tev 7 logging sentry apache-flink

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

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

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

Til*_*ann 2

从 Flink 的角度来看,用户代码错误是预料之中的,因此 Flink 不会将它们记录到WARNERRORWARNERROR保留用于指示 Flink 本身出现问题的日志语句。

捕获任务失败的最佳选择是 grep for <TASK_NAME> switched from RUNNING to FAILED。这样,每当<TASK_NAME>失败时您都会收到通知。但请注意,不能保证日志记录语句永远不会更改。