您可以将日志文件上传到OSS中,并通过数据导入方式将OSS数据导入到日志服务,实现日志数据的查询分析、加工等操作。目前日志服务只支持导入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 Normal类型的文件支持文件粒度的标记,该类型文件的内容被修改后将全部重新导入一次。OSS Appendable类型的文件支持行级粒度标记,可追加内容的增量读取。
  1. 登录日志服务控制台
  2. 接入数据区域,选择OSS-对象存储
  3. 选择日志空间页签中,选择目标Project和Logstore,单击下一步
    您也可以单击立即创建,重新创建Project和Logstore。更多信息,请参见步骤1:创建Project和Logstore
  4. 设置导入配置。
    1. 数据源设置页签中,配置如下参数。
      参数 说明
      配置名称 设置配置的名称。
      OSS Region 待导入的OSS文件所在Bucket的地域。

      如果OSS Bucket和日志服务Project处于同一地域,可节省公网流量且传输速度快。

      Bucket 待导入的OSS文件所在的Bucket。
      文件夹前缀 待导入的OSS文件所在文件夹的前缀,用于准确定位待导入的文件夹。例如待导入的文件都在csv/目录下,则可以指定前缀为csv/

      如果不配置文件夹前缀,则遍历整个OSS Bucket。

      正则过滤 用于过滤文件的正则表达式,只有文件名(包含文件路径)匹配该正则表达式的文件才会被导入。默认为空,表示不过滤。

      例如OSS文件为testdata/csv/bill.csv,您可以配置正则表示式为(testdata/csv/)(.*)

      数据格式 文件的解析格式,如下所示。
      • CSV:分隔符分割的文本文件,支持指定文件中的首行为字段名称或手动指定字段名称。除字段名称外的每一行都会被解析为日志字段的值。
      • JSON:逐行读取OSS文件,将每一行看做一个JSON对象进行解析。解析后,JSON对象中的各个字段对应为日志中的各个字段。
      • Parquet:Parquet格式,无需任何配置,自动解析成日志格式。不支持预览。
      • 单行文本日志:将OSS文件中的每一行解析为一条日志。
      • 跨行文本日志:多行模式,支持指定首行或者尾行的正则表达式解析日志。
      压缩格式 待导入的OSS文件的压缩格式,日志服务根据对应格式进行解压并读取数据。
      编码格式 待导入的OSS文件的编码格式。
      解冻归档文件 如果待导入的OSS文件为归档存储,则需要解冻后才能读取。开启此功能,则归档文件会自动解冻。
    2. 单击预览,查看文件预览结果。
    3. 确认无误后,单击下个配置
    4. 数据格式配置页签中,完成如下配置。
      • 日志时间相关参数说明
        参数 说明
        使用系统时间 配置日志时间,具体说明如下:
        • 打开使用系统时间开关,则解析后的日志时间显示为文件导入时的系统时间。
        • 关闭使用系统时间开关,则需要手动配置时间字段和时间格式。
        说明 推荐使用系统时间。因为日志时间可作为普通字段建立索引,用于日志查询,所以在导入历史数据时,如果数据时间早于当前时间减去Logstore数据保存时间,例如保存7天,那么时间为7天前的日志,无法在控制台上查询。
        提取时间正则 如果您选择的数据格式为单行文本日志、跨行文本日志,则在关闭使用系统时间开关后,您需要使用正则表示式提取日志时间。

        例如日志文件中的日志样例为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:,]+

        时间字段 如果您选择的数据格式为CSV、单行JSON、Parquet,则在关闭使用系统时间开关后,您需要配置一个时间字段。

        例如CSV格式文件如下所示,则您可以配置时间字段time_local

        提取时间字段
        时间格式 如果关闭使用系统时间开关,需要指定一个Java SimpleDateFormat语法的时间格式,用于解析时间字段。时间格式的语法详情请参见Class SimpleDateFormat
        说明 Java SimpleDateFormat不支持Unix时间戳,如果您要使用Unix时间戳,时间格式指定为epoch。
        时区 如果关闭使用系统时间开关,需要指定一个时区,用于解析日志时间的时区。如果提取的日志时间中已有时区信息,则此参数无效。
      • 其他参数说明
        • CSV特有参数
          参数 说明
          分隔符 配置日志的分隔符,默认值为英文逗号(,)。
          Quote 当日志字段内包含分隔符时,需要使用引用符包裹,默认值为双引号(")。
          转义符 配置日志的转义符,默认值为反斜线(\)。
          跨行日志最大行数 当一条日志跨多行时,需要指定最大行数,默认值为1。
          首行作为字段名称 打开首行作为字段名称开关后,将使用CSV文件中的首行作为字段名称。例如提取下图中的首行为日志字段的名称。首行
          自定义字段列表 关闭首行作为字段名称开关后,请根据需求自定义日志字段名称,多个字段名称之间用英文逗号(,)隔开。
          跳过行数 指定跳过的日志行数。例如配置为1,则表示从CSV文件中的第2行开始采集日志。
        • 跨行文本日志特有参数
          参数 说明
          正则匹配位置 配置正则表示式匹配的位置,具体说明如下:
          • 选择首行正则,则使用正则表示式去匹配一条日志的行首,未匹配部分为该条日志的一部分,直到达到最大行数。
          • 选择尾行正则,则使用正则表示式去匹配一条日志的行尾,未匹配部分为下一条日志的一部分,直到达到最大行数。
          正则表达式 根据日志内容,配置正确的正则表达式。更多信息,请参见如何调试正则表达式
          最大行数 一条日志最大的行数。
    5. 设置数据格式完成后,单击测试
    6. 测试成功后,单击下个配置
    7. 调度间隔页签中,配置如下参数。
      参数 说明
      导入间隔 导入OSS文件到日志服务的时间间隔。
      立即执行 开启立即执行,则立即执行一次导入操作。
    8. 配置完成后,单击下一步
  5. 查询分析配置页签中,预览数据及设置索引。
    默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。如何设置字段索引,请参见开启并配置索引
    说明
    • 如果您要查询分析日志,那么全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引为准。
    • 索引类型为long、double时,大小写敏感和分词符属性无效。
  6. 单击下一步,完成导入配置。

查看导入配置

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

  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。

附录

  • 时间格式样例
    日期格式 解析语法 解析后的值(单位:秒)
    2020-05-02 17:30:30 yyyy-MM-dd HH:mm:ss 1588411830
    2020-05-02 17:30:30:123 yyyy-MM-dd HH:mm:ss:SSS 1588411830
    2020-05-02 17:30 yyyy-MM-dd HH:mm 1588411800
    2020-05-02 17 yyyy-MM-dd HH 1588410000
    20-05-02 17:30:30 yy-MM-dd HH:mm:ss 1588411830
    2020-05-02T17:30:30V yyyy-MM-dd'T'HH:mm:ss'V' 1588411830
    Sat May 02 17:30:30 CST 2020 EEE MMM dd HH:mm:ss zzz yyyy 1588411830
  • 时间格式语法
    字符 解析 示例
    G 纪元标记 AD
    y 年份 2001
    M 月份 July、07
    d 日期 10
    h 小时,取值:1~12(AM、PM) 12
    H 一天中的小时,取值:0~23 22
    m 分钟 30
    s 55
    S 毫秒 234
    E 星期 Tuesday
    D 一年中的第几天 360
    F 一个月中第几周的周几 2
    w 一年中的第几周 40
    W 一个月中的第几周 1
    a AM、PM PM
    k 一天中的小时,取值:1~24 24
    k 小时,取值:0~11(AM、PM) 10
    z 时区 Eastern Standard Time
    ' 文字定界符 Delimiter
    " 单引号 "