Apache flink 正在获取作业名称或作业id的Flink日志记录

Apache flink 正在获取作业名称或作业id的Flink日志记录,apache-flink,Apache Flink,我正在尝试设置logback.xml,以便它包含与日志相关联的JobName或JobId 我还没有找到一种方法来做到这一点。可能吗 最终,我想要实现的是能够将日志发送到ElasticSearch,并将作业名或Id标记在消息上,以便我能够按作业进行筛选。我们最终完成了以下操作,这让人感觉超级黑客,我们希望能够找到更好的方法 将群集设置为使用logback 通过实现ch.qos.logback.classic.selector.ContextSelector创建自定义logback ContextS

我正在尝试设置logback.xml,以便它包含与日志相关联的JobName或JobId

我还没有找到一种方法来做到这一点。可能吗


最终,我想要实现的是能够将日志发送到ElasticSearch,并将作业名或Id标记在消息上,以便我能够按作业进行筛选。

我们最终完成了以下操作,这让人感觉超级黑客,我们希望能够找到更好的方法

  • 将群集设置为使用logback
  • 通过实现ch.qos.logback.classic.selector.ContextSelector创建自定义logback ContextSelector

  • 将jar放在每个Flink TaskManager类路径中

  • 在每个FLINK任务管理器上修改FLINK_ENV_JAVA_OPTS_JM以指定上下文选择器。例如:

    export FLINK_ENV_JAVA_OPTS_JM=“-Dlogback.ContextSelector=your.custom.context.Selector”

  • 重新启动所有任务管理器

  • 测试一下

  • 下面是我们创建的ContextSelector的要点。如果您有任何改进,我很乐意提出请求


    这将为每个JobID创建一个LoggerContext,然后使用JobID向TaskManager发出请求以获取JobName。然后,它将JobName按“:”拆分,并将头部组件放入LoggerContext属性“flink_job_name”,将尾部组件放入LoggerContext属性“flink_job_version”。

    您是将其作为单独的JAR添加还是作为flink代码库的一部分构建的。ContextSelector是一个单独的JAR,在JVM启动时指定。看见