全部产品
Search
文档中心

日志服务:导入OSS数据

更新时间:Aug 30, 2024

您可以将OSS Bucket中的日志文件,通过数据导入方式导入到日志服务,实现日志的查询分析、加工等操作。目前日志服务只支持导入5 GB以内的OSS文件,压缩文件大小按照压缩后的大小计算。

费用说明

日志服务不针对导入功能收取费用,但导入功能需要访问OSS API,会产生OSS的流量费用和请求费用。相关计费项的定价详情,请参见OSS定价。导入OSS数据时,每天产生的OSS费用的计算公式如下:

image..png

费用参数说明

字段

说明

N

每天导入的文件个数。

T

每天导入的总数据量,单位:GB。

p_read

每GB数据的流量费用。

  • 同地域导入时,会产生OSS的内网流出流量,该流量免费。

  • 跨地域导入时,会产生OSS的外网流出流量。

p_put

每万次的Put类型请求费用。

日志服务使用ListObjects接口获取目标Bucket中的文件列表。该接口在OSS侧按照Put类型请求收费。另外,该接口每次最多返回1000条数据,因此如果您有100万个新增文件,需要进行1,000,000/1000=1000次请求。

p_get

每万次的GET类型请求费用。

M

新文件检查周期,单位:分钟。

您可以在创建数据导入配置时,设置检查新文件周期参数。

前提条件

  • 已上传日志文件到OSS Bucket中。具体操作,请参见控制台上传文件

  • 已创建Project和Logstore。具体操作,请参见创建项目Project创建Logstore

  • 已经完成云资源访问授权,即已授权日志服务使用AliyunLogImportOSSRole角色访问您的OSS资源。

  • 账号具有oss:ListBuckets权限,用于访问oss bucket资源。具体操作,请参见为RAM用户授权自定义的权限策略

    如果您使用的是RAM用户,还需授予RAM用户PassRole权限,授权策略如下所示。具体操作,请参见创建自定义权限策略为RAM用户授权

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram:*:*:role/aliyunlogimportossrole"
        },
        {
          "Effect": "Allow",
          "Action": "oss:GetBucketWebsite",
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": "oss:ListBuckets",
          "Resource": "*"
        }
      ],
      "Version": "1"
    }    

创建数据导入配置

重要

针对更新过的OSS文件,数据导入任务会重新进行全量导入。即之前已导入过的文件,又追加了部分内容,那么这个文件中数据将再次被全部导入。

  1. 登录日志服务控制台

  2. 接入数据区域的数据导入页签中,选择OSS-数据导入

  3. 选择目标Project和Logstore,单击下一步
  4. 设置导入配置。

    1. 导入配置步骤中,设置如下参数。

      参数设置

      参数

      说明

      任务名称

      SLS任务的唯一名称。

      显示名称

      任务显示名称。

      任务描述

      导入任务的描述。

      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单行JSONORCParquet阿里云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元数据索引管理功能。具体操作,请参见数据索引

      当选择数据格式CSV跨行文本日志时,需额外设置相关参数,具体说明如下表所示。

      CSV

      参数

      说明

      分隔符

      设置日志的分隔符,默认值为半角逗号(,)。

      引号

      CSV字符串所使用的引号字符。

      转义符

      配置日志的转义符,默认值为反斜线(\)。

      日志最大跨行数

      当一条日志跨多行时,需要指定最大行数,默认值为1。

      首行作为字段名称

      打开首行作为字段名称开关后,将使用CSV文件中的首行作为字段名称。例如提取下图中的首行为日志字段的名称。首行

      自定义字段列表

      关闭首行作为字段名称开关后,请根据需求自定义日志字段名称,多个字段名称之间用半角逗号(,)隔开。

      跳过行数

      指定跳过的日志行数。例如设置为1,则表示从CSV文件中的第2行开始采集日志。

      跨文本日志

      参数

      说明

      正则匹配位置

      设置正则表达式匹配的位置,具体说明如下:

      • 首行正则:使用正则表达式匹配一条日志的行首,未匹配部分为该条日志的一部分,直到达到最大行数。

      • 尾行正则:使用正则表达式匹配一条日志的行尾,未匹配部分为下一条日志的一部分,直到达到最大行数。

      正则表达式

      根据日志内容,设置正确的正则表达式。

      调整正则表达式的方法,请参见如何调试正则表达式

      最大行数

      一条日志最大的行数。

    2. 单击预览,预览导入结果。

    3. 确认无误后,单击下一步

  5. 创建索引预览数据,然后单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引

    重要

    如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。

  6. 单击查询日志,进入查询和分析页面,确认是否成功导入OSS数据。

    等待1分钟左右,如果有目标OSS数据导入,则说明导入成功。

相关操作

创建导入配置成功后,您可以在控制台中查看已创建的导入配置及生成的统计报表。

  1. Project列表区域,单击目标Project。

  2. 日志存储 > 日志库中,选择目标日志库下的数据接入 > 数据导入,单击配置名称。

  3. 查看任务

    导入配置概览页面,查看导入配置的基本信息和统计报表。

    导入任务概览

    修改任务

    单击修改配置,修改导入配置的相关信息。更多信息,请参见设置导入配置

    删除任务

    单击删除配置,删除该导入配置。

    警告

    删除后不可恢复,请谨慎操作。

    停止任务

    单击停止,停止该导入任务。

