导入OSS数据
您可以将日志文件上传到OSS Bucket中,然后通过数据导入方式导入到日志服务,实现日志的查询分析、加工等操作。目前日志服务只支持导入5 GB以内的OSS文件,压缩文件大小按照压缩后的大小计算。
前提条件
已上传日志文件到OSS Bucket中。具体操作,请参见控制台上传文件。
已创建Project和Logstore。具体操作,请参见创建Project和创建Logstore。
已经完成云资源访问授权,即已授权日志服务使用AliyunLogImportOSSRole角色访问您的OSS资源。
创建数据导入配置
针对更新过的OSS文件,数据导入任务会重新进行全量导入。即之前已导入过的文件,又追加了部分内容,那么这个文件中数据将再次被全部导入。
登录日志服务控制台。
在接入数据区域的数据导入页签中,选择OSS-数据导入。
- 选择目标Project和Logstore,单击下一步。
设置导入配置。
在导入配置步骤中,设置如下参数。
参数
说明
配置名称
设置配置的名称。
OSS区域
待导入的OSS文件所在Bucket的地域。
如果OSS Bucket和日志服务Project处于同一地域,可节省公网流量且传输速度快。
Bucket
待导入的OSS文件所在的Bucket。
文件路径前缀过滤
通过文件路径前缀过滤OSS文件,用于准确定位待导入的文件。例如待导入的文件都在csv/目录下,则可以指定前缀为csv/。
如果不设置该参数,则遍历整个OSS Bucket。
说明建议设置该参数。当Bucket中的文件数量非常多时,全量遍历将导致数据导入效率非常低。
文件路径正则过滤
通过文件路径的正则表达式过滤OSS文件,用于准确定位待导入的文件。只有文件名(包含文件路径)匹配该正则表达式的文件才会被导入。默认为空,表示不过滤。
例如OSS文件为testdata/csv/bill.csv,您可以设置正则表示式为(testdata/csv/)(.*)。
调整正则表达式的方法,请参见如何调试正则表达式。
文件修改时间过滤
通过文件修改时间过滤OSS文件,用于准确定位待导入的文件。
所有:如果您想导入所有符合条件的文件,请选择该项。
某个时间开始:如果您想导入某个时间点后修改过的文件,请选择该项。
特定时间范围:如果您想导入某个时间范围内修改过的文件,请选择该项。
数据格式
文件的解析格式,如下所示。
CSV:分隔符分割的文本文件,支持指定文件中的首行为字段名称或手动指定字段名称。除字段名称外的每一行都会被解析为日志字段的值。
单行JSON:逐行读取OSS文件,将每一行看做一个JSON对象进行解析。解析后,JSON对象中的各个字段对应为日志中的各个字段。
单行文本日志:将OSS文件中的每一行解析为一条日志。
跨行文本日志:多行模式,支持指定首行或者尾行的正则表达式解析日志。
ORC:ORC文件格式,无需任何配置,自动解析成日志格式。
Parquet:Parquet格式,无需任何配置,自动解析成日志格式。
阿里云OSS访问日志:阿里云OSS访问日志格式。更多信息,请参见日志转存。
阿里云CDN下载日志:阿里云CDN下载日志格式。更多信息,请参见下载日志。
压缩格式
待导入的OSS文件的压缩格式,日志服务根据对应格式进行解压并读取数据。
编码格式
待导入的OSS文件的编码格式。目前仅支持UTF-8和GBK。
检查新文件周期
如果目标OSS文件路径中不断有新文件产生,您可以根据需求设置检查新文件周期。设置后,导入任务会一直在后台运行,自动周期性地发现并读取新文件(后台保证不会将同一个OSS文件中的数据重复写入到日志服务)。
如果目标OSS文件路径中不再产生新文件,请修改为永不检查,即导入任务读取完所有符合条件的文件后,将自动退出。
导入归档文件
如果待导入的OSS文件为普通归档存储或者冷归档存储,则需要解冻后才能读取。开启此功能,则归档文件会自动解冻。
说明解冻普通归档文件需耗时1分钟左右,可能导致第一次预览超时。超时后,请等待一段时间再重试。
解冻冷归档文件需耗时1小时左右,预览超时后,可以选择跳过预览或者等待1小时后再次进行预览。
解冻冷归档文件时,默认采用7天的解冻有效期,以保证有足够的时间导入冷归档文件。
日志时间配置
时间字段
当选择数据格式为CSV、单行JSON、ORC、Parquet、阿里云OSS访问日志或阿里云CDN下载日志时,您需要设置一个时间字段,即设置为OSS文件中代表时间的列名,用于指定导入日志到日志服务时的时间。
提取时间正则
当选择数据格式为单行文本日志或跨行文本日志,您需要使用正则表达式提取日志中的时间。
例如日志样例为127.0.0.1 - - [10/Sep/2018:12:36:49 0800] "GET /index.html HTTP/1.1"时,则您可以设置提取时间正则为[0-9]{0,2}\/[0-9a-zA-Z]+\/[0-9:,]+。
说明针对其他类型的数据格式,如果您只需提取时间字段中的部分内容,也可通过正则表达式提取。
时间字段格式
指定时间格式,用于解析时间字段的值。
支持Java SimpleDateFormat语法的时间格式,例如
yyyy-MM-dd HH:mm:ss
。时间格式的语法详情,请参见Class SimpleDateFormat。常见的时间格式,请参见时间格式。支持epoch格式,包括epoch、epochMillis、epochMicro和epochNano。
时间字段分区
选择时间字段对应的时区。当时间字段格式为epoch类别时,不需要设置时区。
如果解析日志时间需要考虑夏令时,可以选择UTC格式;否则,选择GMT格式。
高级配置
使用OSS元数据索引
当OSS文件数量超过百万时,强烈建议开启,否则发现新文件的效率很低。采用OSS元数据索引后,可以在秒级内发现OSS Bucket中的新文件,实现近实时导入Bucket中新写入文件的数据。
在使用OSS元数据索引前,需先在OSS侧开通OSS元数据索引管理功能。具体操作,请参见数据索引(Data Indexing)。
当选择数据格式为CSV或跨行文本日志时,需额外设置相关参数,具体说明如下表所示。
CSV特有参数
参数
说明
分隔符
设置日志的分隔符,默认值为半角逗号(,)。
引号
CSV字符串所使用的引号字符。
转义符
配置日志的转义符,默认值为反斜线(\)。
日志最大跨行数
当一条日志跨多行时,需要指定最大行数,默认值为1。
首行作为字段名称
打开首行作为字段名称开关后,将使用CSV文件中的首行作为字段名称。例如提取下图中的首行为日志字段的名称。
自定义字段列表
关闭首行作为字段名称开关后,请根据需求自定义日志字段名称,多个字段名称之间用半角逗号(,)隔开。
跳过行数
指定跳过的日志行数。例如设置为1,则表示从CSV文件中的第2行开始采集日志。
跨行文本日志特有参数
参数
说明
正则匹配位置
设置正则表示式匹配的位置,具体说明如下:
首行正则:使用正则表示式匹配一条日志的行首,未匹配部分为该条日志的一部分,直到达到最大行数。
尾行正则:使用正则表示式匹配一条日志的行尾,未匹配部分为下一条日志的一部分,直到达到最大行数。
正则表达式
根据日志内容,设置正确的正则表达式。
调整正则表达式的方法,请参见如何调试正则表达式。
最大行数
一条日志最大的行数。
单击预览,预览导入结果。
确认无误后,单击下一步。
- 预览数据及创建索引,然后单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
单击查询日志,进入查询和分析页面,确认是否成功导入OSS数据。
等待1分钟左右,如果有目标OSS数据导入,则说明导入成功。
查看导入配置
创建导入配置成功后,您可以在控制台中查看已创建的导入配置及生成的统计报表。
在Project列表区域,单击目标Project。
在 中,选择目标日志库下的 ,单击配置名称。
在导入配置概览页面,查看导入配置的基本信息和统计报表。
相关操作
在配置的导入配置概览页面,您还可以进行如下操作。
修改配置
单击修改配置,修改导入配置的相关信息。更多信息,请参见设置导入配置。
删除配置
单击删除配置,删除该导入配置。
警告删除后不可恢复,请谨慎操作。
停止任务
单击停止,停止该导入任务。
费用说明
日志服务不针对导入功能收取收费,但导入功能需要访问OSS API,会产生OSS的流量费用和请求费用。相关计费项的定价详情,请参见OSS定价。导入OSS数据时,每天产生的OSS费用的计算公式如下:
字段 | 说明 |
| 每天导入的文件个数。 |
| 每天导入的总数据量,单位:GB。 |
| 每GB数据的流量费用。
|
| 每万次的Put类型请求费用。 日志服务使用ListObjects接口获取目标Bucket中的文件列表。该接口在OSS侧按照Put类型请求收费。另外,该接口每次最多返回1000条数据,因此如果您有100万个新增文件,需要进行1,000,000/1000=1000次请求。 |
| 每万次的Get类型请求费用。 |
| 新文件检查周期,单位:分钟。 您可以在创建数据导入配置时,设置检查新文件周期参数。 |
案例1(同地域导入)
某企业基于阿里云OSS、SLS等产品开发App A,每天产生10万个文件,平均每个文件大小为100 MB,这些文件保存在杭州地域的标准型OSS Bucket中。该企业要将这些数据导入到杭州地域的SLS Logstore中且设置检查新文件周期为5分钟,则每天产生的OSS费用为0.114592元,具体费用说明如下表所示。
计费项 | 定价 | 使用情况 | 每天费用 |
PUT类型请求 | 0.01元/万次 | 14592次 | 14592次/10000×0.01元/万次=0.014592元 |
GET类型请求 | 0.01元/万次 | 100,000次 | 100,000次/10,000×0.01元/万次=0.1元 |
总费用 | 0.114592元 |
案例2(跨地域,每天导入一次)
某企业基于阿里云OSS、SLS等产品开发App B,该App每天产生10万个文件,平均每个文件大小为100 MB,这些文件保存在上海地域的标准型OSS Bucket中。该企业要将这些数据导入到杭州地域的SLS Logstore中且设置检查新文件周期为1天,则每天产生的OSS费用为2500.1001元,具体费用说明如下表所示。
计费项 | 定价 | 使用情况 | 每天费用 |
PUT类型请求 | 0.01元/万次 | 100次 | 100次/10,000×0.01元/万次=0.0001元 |
GET类型请求 | 0.01元/万次 | 100,000次 | 100,000次/10,000×0.01元/万次=0.1元 |
外网流出流量 | 0.25元/GB | 10000 GB | 10000 GB×0.25 元/GB=2500元 |
总费用 | 2500.1001元 |
案例3(跨地域,每5分钟导入一次)
某企业基于阿里云OSS、SLS等产品开发App C,该App每天产生10万个文件,平均每个文件大小为100 MB,这些文件保存在上海地域的标准型OSS Bucket上。该企业要将这些数据导入到杭州地域的SLS Logstore中且设置检查新文件周期为5分钟,则每天产生的OSS费用为4375.114592元,具体费用说明如下表所示。
计费项 | 定价 | 使用情况 | 每天费用 |
PUT类型请求 | 0.01元/万次 | 14592次/10,000×0.01元/万次=0.014592元 | |
GET类型请求 | 0.01元/万次 | 100,000次 | 100,000次/10,000×0.01元/万次=0.1元 |
外网流出流量 | 00:00-08:00:0.25元/GB 08:00-24:00:0.50元/GB | 10000 GB | 4375元 |
总费用 | 4375.114592元 |
常见问题
问题 | 可能原因 | 解决方法 |
预览时显示无数据。 | OSS Bucket中没有文件、文件中没有数据或者没有符合过滤条件的文件。 |
|
数据中存在乱码。 | 数据格式、压缩格式或编码格式配置不符合预期。 | 确认OSS文件的真实格式,然后调整数据格式、压缩格式或编码格式等配置项。 如果需要修复已有的乱码数据,请创建新的Logstore和导入配置。 |
日志服务中显示的数据时间和数据本身的时间不一致。 | 设置导入配置时,没有指定日志时间字段或者设置时间格式、时区有误。 | 设置指定的日志时间字段以及正确的时间格式和时区。更多信息,请参见创建数据导入配置。 |
导入数据后,无法查询和分析数据。 |
| |
导入的数据条目数量少于预期。 | 部分文件存在单行数据大小超过3 MB的数据,导致数据在导入过程被丢弃。更多信息,请参见采集限制。 | 写入数据到OSS文件时,避免单行数据大小超过3 MB。 |
文件数量和总数据量都很大,但导入数据的速度不及预期(正常情况下,可达到80 MB/s)。 | Logstore Shard数量过少。更多信息,请参见性能限制。 | Logstore Shard数量较少时,请尝试增加Shard的个数(10个及以上),并观察延迟情况。具体操作,请参见管理Shard。 |
创建导入配置时,无法选择OSS Bucket。 | 未完成AliyunLogImportOSSRole角色授权。 | 参见文本中的前提条件完成授权。 |
部分文件没有导入。 | 过滤条件设置存在问题或者存在单个文件大小超出5 GB的文件。更多信息,请参见采集限制。 |
|
归档文件没有导入。 | 未打开导入归档文件开关。更多信息,请参见采集限制。 |
|
多行文本日志解析错误。 | 首行正则表达式或尾行正则表达式设置错误。 | 检查首行正则表达式或尾行正则表达式的正确性。 |
新文件导入延迟大。 | 存量文件太多(即符合文件路径前缀过滤的文件数量太多) 且导入配置中没有打开使用OSS元数据索引开关。 | 如果符合文件路径前缀过滤条件文件数量太多(超过100万),需要在导入配置中打开使用OSS元数据索引开关。否则,发现新文件的效率非常低。 |
错误处理机制
错误项 | 说明 |
读取文件失败 | 读文件时,如果遇到文件不完整的错误(例如由网络异常、文件损坏等导致),导入任务会自动重试,重试3次后仍然读取失败,将跳过该文件。 重试间隔和检查新文件周期一致。如果检查新文件周期为永不检查,则重试周期为5分钟。 |
压缩格式解析错误 | 解压文件时,如果遇到文件压缩格式无效的错误,导入任务将直接跳过该文件。 |
数据格式解析错误 |
|
SLS Logstore不存在 | 导入任务会定期重试,即重建Logstore后,导入任务自动恢复导入。 Logstore不存在时,导入任务不会跳过任何文件,因此重建Logstore后,导入任务会自动将Bucket中还未被处理的文件中的数据导入到日志服务Logstore中。 |
OSS Bucket不存在 | 导入任务会定期重试,即重建Bucket后,导入任务会自动恢复导入。 |
权限错误 | 从OSS Bucket读取数据或者写数据到日志服务Logstore存在权限错误时,导入任务会定期重试,即修复权限问题后,导入任务会自动恢复导入。 遇到权限错误时,导入任务不会跳过任何文件,因此修复权限问题后,导入任务会自动将Bucket中还未被处理的文件中的数据导入到日志服务Logstore中。 |