本文介绍如何通过Logtail完整正则模式采集ECS日志,并对日志进行查询与分析。

前提条件

  • 已有可用的ECS。更多信息,请参见云服务器ECS快速入门
  • ECS服务器持续产生日志。
    重要 Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取文件

背景信息

本示例中待采集的日志路径为/var/log/nginx/access.log,日志样例为127.0.0.1 - - [10/Jun/2022:12:36:49 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"。针对该日志样例,本文介绍通过完整正则模式采集的操作步骤。

步骤一:开通日志服务

  1. 登录日志服务控制台
  2. 根据页面提示,开通日志服务。
    日志服务的计费说明,请参见计费概述

步骤二:创建Project和Logstore

  1. 创建Project。
    1. 在Project列表区域,单击创建Project
    2. 创建Project面板中,按照如下说明配置参数,其他参数均可保持默认配置。更多信息,请参见创建Project
      参数描述
      Project名称Project的名称,全局唯一。创建Project成功后,无法更改其名称。
      所属地域Project的数据中心。请选择目标ECS实例所在地域,即可使用阿里云内网采集日志,加快采集速度。

      创建Project后,无法修改其所属地域,且日志服务不支持跨地域迁移Project。

    3. 单击确定
  2. 创建Logstore。
    创建Project完成后,系统会提示您创建一个Logstore。

    创建Logstore面板中,按照如下说明配置参数,其他参数均可保持默认配置。更多信息,请参见创建Logstore

    参数描述
    Logstore名称Logstore的名称,在其所属Project内必须唯一。创建Logstore成功后,无法更改其名称。
    Shard数目日志服务使用Shard读写数据。

    一个Shard提供的写入能力为5 MB/s、500次/s,读取能力为10 MB/s、100次/s。如果一个Shard就能满足您的业务需求,您可配置Shard数目1

    自动分裂Shard开启自动分裂功能后,如果您写入的数据量超过已有Shard服务能力,日志服务会自动根据数据量增加Shard数量。

    如果您确保配置的Shard数量已满足业务需求,可关闭自动分裂Shard开关。

步骤三:采集日志

创建Logstore成功后,系统将提示您接入数据。

重要 默认情况下,一个日志文件只能匹配一个Logtail配置。如果文件中的日志需要被采集多份,请参见如何实现文件中的日志被采集多份
  1. 创建成功对话框中,单击确定
  2. 快速数据接入对话框的自建开源/商业软件页签下,单击正则-文本日志
  3. 安装Logtail。
    1. ECS机器页签中,选中目标ECS实例,单击创建
      具体操作,请参见安装Logtail(ECS实例)
    2. 确认执行状态成功后,单击确认安装完毕
  4. 创建IP地址类型的机器组,单击下一步
    按照如下说明配置参数,其他参数均可保持默认配置。更多信息,请参见创建IP地址机器组
    参数说明
    名称机器组的名称,在其所属Project内必须唯一。创建机器组成功后,无法更改其名称。
    IP地址ECS服务器IP地址。多个IP地址之间请用换行符分隔。
    重要 请勿将Windows机器和Linux机器添加到同一机器组中。
  5. 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步
    重要 创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
  6. 创建Logtail采集配置,单击下一步
    按照如下说明配置参数,其他参数均可保持默认配置。更多信息,请参见使用完整正则模式采集日志
    参数描述
    配置名称Logtail采集配置的名称,在其所属Project内必须唯一。创建Logtail采集配置成功后,无法修改其名称。
    日志路径根据日志在服务器上的位置,设置日志目录和文件名称。
    • 如果是Linux系统中的日志路径,必须以正斜线(/)开头,例如/apsara/nuwa/.../app.Log
    • 如果是Windows系统中的日志路径,必须以盘符开头,例如C:\Program Files\Intel\...\*.Log
    目录名和文件名支持完整名称和通配符模式,文件名规则请参见Wildcard matching。日志文件查找模式为多层目录匹配,即指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。例如:
    • /apsara/nuwa/**/*.log表示/apsara/nuwa目录(包含该目录的递归子目录)中后缀名为.log的文件。
    • /var/logs/app_*/**/*.log表示/var/logs目录下所有符合app_*格式的目录(包含该目录的递归子目录)中后缀名为.log的文件。
    • /var/log/nginx/**/access*表示/var/log/nginx目录(包含该目录的递归子目录)中以access开头的文件。
    说明 日志路径通配符只支持星号(*)和半角问号(?)。
    • 星号(*)表示匹配多个任意字符。
    • 半角问号(?)表示匹配单个任意字符。
    日志样例根据实际场景输入一条日志样例。例如:
    127.0.0.1 - - [10/Jun/2022:12:36:49 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
    提取字段打开提取字段开关后,可通过正则表达式将日志内容提取为键值对。
    正则打开提取字段开关后,需要配置。
    • 自动生成正则表达式

      日志样例文本框中,选中需要提取的日志内容,单击生成正则,自动生成正则表达式。例如(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)([^"]+)"\s(\d+)\s(\d+)[^-]+([^"]+)"\s"([^"]+).*

    • 手动输入正则表达式

      单击手动输入正则表达式,手动配置正则表达式。配置完成后,单击验证即可验证您输入的正则表达式是否可以解析、提取日志样例。更多信息,请参见如何调试正则表达式

    日志抽取内容打开提取字段开关后,需要配置。

    通过正则表达式将日志内容提取为Value后,您需要为每个Value设置对应的Key。

    参数配置完成后,单击下一步,日志服务开始采集日志。
    说明
  7. 预览数据及创建索引,然后单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引
    重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。

步骤四:查询与分析日志

配置索引后,您可以查询与分析日志。

  1. 在配置向导的结束步骤中,单击查询日志
    您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。更多信息,请参见查询和分析日志
  2. 在目标Logstore的查询与分析页面,输入查询与分析语句,选择时间范围。
    例如:执行如下查询与分析语句统计各个状态码对应的请求数量,并通过表格展示查询与分析结果。
    • 查询与分析语句
      * | SELECT status, COUNT(status) AS total GROUP BY status

      关于查询与分析语句的更多信息,请参见查询概述分析概述

    • 查询与分析结果

      日志服务支持通过统计图表展示查询与分析结果。更多信息,请参见可视化概述

      统计结果

常见问题

  • 仅创建Project和Logstore,会产生费用吗?

    当您在创建Logstore时,日志服务默认预留Shard资源,因此可能产生活跃Shard租用费用。更多信息,请参见为什么会产生活跃Shard租用费用?

  • 采集日志失败,如何排查?

    使用Logtail采集日志失败,可能是因为Logtail心跳异常、采集错误、Logtail采集配置错误等原因。如何排查,请参见Logtail采集日志失败的排查思路

  • 在Logstore查询与分析页面,可以查询日志但无法分析日志,如何解决?

    如果您要分析日志,需要为日志字段配置字段索引并开启统计功能。更多信息,请参见创建索引