常见问题

问题

可能原因

解决方法

预览时显示无数据。

OSS Bucket中没有文件、文件中没有数据或者没有符合过滤条件的文件。

  • 检查Bucket下是否存在不为空的文件(CSV文件是否仅包含headers行)。如果不存在有数据的文件,则可以等待文件有数据后,再进行导入。

  • 调整文件路径前缀过滤文件路径正则过滤文件修改时间过滤等配置项。

数据中存在乱码。

数据格式、压缩格式或编码格式配置不符合预期。

确认OSS文件的真实格式,然后调整数据格式压缩格式编码格式等配置项。

如果需要修复已有的乱码数据,请创建新的Logstore和导入配置。

日志服务中显示的数据时间和数据本身的时间不一致。

设置导入配置时,没有指定日志时间字段或者设置时间格式、时区有误。

设置指定的日志时间字段以及正确的时间格式和时区。更多信息,请参见创建数据导入配置

导入数据后,无法查询和分析数据。

  • 数据不在查询范围内。

  • 未配置索引。

  • 索引未生效。

  • 检查待查询数据的时间是否在查询时间范围内。

    如果不在查询范围内,请调整查询范围并重新查询。

  • 检查是否已为Logstore设置索引。

    如果未设置,请先设置索引。具体操作,请参见创建索引重建索引

  • 如果已设置索引,且数据处理流量观测仪表盘中显示的成功导入数据量符合预期,则可能原因是索引未生效,请尝试重建索引。具体操作,请参见重建索引

导入的数据条目数量少于预期。

部分文件存在单行数据大小超过3 MB的数据,导致数据在导入过程被丢弃。更多信息,请参见采集限制

写入数据到OSS文件时,避免单行数据大小超过3 MB。

文件数量和总数据量都很大,但导入数据的速度不及预期(正常情况下,可达到80 MB/s)。

Logstore Shard数量过少。更多信息,请参见性能限制

Logstore Shard数量较少时,请尝试增加Shard的个数(10个及以上),并观察延迟情况。具体操作,请参见管理Shard

创建导入配置时,无法选择OSS Bucket。

未完成AliyunLogImportOSSRole角色授权。

参见文本中的前提条件完成授权。

部分文件没有导入。

过滤条件设置存在问题或者存在单个文件大小超出5 GB的文件。更多信息,请参见采集限制

  • 检查待导入的文件是否符合过滤条件。如果不符合,请修改过滤条件。

  • 确认待导入文件的大小都小于5 GB。

    如果超过5 GB,请缩小单个文件的大小。

归档文件没有导入。

未打开导入归档文件开关。更多信息,请参见采集限制

  • 方法1:修改导入配置,打开导入归档文件开关。

  • 方法2:重建一个导入配置,打开导入归档文件开关。

多行文本日志解析错误。

首行正则表达式或尾行正则表达式设置错误。

检查首行正则表达式或尾行正则表达式的正确性。

新文件导入延迟大。

存量文件太多(即符合文件路径前缀过滤的文件数量太多) 且导入配置中没有打开使用OSS元数据索引开关。

如果符合文件路径前缀过滤条件文件数量太多(超过100万),需要在导入配置中打开使用OSS元数据索引开关。否则,发现新文件的效率非常低。

错误处理机制

错误项

说明

读取文件失败

读文件时,如果遇到文件不完整的错误(例如由网络异常、文件损坏等导致),导入任务会自动重试,重试3次后仍然读取失败,将跳过该文件。

重试间隔和检查新文件周期一致。如果检查新文件周期为永不检查,则重试周期为5分钟。

压缩格式解析错误

解压文件时,如果遇到文件压缩格式无效的错误,导入任务将直接跳过该文件。

数据格式解析错误

  • 解析二进制格式(ORC、Parquet)的数据失败时,导入任务将直接跳过该文件。

  • 解析其他格式的数据失败时,导入任务会将原始文本内容存放到日志的content字段中。

OSS Bucket不存在

导入任务会定期重试,即重建Bucket后,导入任务会自动恢复导入。

权限错误

从OSS Bucket读取数据或者写数据到日志服务Logstore存在权限错误时,导入任务会定期重试,即修复权限问题后,导入任务会自动恢复。

遇到权限错误时,导入任务不会跳过任何文件,因此修复权限问题后,导入任务会自动将Bucket中还未被处理的文件中的数据导入到日志服务Logstore中。

OSS投递接口

操作

接口

创建OSS导入任务

CreateOSSIngestion

修改OSS导入任务

UpdateOSSIngestion

获取OSS导入任务

GetOSSIngestion

删除OSS导入任务

DeleteOSSIngestion

启动OSS导入任务

StartOSSIngestion

停止OSS导入任务

StopOSSIngestion