Flink 日志记录获取作业名称或作业 ID



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

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

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

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

  1. 将群集设置为使用登录

  2. 通过实现ch.qos.logback.classic.selector.ContextSelector创建自定义登录上下文选择器

  3. 将 jar 放在每个 Flink 任务管理器类路径中

  4. 修改每个 flink 任务管理器上的FLINK_ENV_JAVA_OPTS_JM以指定您的上下文选择器。 例如:

    export FLINK_ENV_JAVA_OPTS_JM="-Dlogback.ContextSelector=your.custom.context.Selector">

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

  6. 测试它。

这是我们创建的 ContextSelector 的要点。如果您有任何改进请求,我很乐意提出改进请求!!自定义 Flink 登录上下文选择器

这将为每个 JobID 创建一个记录器上下文,然后使用 JobID 向 JobManager 发出请求以取回 JobName。然后,它通过":"拆分JobName,并将头部组件放入LoggerContext 属性"flink_job_name"中,并将尾组件放入LoggerContext 属性"flink_job_version"。

相关内容

  • 没有找到相关文章

最新更新