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

前提条件

  • 已上传日志文件到OSS Bucket中。具体操作,请参见上传文件
  • 已创建Project和Logstore。具体操作,请参见创建Project创建Logstore
  • 已经完成云资源访问授权,即已授权日志服务使用AliyunLogImportOSSRole角色访问您的OSS资源。
    如果您使用的是RAM用户,还需授予RAM用户PassRole权限,授权策略如下所示。具体操作,请参见创建自定义权限策略为RAM用户授权
    {
       "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram:*:*:role/aliyunlogimportossrole"
        }
      ],
      "Version": "1"
    }        

创建数据导入配置

重要 针对更新过的OSS文件,数据导入任务会重新进行全量导入。即之前已导入过的文件,又追加了部分内容,那么这个文件中数据将再次被全部导入。
  1. 登录日志服务控制台
  2. 接入数据区域的数据导入页签中,选择OSS-数据导入
  3. 选择目标Project和Logstore,单击下一步
  4. 设置导入配置。
    1. 导入配置步骤中,设置如下参数。
      参数 说明
      配置名称 设置配置的名称。
      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:,]+
      说明 针对其他类型的数据格式,如果您只需提取时间字段中的部分内容,也可通过正则表达式提取。
      时间字段格式 指定时间格式,用于解析时间字段的值。例如yyyy-MM-dd HH:mm:ss
      • 支持Java SimpleDateFormat语法的时间格式,时间格式的语法详情请参见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行开始采集日志。
      • 跨行文本日志特有参数
        参数 说明
        正则匹配位置 设置正则表示式匹配的位置,具体说明如下:
        • 首行正则:使用正则表示式匹配一条日志的行首,未匹配部分为该条日志的一部分,直到达到最大行数。
        • 尾行正则:使用正则表示式匹配一条日志的行尾,未匹配部分为下一条日志的一部分,直到达到最大行数。
        正则表达式 根据日志内容,设置正确的正则表达式。

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

        最大行数 一条日志最大的行数。
    2. 单击预览,预览导入结果。
    3. 确认无误后,单击下一步
  5. 预览数据及设置索引,然后单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见配置索引
    说明 如果您要查询分析日志,那么全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引为准。
  6. 单击查询日志,进入查询和分析页面,确认是否成功导入OSS数据。
    等待1分钟左右,如果有目标OSS数据导入,则说明导入成功。

查看导入配置

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

  1. Project列表区域,单击目标Project。
  2. 日志存储 > 日志库中,选择目标日志库下的数据接入 > 数据导入,单击配置名称。
  3. 导入配置概览页面,查看导入配置的基本信息和统计报表。
    导入任务概览

相关操作

在配置的导入配置概览页面,您还可以进行如下操作。

  • 修改配置

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

  • 删除配置
    单击删除配置,删除该导入配置。
    警告 删除后不可恢复,请谨慎操作。
  • 停止任务

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

常见问题

问题 可能原因 解决方法
创建导入配置时无法选择OSS Bucket。 未设置AliyunLogImportOSSRole角色授权。 参见文本中的前提条件完成授权。
无法导入数据。 文件大小超出5 GB。 缩小单个OSS文件的大小。
导入数据后,无法查询分析数据。 未配置索引或者索引未生效。 建议您提前为Logstore建立索引,避免导入数据后索引未生效问题。具体操作,请参见配置索引。如果问题已经发生,您可以尝试重建索引。具体操作,请参见重建索引
无法导入归档文件失败。 未开启解冻归档功能。
  • 方法1:修改导入配置,打开导入归档文件开关。
  • 方法2:重建1个导入配置,打开导入归档文件开关。
设置文件路径正则过滤参数后,未采集到目标数据。
  • 正则表示式设置错误。
  • 文件数量太多,在超时时间内未遍历到匹配的文件。
重新设置文件路径正则过滤参数。如果仍未采集到目标数据,可能是因为文件数量太多,请设置较精准的目录缩小遍历的文件数目。
导入日志成功,但在日志服务控制台上查不到数据。 日志时间超出Logstore数据保存时间,过期数据已被删除。 检查查询时间范围和Logstore数据保存时间。
使用提取的日志时间查询数据,却在该时间未查询到数据。 时间格式设置错误。 检查时间格式为Java SimpleDateFormat标准格式。更多信息,请参见Class SimpleDateFormat
多行文本日志解析错误。 首行正则表达式或尾行正则表达式设置错误。 检查首行正则或尾行正则的正确性。
导入速度突然变慢。
  • 没有足量未导入的数据。
  • OSS文件数量太多,遍历OSS文件占用处理时间。
  1. 确认是否有足量未导入的数据。
  2. 确认是否是OSS文件数量太多,遍历OSS文件占用处理时间。如果是该原因,您可以使用文件路径前缀过滤文件路径正则过滤减少单个导入任务所匹配的文件数量或者在OSS中迁移已导入的文件到其他目录或Bucket。