Logtail客户端可以帮助日志服务用户简单地通过控制台收集ECS云服务器或您本地服务器上的文本日志。

前提条件

  • 设置使用Logtail收集日志前,您需要安装Logtail。Logtail支持Windows和 Linux两大操作系统,安装方法参见LinuxWindows

  • 采集ECS或本地服务器日志,请确保您已开启了80端口和443端口。

使用限制

  • 一个文件只能被一个配置收集。如果需要采集多份,建议以软链接形式实现。例如/home/log/nginx/log下需要采集两份,则其中一个配置原始路径,另外创建一个该文件夹的软链接ln -s /home/log/nginx/log /home/log/nginx/link_log,另一个配置软链接路径即可。

  • Logtail客户端支持的操作系统可参考Logtail 采集简介

  • 经典网络或者VPC下的ECS必须和日志服务Project在相同地域;如果您的日志源数据通过公网传输(类似IDC用法),可以根据地域说明选择日志服务Project的地域。

    经典网络或者VPC下的ECS必须和日志服务Project在相同地域;如果您的日志源数据通过公网传输(类似IDC用法),可以根据实际需求选择日志服务Project的地域。

日志收集配置流程

通过控制台配置Logtail收集文本日志,可以通过极简模式、分隔符模式、JSON 模式、完整正则模式等方式收集日志进行设置。以极简模式和完整正则模式为例,配置流程如下。

图 1. 配置流程


