Apache DolphinScheduler 3.2.0 版本已经呼之欲出,8 月 中下旬,这个大版本就要和用户见面了。为了让大家提前了解到此版本更新的主要内容,我们已经制作了几期视频和内容做了大致介绍,包括《重磅预告!Apache DolphinScheduler 3.2.0 新功能“剧透”》《3.2.0 版本预告!Apache DolphinScheduler API 增强相关功能》

今天,我们来介绍另一个用户比较关心的新功能——Remote logging(远程日志),看看是否能帮助你的工作变得更简单吧!

https://www.bilibili.com/video/BV1U14y1q74N/?spm_id_from=333.999.0.0

今天由为大家介绍 Apache DolphinScheduler 3.2.0 的一个新特性,叫做 Remote logging。我们会从三个部分来说明这个功能,第一,它是什么,解决什么问题;第二,它如何配置;第三,我们怎么去使用它?

远程日志是什么?解决什么问题?

在没有这个功能之前,我们的任务日志流向是这样子的,任务运行完的时候,Worker 会将日志写到 Worker 本地,当用户需要去查看任务日志的时候,我们会发送请求这个 Worker 的日志,然后展示给用户。当一些意外情况出现,导致这个 Worker 的日志不存在,或者是这个 Worker 不存在的时候,用户在页面上就看不了日志了。

但是有了 Remote Logging,这个问题就能得到比较好的解决。它整体的流程如下所示:

我们只是增加了这条线的部分以及下面 Remote Logging 的部分,当我们的 Worker 将日志写到本地的时候,会有个异步线程将写到本地的 log 同步到 Remote Logging。当一些意外情况发生导致日志丢失,但用户想要看日志详细信息的时候,我们会有个请求将日志从远端拉到本地,然后本地返回。

为什么我们要设置这样一个动作呢?这样做首先能保证接口的一致性,就是日志全部都是从 Worker 发送给 API Server,然后去读取的。其次是尽量减少我们远端的带宽,只有当本地日志缺失的时候,我们才会去下载远端的日志。

如何配置?

接下来我们快速说明一下如何配置 Remote Logging。在我们的发版文件里会有关于如何启动和配置的简单介绍。

首先,我们要修改 Common Properties 文件,将这个 remote.logging.enable 设置存储并且设置为你想要存储的远端存储介质。目前我们支持了 OSS、S3 和 GCS。

其次就是一些第三方远端存储的配置,比如 AccessKey、Secret 以及对应的 bucket 和 region 等。

如何使用?

我们回到页面,体验一下 Remote Logging 是如何使用,以及我们是如何判断它是生效的。

我们这里有一个简单的工作流,它只有两个任务,分别打印了 1 和 2 这两个信息。手动触发这个工作流并观察日志,看看它是否正常地被写到远端。

当我们触发了工作流运行,并且工作流是运行成功的,我们将日志写到远端。当任务被运行成功的时候,我们就开始写日志了。

这一行就能很明显地看到,日志被写成功之后,会同时有一个异步线程将日志同步到远端的存储。

因为我们这里使用的是 S3,它将本地的路径的日志同步了一份到远端。回到 S3 的页面,可以看到 log 已经存在了。

接着我们模拟一下当本地 Worker 的日志缺失的时候,我们如何去读日志。 我们手动将这个日志文件删除,可以看到这个文件夹下面有两个日志文件,分别是 3 和 4。将这两个文件都删除,可以看到这里已经没有对应的日志文件了。

此时,如果是之前的版本,我们已经不能查看最新的 instance 的日志文件了,但是有了 Remote Logging,就会发现本地不存在这个日志,将日志从远端下载到本地给用户查看。

模拟一下,这里我们点击查看任务日志,会发现任务日志已经被显示出来了。再去查看一下本地文件,会发现刚刚不存在的日志已经下载下来了,并且只下载了我们需要的那一个。

接下来看看另一个任务的日志,同样发现是能被显示的,本地的两个日志文件也被下载下来了。查看服务日志,我们发现它已经检测到日志文件不在本地出现,会去远端获取这个日志文件。

这就是 Remote Logging 功能的大致介绍,如果它能解决你的问题,欢迎在 8 月中下旬发布 3.2.0 版本的时候,升级版本来体验一下!

本文由 白鲸开源 提供发布支持!

