当前位置: 首页 > 知识库问答 >
问题:

Google cloud dataflow中Beam应用日志

姬泰
2023-03-14

我有一个Beam应用程序,它在本地使用directrunner成功运行,并在本地控制台的代码中提供了所有日志信息。但是当我尝试在google cloud dataflow环境中运行它时,我只在本地控制台上看到这些日志信息,而在google cloud console for dataflow job上没有显示,在StackDriver日志页面中也没有。

下面是我从本地控制台运行数据流运行器代码的操作:

mvn compile exec:java -Dexec.mainClass= ... \
                      -Dexec.args=... "   \ 
                      -Pdataflow-runner

并且所有日志都返回到这个本地控制台。但是当我进入浏览器上的Google云控制台并搜索数据流作业的日志时,我在代码logger.info(msg)中看不到这些日志。我只看到与数据流管道相关的日志。

共有1个答案

东方富
2023-03-14

你是对的,主程序并不在Google云上运行--它只构造管道并将其提交给Dataflow服务。

通过在调试器中逐步执行主程序,您可以很容易地确认这一点:它是一个普通的Java程序,作为执行的一部分发生的事情之一是程序中的pipeline.run()调用,它在下面将管道的步骤打包成对Dataflow服务的HTTP请求,表示“这里有管道的规范,请运行这个”。如果这个调用没有发生,或者如果网络关闭,Dataflow甚至永远不会知道您的程序存在。

Dataflow只是一个响应HTTP请求的服务,它与运行Java程序的不同方式没有什么不同,所以它无法知道程序中没有显式发送给它的任何内容;例如,它无法知道您的日志语句。

 类似资料:
  • 我们期望开发的Web应用程序能够把整个程序运行过程中出现的各种事件一一记录下来,Go语言中提供了一个简易的log包,我们使用该包可以方便的实现日志记录的功能,这些日志都是基于fmt包的打印再结合panic之类的函数来进行一般的打印、抛出错误处理。Go目前标准包只是包含了简单的功能,如果我们想把我们的应用日志保存到文件,然后又能够结合日志实现很多复杂的功能(编写过Java或者C++的读者应该都使用过

  • Beam 是一个简单的工具,允许成员撰写帖子以在一个组织中共享,可以把它想象成一个极轻量级的内部博客,Beam 使用 Next.js 构建,并使用 PlanetScale 数据库进行存储。 其功能包括一个简单的基于 Markdown 的编辑器,带有图像预览和拖放、评论和点赞、搜索、带有黑夜模式支持的响应式布局页面,以及隐藏帖子的管理员角色。 设置 安装依赖项 npm install 创建数据库 创

  • 前言 在进行日志收集的过程中,我们首先想到的是使用Logstash,因为它是ELK stack中的重要成员,但是在测试过程中发现,Logstash是基于JDK的,在没有产生日志的情况单纯启动Logstash就大概要消耗500M内存,在每个Pod中都启动一个日志收集组件的情况下,使用logstash有点浪费系统资源,经人推荐我们选择使用Filebeat替代,经测试单独启动Filebeat容器大约会消

  • DoitPHP所提供的Log类主要用于日志处理。当主配置文件中开启日记记录功能时(日记功能开启,Debug调试功能关闭),若程序运行异常时会在logs目录内生成log日志文件,这样便于监控程序运行。Log类只提供两个类方法write()和show()。 类方法使用说明: 1、write($message, $level = 'Error', $logFileName = null) 日志写入操作

  • Apache Beam 是 Apache 软件基金会越来越多的数据流项目中最新增添的成员,是 Google 在2016年2月份贡献给 Apache 基金会的孵化项目。 这个项目的名称表明了设计:结合了批处理(Batch)模式和数据流(Stream)处理模式。它基于一种统一模式,用于定义和执行数据并行处理管道(pipeline),这些管理随带一套针对特定语言的SDK用于构建管道,以及针对特定运行时环