操作步骤

  1. 在日志服务管理控制台单击目标项目,进入Logstore列表
  2. 选择目标Logstore,并单击Logstore名称右侧的数据接入向导图标,进入配置数据接入流程。
  3. 选择数据类型。

    单击自定义数据中的文本文件,并单击下一步,进入数据源设置界面。

  4. 指定配置名称

    配置名称只能包含小写字母、数字、连字符(-)和下划线(_),且必须以小写字母和数字开头和结尾,长度为3~63字节。

    说明
    配置名称设置后不可修改。
  5. 指定日志的目录和文件名。

    目录结构支持完整路径和通配符两种模式。

    说明
    目录通配符只支持 *? 两种。

    日志文件名支持完整文件名和通配符两种模式,文件名规则请参考Wildcard matching

    日志文件查找模式为多层目录匹配,即指定文件夹下所有符合文件名模式的文件都会被监控到,包含所有层次的目录。

    • 例如/apsara/nuwa/ … /*.log表示/apsara/nuwa目录中(包含该目录的递归子目录)后缀名为.log的文件。
    • 例如/var/logs/app_* … /*.log*表示/var/logs目录下所有符合app_*模式的目录中(包含该目录的递归子目录)文件名包含.log的文件。
    说明
    一个文件只能被一个配置收集。
    图 2. 指定目录和文件名


  6. 设置收集模式。

    Logtail支持极简模式、分隔符模式、JSON 模式、完整正则模式等方式收集日志,具体说明请参考采集方式。本示例以极简模式和完整正则模式为例介绍收集模式的设置。

    • 极简模式

      目前极简模式即单行模式。单行模式下默认一行日志内容为一条日志,即日志文件中,以换行符分隔两条日志。单行模式下,不提取日志字段,即默认正则表达式为(.*),同时记录当前服务器的系统时间作为日志产生的时间。如果后续您需要对极简模式进行更详细的设置,可以通过修改配置进入完整模式逐项调整。有关如何修改Logtail配置,参见管理采集配置

      极简模式下,您只需要指定文件目录和文件名称,Logtail会按照每行一条日志进行收集,同时将日志时间设定为抓取该条日志时服务器的系统时间,不会提取日志内容中的字段。

    • 完整正则模式

      如果需要对内容做更多个性化的字段提取设置(比如跨行日志,提取字段等),选择 完整正则模式 即可进行个性化定制。您可以参考 Logtail 采集简介了解这些参数的具体含义和设置方式。

      1. 输入 日志样例

        让您提供日志样例的目的是方便日志服务控制台自动提取其中的正则匹配模式,请务必使用实际场景的日志。

      2. 关闭 单行模式

        默认为使用单行模式,即按照一行为一条日志进行分割,如果需要收集跨行日志(比如 Java 程序日志),需要关闭单行模式,然后设置 行首正则表达式

      3. 设置 行首正则表达式

        提供自动生成手动输入两种功能。填写完日志样例后,单击 自动生成 即会生成正则;如果无法自动生成,可以切换为手动模式输入进行验证。

      4. 开启提取字段

        如果需要对日志内容中的字段单独分析处理,可以使用 提取字段 功能将指定字段变成 Key-Value 对后发送到服务端,所以需要您指定解析一条日志内容的方式,即正则表达式。

        日志服务控制台提供两种方式让您指定解析正则表达式。第一种方式是通过简单交互自动生成正则表达式。您通过“划选”的方式操作日志样例,选中需要提取的字段,日志服务控制台会自动生成正则表达式。

        如下图所示:
        图 3. 自动生成正则表达式


        尽管自动生成方式避免了您自己写正则表达式的困扰,但是自动生成的正则表达式很多时候并不是完美的,您可以手动直接输入正则表达式。单击 手动输入正则表达式 切换到手动输入模式。手动输入完成后,单击右侧的验证 即会验证您输入的正则表达式是否可以解析、提取日志样例。

        无论使用自动生成还是手动输入方式,产生日志解析正则表达式后,您都需要给每个提取字段命名,设定对应字段的 Key,如下图所示:

        图 4.

      5. 设置使用系统时间

        默认设置 手动输入正则表达式。如果关闭,您需要在提取字段时指定某一字段(Value)为时间字段,并命名为 time(如上图)。在选取 time 字段后,您可以单击 时间转换格式 中的自动生成 生成解析该时间字段的方式。关于日志时间格式的更多信息请参考文本-配置时间格式

  7. 酌情配置高级选项,设置完成后,单击下一步

    请根据您的需求配置本地缓存配置日志Topic生成方式、日志文件编码最大监控目录深度超时属性过滤器配置。如没有特殊需求,可以保持默认配置。

    配置项 详情
    本地缓存 请选择是否打开本地缓存。当日志服务不可用时,日志可以缓存在机器本地目录,服务恢复后进行续传,默认最大缓存值1GB。
    上传原始日志 请选择是否需要上传原始日志。开启该功能后默认会新增字段将原始日志内容一并上传。
    Topic生成方式
    • 空-不生成Topic:默认选项,表示设置Topic为空字符串,在查询日志时不需要输入Topic即可查询。
    • 机器组Topic属性:设置Topic生成方式为机器组Topic属性,可以用于明确区分不同前端服务器产生的日志数据。
    • 文件路径正则:选择此项之后,您需要填写下方的自定义正则,用正则式从路径里提取一部分内容作为Topic。可以用于区分具体用户或实例产生的日志数据。
    自定义正则 如您选择了文件路径正则方式生成Topic,需要在此处填写您的自定义正则式。
    日志文件编码
    • utf8:指定使用UTF-8编码。
    • gbk:指定使用GBK编码。
    最大监控目录深度 指定从日志源采集日志时,监控目录的最大深度,即最多监控几层日志。最大目录监控深度范围0-1000,0代表只监控本层目录。
    超时属性 如果一个日志文件在指定时间内没有任何更新,则认为该文件已超时。您可以对超时属性指定以下配置。
    • 永不超时:指定持续监控所有日志文件,永不超时。
    • 30分钟超时:如日志文件在30分钟内没有更新,则认为已超时,并不再监控该文件。
    过滤器配置 日志只有完全符合过滤器中的条件才会被收集。
    例如:
    • 满足条件即收集:配置Key:level Regex:WARNING|ERROR,表示只收集level为WARNING或ERROR类型的日志。
    • 过滤不符合条件的数据
      • 配置Key:level Regex:^(?!.*(INFO|DEBUG)),表示代表不收集level为INFO或DEBUG类型的日志。
      • 配置Key:url Regex:.*^(?!.*(healthcheck)).*,表示不采集url中带有healthcheck的日志,例如key为url,value为/inner/healthcheck/jiankong.html的日志将不会被采集。
    更多示例可参考 regex-exclude-wordregex-exclude-pattern
  8. 勾选所需的机器组并单击应用到机器组将配置应用到机器组。
    如果您还未创建机器组,需要先创建一个机器组。有关如何创建机器组,参见 创建机器组
    说明
    • Logtail配置推送生效时间最长需要 3 分钟,请耐心等待。
    • 如果需要收集 IIS 的访问日志,请务必首先参考Logstash 收集 IIS 日志配置 IIS。
    • 创建Logtail配置后,您可以查看Logtail配置列表、修改Logtail配置或删除Logtail配置。详细信息,参见管理采集配置
    图 5. 应用到机器组


    完成配置后,日志服务开始收集日志。

后续操作

完成以上操作后,您可以在页面指引下继续配置查询分析 & 可视化投递 & ETL

极简模式下收集到服务端的日志如下所示。每条日志的所有内容都在名为 content 的KEY下面。

图 6. 极简模式收集预览

完整正则模式下,收集到服务端的日志内容如下所示。每条日志的内容都按照设定的 Key-Value收集到了服务端。

图 7. 正则模式收集预览


Logtail配置项

配置Logtail时需要填写配置项,常用配置项具体描述与限制如下:

配置项 描述
日志路径 目录结构支持完整路径和通配符两种模式。通配符模式为多层目录匹配,即指定文件夹下所有符合文件名称的文件都会被监控到,包含所有层次的目录。
日志文件名 指定收集日志文件名称,区分大小写,可以使用通配符。例如*.log。Linux下的文件名通配符包括”*“, “?”和”[…]”。
本地存储 表示是否启用本地缓存临时存储因网络短暂中断而无法发送的日志。
日志首行头 指定多行日志的起始头,需指定正则表达式。在多行日志收集场景下(如应用程序日志中的堆栈信息),无法使用换行符来分割每条日志。这时需要指定一个多行日志的起始头,当发现该起始头则表示上条日志已经结束,新的一条已经开始。由于每条日志的起始头可能并不一样(如时间戳),故需要指定一个起始头的匹配规则,即这里的正则表达式。
日志解析表达式 定义如何提取一条日志信息,并转化成为日志服务日志的格式。用户需要指定一个正则表达式提取需要的日志字段信息,并且定义每个提取的字段名称。
日志时间格式 定义如何解析日志数据中的时间戳字符串的时间格式,具体请参见文本-配置时间格式

日志写入方式

除了使用Logtail收集日志外,日志服务还提供API和SDK的方式,以方便您写入日志。

  • 使用 API 写入日志

    日志服务提供REST风格的API帮助您写入日志。您可以通过API中的 PostLogStoreLogs 接口写入数据。关于API的完整参考请见 概览

  • 使用 SDK 写入日志

    除了API,日志服务还提供了多种语言(Java、.NET、PHP 和 Python)的SDK方便您写入日志。关于SDK的完整参考请见 概述