我正在尝试将Sentry附加到我们的Flink群集来跟踪作业执行情况。 Sentry充当记录器,捕获消息并将其发送到中央服务器。默认情况下,它会捕获所有级别为WARN或更高级别的消息。
要让Sentry捕获所有问题,每当操作员引发未捕获的异常时,我都需要编写WARN或ERROR日志消息。如果重新启动策略失败,则执行环境中的execute()
方法将抛出最终异常,我可以正确记录该异常。但我还没有找到一种方法来记录导致作业重启的异常。 Flink将它们记录为INFO消息,但这使得难以从其余消息中进行过滤。
在Flink作业中处理未捕获的异常的适当方法是什么?
答案 0 :(得分:1)
从Flink的角度来看,可能会出现用户代码错误,因此Flink不会将它们记录在WARN
或ERROR
上。 WARN
和ERROR
保留用于记录表明Flink本身有问题的语句。
捕获任务失败的最佳选择是为<TASK_NAME> switched from RUNNING to FAILED
使用grep。这样,只要<TASK_NAME>
失败,就会通知您。但是请注意,不能保证日志记录语句永远不会更改。