Flink记录获取工作名称或工作ID

时间:2017-06-15 17:06:24

标签: apache-flink

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

我还没有找到办法做到这一点。有可能吗?

最终我想要实现的是能够将日志发送到ElasticSearch并将JobName或Id标记为消息,以便我能够按作业进行过滤。

1 个答案:

答案 0 :(得分:0)

我们最终做了以下,感觉超级hacky ,我们希望我们能找到更好的方法。

  1. 设置群集以使用logback
  2. 通过实现 ch.qos.logback.classic.selector.ContextSelector

  3. 创建自定义logback ContextSelector
  4. 将jar放入每个Flink TaskManagers类路径

  5. 修改每个flink TaskManage上的 FLINK_ENV_JAVA_OPTS_JM ,以指定您的上下文选择器。例如:

      

    导出FLINK_ENV_JAVA_OPTS_JM =" -Dlogback.ContextSelector = your.custom.context.Selector"

  6. 重新启动所有任务管理器

  7. 测试它。

  8. 这是我们创建的ContextSelector的要点。如果你有任何改进,我会喜欢提出改进请求! Custom Flink Logback ContextSelector

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