日志服务提供Logtail JSON模式快速采集JSON日志。采集到日志后,您可以进行多维度分析、加工、投递等操作。本文介绍如何通过日志服务控制台创建JSON模式的Logtail配置采集日志。

前提条件

  • 已创建Project和Logstore。更多信息,请参见创建Project创建Logstore
  • 安装Logtail的服务器需具备访问远端服务器80端口和443端口的能力。

背景信息

JSON日志建构于两种结构,包括Object类型(键值对的集合)和Array类型(值的有序列表)。

Logtail JSON模式支持解析Object类型的JSON日志,自动提取Object首层的键作为字段名称,Object首层的值作为字段值。但不支持解析Array类型的JSON日志。您可以使用完整正则模式或者极简模式采集Array类型的JSON日志。具体操作,请参见使用极简模式采集日志使用完整正则模式采集日志

JSON日志示例如下所示:
{"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.220", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "18204"}, "time": "05/Jan/2020:13:30:28"}
{"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.210", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "10204"}, "time": "05/Jan/2020:13:30:29"}

操作步骤

  1. 登录日志服务控制台
  2. 接入数据区域,选择JSON-文本日志
  3. 选择目标Project和Logstore,单击下一步
  4. 创建机器组。
    • 如果您已有可用的机器组,请单击使用现有机器组
    • 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
      1. ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击立即执行

        更多信息,请参见安装Logtail(ECS实例)

        说明 如果是自建集群、其他云厂商服务器,需要手动安装Logtail。更多信息,请参见安装Logtail(Linux系统)安装Logtail(Windows系统)
      2. 安装完成后,单击确认安装完毕
      3. 创建机器组页面,输入名称,单击下一步

        日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见创建IP地址机器组创建用户自定义标识机器组

  5. 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步
    注意 如果创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
  6. 创建Logtail配置,单击下一步
    参数 描述
    配置名称 Logtail配置的名称,在其所属Project内必须唯一。创建Logtail配置成功后,无法修改其名称。

    您也可以单击导入其他配置,导入其他已创建的Logtail配置。

    日志路径 指定日志的目录和文件名。
    日志的目录和文件名支持完整名称和通配符两种模式,文件名规则请参见Wildcard matching。日志文件查找模式为多层目录匹配,即指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。例如:
    • /apsara/nuwa/**/*.log表示/apsara/nuwa目录(包含该目录的递归子目录)中后缀名为.log的文件。
    • /var/logs/app_*/*.log表示/var/logs目录下所有符合app_*模式的目录(包含该目录的递归子目录)中包含.log的文件。
    说明
    • 默认情况下,一个文件只能被一个Logtail配置采集。
    • 如果一个文件需要被采集多份,建议为文件所在的目录创建软链接。例如,/home/log/nginx/log/log.log文件需要被采集两份,则执行如下命令创建该文件所在目录的软链接。在一个Logtail配置中使用原路径,在另一个Logtail配置中使用软链接路径。
      ln -s /home/log/nginx/log /home/log/nginx/link_log
    • 目录通配符只支持星号(*)和半角问号(?)。
    设置采集黑名单 打开设置采集黑名单开关后,可进行黑名单配置,即可在采集时忽略指定的目录或文件。支持完整匹配和通配符模式匹配目录和文件名。例如:
    • 选择按目录路径,配置路径为/home/admin/dir1,则表示在采集时忽略/home/admin/dir1目录下的所有内容。
    • 选择按目录路径,配置路径为/home/admin/dir*,则表示在采集时忽略/home/admin/目录下所有以dir开头的子目录下的内容。
    • 选择按目录路径,配置路径为/home/admin/*/dir,则表示在采集时忽略/home/admin/目录下二级目录名为dir的子目录下的所有内容。

      例如/home/admin/a/dir目录下的内容被忽略,/home/admin/a/b/dir目录下的内容被采集。

    • 选择按文件路径,配置路径为/home/admin/private*.log,则表示在采集时忽略/home/admin/目录下所有以private开头,以.log结尾的文件。
    • 选择按文件路径,配置路径为/home/admin/private*/*_inner.log,则表示在采集时忽略/home/admin/目录下以private开头的目录内,以_inner.log结尾的文件。

      例如/home/admin/private/app_inner.log文件被忽略,/home/admin/private/app.log文件被采集。

    说明
    • 目录通配符只支持星号(*)和半角问号(?)。
    • 如果您在配置日志路径时使用了通配符,但又需要过滤掉其中部分路径时,需在黑名单中填写对应的完整路径来保证过滤生效。

      例如您配置日志路径/home/admin/app*/log/*.log,但要过滤/home/admin/app1*目录下的所有子目录,则需配置黑名单,即选择按目录路径,配置路径为/home/admin/app1*/** 。如果配置为/home/admin/app1*,则黑名单不会生效。

    • 匹配黑名单过程存在计算开销,建议黑名单条目数在10条内。
    是否为Docker文件 如果是Docker文件,可打开是否为Docker文件开关,直接配置内部路径与容器Tag。Logtail会自动监测容器创建和销毁,并根据Tag进行过滤采集指定容器的日志。关于容器文本日志采集,请参见通过DaemonSet-控制台方式采集Kubernetes文件
    模式 默认为JSON模式,可修改为其它模式。
    使用系统时间 配置日志时间,具体说明如下:
    • 打开使用系统时间开关,则日志时间为采集日志时,Logtail所在主机的系统时间。
    • 关闭使用系统时间开关,则您需要配置指定时间字段Key名称为JSON日志中的时间字段,并根据时间字段的值配置时间转换格式。时间格式详情请参见时间格式

      例如JSON日志中的时间信息为 "time": "05/May/2016:13:30:28",则您可以配置指定时间字段Key名称time时间转换格式%d/%b/%Y:%H:%M:%S

    丢弃解析失败日志 是否丢弃解析失败的日志,具体说明如下:
    • 打开丢弃解析失败日志开关,解析失败的日志不上传到日志服务。
    • 关闭丢弃解析失败日志开关,日志解析失败时上传原始日志到日志服务。
    最大监控目录深度 设置日志目录被监控的最大深度。最大深度范围:0~1000,0代表只监控本层目录。
    请根据您的需求选择高级配置。如果没有特殊需求,建议保持默认配置。
    参数 描述
    启用插件处理 打开启用插件处理开关后,您可以设置Logtail插件处理日志。更多信息,请参见概述
    说明 打开启用插件处理开关后,上传原始日志、时区属性、丢弃解析失败日志、过滤器配置、接受部分字段(分隔符模式)等功能不可用。
    上传原始日志 打开上传原始日志开关后,原始日志将作为__raw__字段的值与解析过的日志一起上传到日志服务。
    Topic生成方式 设置Topic生成方式。更多信息,请参见日志主题
    • 空-不生成Topic:默认选项,表示设置Topic为空字符串,在查询日志时不需要输入Topic即可查询。
    • 机器组Topic属性:设置为机器组Topic属性,用于明确区分不同服务器产生的日志数据。
    • 文件路径正则:设置为文件路径正则,则需要设置自定义正则,用正则表达式从路径里提取一部分内容作为Topic。用于区分不同用户或实例产生的日志数据。
    日志文件编码 设置日志文件编码格式,取值为utf8、gbk。
    时区属性 采集日志时,日志时间的时区属性。
    • 机器时区:默认为机器所在时区。
    • 自定义时区:手动选择时区。
    超时属性 如果一个日志文件在指定时间内没有任何更新,则认为该文件已超时。
    • 永不超时:持续监控所有日志文件,永不超时。
    • 30分钟超时:如果日志文件在30分钟内没有更新,则认为已超时,并不再监控该文件。

      选择30分钟超时时,还需设置最大超时目录深度,范围为1~3。

    过滤器配置 只采集完全符合过滤器条件的日志。例如:
    • 满足条件即采集,例如设置KeylevelRegexWARNING|ERROR,表示只采集level为WARNING或ERROR类型的日志。
    • 过滤不符合条件的日志。更多信息,请参见Regular-Expressions.info
      • 设置KeylevelRegex^(?!.*(INFO|DEBUG)).*,表示不采集level中包含INFO或DEBUG类型的日志。
      • 设置KeylevelRegex^(?!(INFO|DEBUG)$).*,表示不采集level等于INFO或DEBUG类型的日志。
      • 设置KeyurlRegex.*^(?!.*(healthcheck)).*,表示不采集URL中带有healthcheck的日志。例如Key为url,Value为/inner/healthcheck/jiankong.html的日志将不会被采集。

    更多信息,请参见regex-exclude-wordregex-exclude-pattern

    首次采集大小 通过首次采集大小,可以确认首次采集的新文件的内容位置。日志服务默认首次采集大小为1024 KB,即:
    • 首次采集时,如果文件小于1024 KB,则从文件内容起始位置开始采集。
    • 首次采集时,如果文件大于1024 KB,则从距离文件末尾1024 KB的位置开始采集。

    您可以通过此处修改首次采集大小,取值范围为0~10485760,单位为KB。

    扩展配置 Logtail的扩展配置。更多信息,请参见advanced参数说明

    例如您想要通过当前Logtail配置去采集其他Logtail配置已匹配的文件,并指定聚合发送周期,可添加如下配置。

    {
      "force_multiconfig": true,
      "batch_send_interval": 3
    }
    单击下一步即表示完成Logtail配置,日志服务开始采集日志。
    说明
    • Logtail配置生效时间最长需要3分钟,请耐心等待。
    • 如果遇到Logtail采集报错,请参见诊断采集错误
  7. 预览数据及设置索引,单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见配置索引
    说明
    • 如果您要查询分析日志,那么全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引为准。
    • 索引类型为long、double时,大小写敏感和分词符属性无效。