3.2.0 版本预告!远程日志解决 Worker 故障获取不到日志的问题的更多相关文章

  1. 安装docker17.06.0版本报错和解决方法

    本人在自己电脑的虚拟机里安装docker ce 17.06.0版本的时候报如下错误: [root@manager2 yum.repos.d]# yum install docker-ce-17.06. ...

  2. pip升级到18.0版本过程中报错解决方法

    我这台电脑是windows10系统,一般在cmd命令行界面下执行pip的升级命令:pip install –upgrade pip 安装的时候,会有拒绝访问报错:这个时候应该是权限的问题,于是在win ...

  3. 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决

    一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...

  4. Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决)

    Microsoft.Office.Interop.Excel, Version=12.0.0.0版本高于引用的程序集(已解决) 论坛里的帮助:http://bbs.csdn.net/topics/39 ...

  5. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  6. 解决IDEA2018.1.5或者Android Studio 3.0版本的输入法不跟随光标问题

    问题1:IDEA2018.1.5版本的输入法不跟随光标 解决办法1:修改JDK版本,步骤如下: 1. 使用快捷键ctrl+shift+A,在输入框中输入Switch Boot JDK,如图所示 2.替 ...

  7. Django2.0版本以上与pymsql 不匹配问题以及解决方法

    Django2.0版本以上与pymsql 不匹配问题以及解决方法 Django 2.0 以上 如果使用pymysql0.93,需要一下两步操作: # 1 第一次报错信息: File "D:\ ...

  8. 解决 Electron 5.0 版本出现 require is not defined 的问题

    Electron已经发布了5.0正式版,升级后发现原来能运行的代码报错提示require is not defined 经查相关资料,原来官方在5.0版本修改了nodeIntegration的默认值, ...

  9. 使用mysql5.7版本的mysqldump备份mysql8.0版本的数据库报错解决办法

    使用mysql5.7版本的mysqldump命令执行备份mysql8.0版本的数据库时会报错: mysqldump: Couldn't execute 'SET SQL_QUOTE_SHOW_CREA ...

  10. mysql8.0以后的版本开启远程连接:

    mysql8.0以后的版本开启远程连接: 1 CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; 2 GRANT ALL ON *.* TO 'root'@'%' ...

随机推荐

  1. 短链接口设计&禁用Springboot执行器端点/env的安全性

    短链接口设计 //短链接服务 跳转方式,实现短链接转长链接的请求. @GetMapping("/{code}") public String redirectUrl(@PathVa ...

  2. C# .NET core Avalonia 11.0版本,发布linux和MAC的简单记录

    .net core 7.0+centos 7.0 cetnos目前运行在hyper V虚拟机里 虚拟机部署的注意事项 1 需要配置网络环境, 确保在同一局域网下 如果sftp无法连接 ctrl+shi ...

  3. Wakelocks 框架设计与实现

    Wakelocks 框架是基于Wakeup Source实现的为Android系统上层提供投票机制,以阻止系统进入休眠. 1.功能说明 该模块的支持受宏CONFIG_PM_WAKELOCKS控制.在使 ...

  4. .NET使用CsvHelper快速读取和写入CSV文件

    前言 在日常开发中使用CSV文件进行数据导入和导出.数据交换是非常常见的需求,今天我们来讲讲在.NET中如何使用CsvHelper这个开源库快速实现CSV文件读取和写入. CsvHelper类库介绍 ...

  5. Android 7 默认声音/大小修改

    背景 客户机器默认的开机声音一直很大:客户觉得无法接受,需要改小点. 基于Android 7的代码 前言 一般主要通过系统层来进行修改. 在系统关于音频的有关代码中,定义了两个数组: 注意,这些代码根 ...

  6. 高通mm-camera平台 Camera bring up基本调试思路

    原文:https://www.cnblogs.com/thjfk/p/4086001.html 确定硬件 1.首先对照原理图,检查camera module的pin脚连接是否正确. 2.用示波器量Ca ...

  7. 基于 SQLite 3 的 C 学习:2-高级操作

    基于 SQLite 3 的 C/C++ 学习:2-高级操作与有关函数 背景 基于 SQLite 3 的 C/C++ 学习:开发流程 与 基本函数 中,我们简单介绍了有关 SQLite3 函数的使用. ...

  8. day01小程序快速入门

    这几天正式开始微信小程序的修炼了,就目前而言来看简直就是vue和react的结合体,所以在学小程序前,先把框架熟悉还是挺有用的. 一.简介 1.1与普通网页区别 二.第一个小程序 需要注册小程序开发账 ...

  9. 解决BitBucket仓库较大拉取失败,使用SSH拉取

    HTTPS 拉取 如果使用的是https拉取,可使用以下命令尝试,如果还是失败,可使用 ssh 拉取 git clone --depth=1 xxxx.git --depth=1:拉取最近1次提交记录 ...

  10. pysnmp 获取设备 mib

    snmpwalk 指令获取设备 mib snmpwalk -v 1 -c public ip .1 > ip.mibs pysnmp 获取设备 mib 安装环境 pip3 install pys ...