本文档主要介绍了如何基于SLS+OSS+DLA构建海量、低成本的日志分析方案。

方案介绍

对于数据分析人员、开发人员或者运维人员而言,日志数据对分析和诊断问题以及了解系统活动等有着非常重要的作用,日志都是其工作过程中必不可缺的数据来源。为了节约成本,通常情况下日志会被设定一定的保存时间,此类日志称之为热日志。这种做法短期内可以满足使用需求,但从长期来看,大量的历史日志被丢弃,在需要分析和查询数据时,会出现数据丢失。

阿里云从用户角度出发,研发了一整套小而精的历史日志数据分析方案。利用阿里云日志服务(Log Service,SLS)来投递日志和查询热日志,利用阿里云对象存储服务(Object Storage Service,OSS)来持久存储由SLS服务实时投递的日志,利用阿里云云原生数据湖分析(Data Lake Analytics,DLA)来分析存储在OSS的日志。方案架构如下图所示:方案架构图
该方案具有以下优势:
  • SLS是针对实时数据的一站式服务,在阿里集团经历大量大数据场景锤炼而成。提供日志类数据采集、智能查询分析、消费与投递等功能,全面提升海量日志处理和分析能力。SLS强大的日志投递能力,能够从源头对接各种类型的日志格式,并且稳定地将日志投递到OSS。
  • OSS低廉的存储成本,能够让您的日志文件存储任意长的时间。搭载SLS构建低成本冷热分离的存储方案。
  • DLA提供强大的分析能力,可以对投递到OSS上的日志按年、月、日进行多维度的分区,提高日志的命中率,降低扫描量,从而以极低的成本、极高的性能来完成大数据量历史日志分析。

实施步骤

假设您的应用服务部署在ECS集群上,该集群每台机器上的应用服务都会产生日志数据,并通过SLS投递日志数据到OSS。通过DLA的元信息发现功能,自动发现SLS投递到OSS的日志数据,然后进行数据查询和分析。本文档将以此为例,为您介绍详细的实施步骤。

在开始实施步骤之前,您需要先完成以下准备工作:
  • 准备一台ECS服务器,用于产生实时日志数据。或者准备一台已有日志数据的ECS。
  • 开通日志服务、创建Project和Logstore。具体请参见日志服务快速入门。假设Project为sls-oss-dla-test,Logstore为sls-dla-logstore
  • 已经在OSS服务上创建存储空间。具体请参见创建存储空间
  • 开通数据湖分析服务
  1. 在ECS服务器上面模拟服务日志的产生。
    1. 在ECS服务器的目录/root/sls-crawler/下定义一个脚本文件gen-log.sh来产生日志数据。
      cat gen-log.sh 
      #/bin/sh
       filename=abc_`date +%s`.txt
      echo ${filename}
      for i in  {1..1000000}
         do
              datatimestr=`date '+%Y-%m-%d %H:%M:%S'`
              echo  "111111|1|100000000|0.1|0.0000000000001|true|aabb|valueadd" >>/root/sls-crawler/full_type_logs/${filename}
         done
      说明 在实际业务场景中,用户自己的应用服务器会产生日志文件,或者直接通过SLS的API写入日志文件。
    2. 执行命令crontab -e并在该命令中添加如下配置来运行脚本文件gen-log.sh,生成日志数据到/root/sls-crawler/full_type_logs/目录。
      * * * * * sleep 10; sh /root/sls-crawler/gen-log.sh
  2. 通过Logtail采集ECS服务器上的日志数据到Logstore。具体操作请参见使用分隔符模式采集日志
    其中,ECS实例选择步骤一中的ECS实例iZbp1d6epzrizknw2xq****,日志路径选择步骤一中的日志路径/root/sls-crawler/full_type_logs/
    配置完成后,请您耐心等待几分钟,您就可以在SLS的OSS投递管理页面,查看日志数据是否成功接入。OSS投递管理
  3. 将日志服务数据投递到OSS
    其中,OSS Bucket配置为dla-crawler-hangzhou,OSS Prefix配置为sls-daily/shipper-json-full-type13
    等待SLS的投递任务启动成功后,您可以在对应的OSS目录查看投递的日志数据。
  4. 通过DLA的元信息发现功能,自动发现SLS投递到OSS的日志数据,然后进行数据查询和分析。具体操作请参见SLS的OSS投递数据源
    其中,数据源配置选择手动选择,logstore选择sls-dla-logstore