背景
在 Flink on yarn 的模式下,taskManager的日志会存储到所在的 DataNode 上,当 Flink 任务发生异常,产生异常日志时,需要第一时间感知任务已经出现异常,避免影响业务。因此需要将Flink任务的日志实时收集起来,任务出现异常日志立刻报警,做的真正意义上的实时报警,而不是等Flink任务掉线了再发出报警。收集任务日志的好处除了任务掉线方便我们通过日志定位问题,还可以支持日志实时报警,搜索,展示等功能的实现。
日志收集方案
在 Flink 1.11 之前,Flink 使用的日志框架是 Log4j配置信息 在flink/conf/log4j.properties 中。配置文件会将 JobManager 和 TaskManager 的日志分别打印在不同的文件中。Flink 1.11.1 版本对 UI 进行了优化,会将JobManager 和 TaskManager 的日志都打印在一个文件里面, 所以我们可以利用 log4j(log4j2) KafkaAppender 把日志直接打到 kafka 里.当任务数据实时写入kafka后,我们就消费kafka中的数据,对日志进行报警处理,搜索展示等功能。
日志格式设置
为了方便统