背景
数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件,包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)和二进制数据(如图像、音频、视频)。数据湖的优势是能够在低存储成本下很好满足长期存储、查询、分析、读取,并在此基础上做数据发现,BI,ML等。我们发现日志数据在使用场景和需求上有着新的趋势:一是日益严格的合规要求,日志数据要求留存时间变长,二是日志的价值被进一步挖掘,机器学习、离线分析、数据发现等。总结来看,日志的生命周期中,除了基本的OLAP能力做DevOps,还有用于数据洞察,合规审计,规则告警,和DevOps下一形态AIOps等。
日志数据的入湖有一般以下的方式,一种是通过计算引擎(Spark/Flink等)如Spark Streaming,Connect生态比较丰富,但往往需要对计算引擎“专精”的人员进行运维和开发,而且运行的成本也不低;如果不依赖计算引擎完全自行开发,一是很难针对不同的云产品、存档日志和各种自建开源日志平台进行统一的收集方式,各种日志源Connect的方式不同,存储时不同的格式、不同的压缩类型,都会导致开发成本快速增加,而脱离计算引擎也很难保证稳定性和数据的不丢不错。
SLS日志入湖解决方案
这里介绍下SLS的解决方案日志服务(SLS)是云原生观测分析平台,为Log/Metric/Trace等数据提供大规模、低成本、实时平台化服务。一站式提供数据采集、加工、分析、告警可视化与投递功能,全面提升研发、运维、运营和安全等场景数字化能力。SLS集成了数据投递到OSS中的功能,Serverless的方式助力日志数据入湖,支持丰富的日志数据源,一站式的分析查询,多种投递格式,压缩类型,无需运维;提供详细的任务监控,而且可配置投递量波动,投递失败条数等报警,可实时触达用户。
目前可以在OSS控制台入口即可快速完成日志入湖的链路:支持 Log/Metric/Trace 数据实时采集、加工、投递功能,帮助您把散落在各个地方的日志数据统一采集后投递到 OSS 实现数据湖构建,在投递过程中提供了对数据加工、构建列存格式、设置压缩等功能支持。
数据入湖后用户可以基于OSS丰富的数据湖生态构建处理和分析的管线,如DLF、DLA、自建开源等,数据流动起来可以创造更大的价值!
目前有两个选择,一种是SLS现有数据投递OSS,适合已有SLS项目的用户, 另一种是数据采集并投递OSS,可完成数据采集、处理、投递SLS整个过程,适合同时有对云服务或自建日志有收集和中心化管理查询的用户。
下面我会通过实践的方式完成日志数据的收集,加工,投递入湖的功能。
路径一:SLS现有数据投递OSS
选择投递的源
- 点击SLS现有数据投递OSS按钮
- 选择现有的SLS的project和logstore
- 选择投递OSS
进行数据加工(可选)
如果对日志数据有下面的使用需求,可以选择对日志进行数据加工后再投递:
- 数据过滤:用户场景中无需对logstore中所有数据都转储,选择使用数据加工丢弃掉无需存储的日志数据
- 数据规整:logstore中的日志并不像nginx访问日志等标准日志一样字段存在统一规范,可通过数据加工规整字段,统一schema投递后更方便进行分析
- 数据富化:用户通过连接一些外表(MySQL, CSV, OSS内数据等)对日志内容进行富化,比如日志中只有uid等信息,可以通过join用户表补充一些额外信息,分析师无需在分析数据、创建报表时再引入外部依赖
- 数据脱敏:现在越来越重视对于隐私的保护,用户需要对于使用数据湖进行BI,ML等功能的使用方进行脱敏,如手机号只显示前三位和后两位,或对其他敏感信息进行md5 hash脱敏
下方是一个简单的数据过滤的例子,场景中要将OSS的访问日志进行投递,在投递前对数据进行一定的过滤,只保留GetObject方法的日志以后续统计一些热点文件
点击加工后投递,跳转到对应logstore的数据加工界面
添加下面的数据加工语句
e_keep(e_search("operation=GetObject"))
此DSL的含义为仅保留operation字段为"GetObject"的日志。点击预览,能看到10条数据预览加工后有3条operation=GetObject的日志被保留下来,通过数据加工过滤后可以减少后续投递和OSS存储费用。
之后选择保存数据加工,填写存储的目标logstore,创建成功后点击确认。
确认后即可前往投递OSS
投递
OSS投递功能如下
目前已经有部分region上线了新版的投递功能并持续迭代中,具体的区别可参考OSS投递新旧版区别
我们可以使用预览数据,对logstore中的日志数据进行预览,方便确定投递的格式和配置
更详细的配置说明可以参考:数据投递概述
路径二:数据采集并投递OSS
点击数据采集并投递OSS,跳转至接入数据页面,支持丰富的接入场景,包含阿里云的云产品、丰富的SDK、自建日志和OSS等多渠道导入等。接入数据更多的说明可以参考:数据采集概述。
模拟接入
可以通过模拟接入快速测试投递入湖功能是否符合预期,包含下面种类的模拟日志
以OSS访问日志(模拟)为例,点击OSS访问日志 - 云产品 模拟,选择将要导入的project和logstore
选择时间范围,数据量,日志字段等配置,点击开始导入
开始导入后进入模拟任务,在任务完成后,点击投递OSS或者加工后投递OSS
自建开源接入
自建开源方式接入以nginx日志导入为例,需进行以下几步
- 配置project,logstore
- 创建和配置机器组(机器组安装了日志采集的工具logtail)
- Logtail配置:配置日志的采集路径格式
- 查询分析配置:配置索引等信息
配置结束后投递即可
(加工后)投递OSS
同上一部分配置
查看投递任务
配置完成后会跳到任务的详情页,在这里可以看到任务的投递量,投递速度,延迟,错误日志,投递结果等任务详情
计费方式
数据加工与数据投递都是Serverless,弹性扩容,无需运维,按日志量付费。日志的导入和存储等具体付费标准参考:计费项
结语
SLS提供了开箱即用的OSS数据投递入湖功能,之后也会持续迭代,希望能够帮助用户使用SLS与OSS数据湖生态,发掘日志价值,助力业务发展。