Logtail如何收集文本日志?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Logtail如何收集文本日志?

轩墨 2017-10-20 15:34:13 2013

Logtail客户端可以帮助日志服务用户简单地通过控制台收集ECS云服务器上的日志。
创建完日志库后,系统会提示您创建Logtail配置,您可以在弹出的对话框中单击 [backcolor=transparent]创建 Logtail 配置 创建一个Logtail配置。此外,您也可以通过 [backcolor=transparent]Logstore列表 页面创建Logtail配置。

前提条件


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

使用限制

  • 一个文件只能被一个配置收集(如果需要采集多份,建议以软链接形式实现。例如/home/log/nginx/log下需要采集两份,则其中一个配置原始路径,另外创建一个该文件夹的软链接ln -s /home/log/nginx/log /home/log/nginx/link_log,另一个配置软链接路径即可)。
  • Logtail客户端支持的操作系统可参考 使用 Logtail 写入日志


日志收集配置流程


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


操作步骤


  1. 在日志服务管理控制台单击目标项目,进入[backcolor=transparent]Logstore列表。

  2. 选择目标Logstore,并单击[backcolor=transparent]管理进入[backcolor=transparent]Logtail配置列表。

  3. 在[backcolor=transparent]Logtail配置列表页面右上角点击[backcolor=transparent]创建。进入Logtail配置流程。

  4. 选择数据源类型 [backcolor=transparent]文本文件 并单击 [backcolor=transparent]下一步。

  5. 指定 [backcolor=transparent]配置名称。
    配置名称只能包含小写字母、数字、连字符(-)和下划线(_),且必须以小写字母和数字开头和结尾,长度为3~63字节。
    [backcolor=transparent]注意:配置名称设置后不可修改。

  6. 指定日志的目录和文件名。
    目录结构支持完整路径和通配符两种模式。
    [backcolor=transparent]注意: 目录通配符只支持 *和? 两种。
    日志文件名支持完整文件名和通配符两种模式,文件名规则请参考Wildcard matching
    日志文件查找模式为多层目录匹配,即指定文件夹下所有符合文件名模式的文件都会被监控到,包含所有层次的目录。
    • 例如/apsara/nuwa/ … /*.log表示/apsara/nuwa目录中(包含该目录的递归子目录)后缀名为.log的文件。

    • 例如/var/logs/app_* … /*.log*表示/var/logs目录下所有符合app_*模式的目录中(包含该目录的递归子目录)文件名包含.log的文件。
      [backcolor=transparent]注意: 一个文件只能被一个配置收集。

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

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

    • 完整正则模式
      如果需要对内容做更多个性化的字段提取设置(比如跨行日志,提取字段等),选择 [backcolor=transparent]完整正则模式 即可进行个性化定制。您可以参考 使用Logtail写入日志 了解这些参数的具体含义和设置方式。
      输入 [backcolor=transparent]日志样例。
      让您提供日志样例的目的是方便日志服务控制台自动提取其中的正则匹配模式,请务必使用实际场景的日志。

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

    • 设置 [backcolor=transparent]行首正则表达式。
      提供自动生成和手动输入两种功能。填写完日志样例后,单击 [backcolor=transparent]自动生成 即会生成正则;如果无法自动生成,可以切换为手动模式输入进行验证。

    • 设置 [backcolor=transparent]提取字段。
      如果需要对日志内容中的字段单独分析处理,可以使用 [backcolor=transparent]提取字段 功能将指定字段变成 Key-Value 对后发送到服务端,所以需要您指定解析一条日志内容的方式,即正则表达式。
      日志服务控制台提供两种方式让您指定解析正则表达式。第一种方式是通过简单交互自动生成正则表达式。您通过“划选”的方式操作日志样例,选中需要提取的字段,日志服务控制台会自动生成正则表达式,如下图所示:

      尽管自动生成方式避免了您自己写正则表达式的困扰,但是自动生成的正则表达式很多时候并不是完美的,您可以手动直接输入正则表达式。单击 [backcolor=transparent]手动输入正则表达式 切换到手动输入模式。手动输入完成后,单击右侧的 [backcolor=transparent]验证 即会验证您输入的正则表达式是否可以解析、提取日志样例。
      无论使用自动生成还是手动输入方式,产生日志解析正则表达式后,您都需要给每个提取字段命名,设定对应字段的 Key,如下图所示:

    • 设置 [backcolor=transparent]使用系统时间。
      默认设置 [backcolor=transparent]使用系统时间。如果关闭,您需要在提取字段时指定某一字段(Value)为时间字段,并命名为[backcolor=transparent]time(如上图)。在选取 time 字段后,您可以单击 [backcolor=transparent]时间转换格式 中的 [backcolor=transparent]自动生成 生成解析该时间字段的方式。关于日志时间格式的更多信息请参考 Logtail 日期格式

    • 酌情配置 [backcolor=transparent]高级选项。
      请根据您的需求配置[backcolor=transparent]本地缓存、[backcolor=transparent]配置日志Topic生成方式、[backcolor=transparent]日志文件编码、[backcolor=transparent]最大监控目录深度、[backcolor=transparent]超时属性和[backcolor=transparent]过滤器配置。如没有特殊需求,可以保持默认配置。[backcolor=transparent]Topic生成方式: 默认为[backcolor=transparent]空-不生成Topic,即Topic为空字符串,在查询日志时不需要输入Topic即可查询。您也可以选择[backcolor=transparent]机器组Topic属性用于明确区分不同前端服务器产生的日志数据;或者选择[backcolor=transparent]文件路径正则,用于区分具体用户或实例产生的日志数据。([backcolor=transparent]注意:[backcolor=transparent]文件路径方式为阿里云内部用户选项,请根据您的需求选取适合您的选项。)
    • [backcolor=transparent]过滤器配置: 日志只有[backcolor=transparent]完全符合过滤器中的条件才会被收集,例如:配置Key:level Regex:WARNING|ERROR 代表只收集level为WARNING或ERROR类型的日志;若需要过滤不符合某条件的数据,也可用该方式实现,例如:Key:level Regex:^(?!.*(INFO|DEBUG)) 代表不收集level为INFO或DEBUG类型的日志,类似示例可参考regex-exclude-wordregex-exclude-pattern

  • 设置完成后,单击 [backcolor=transparent]下一步。

  • 勾选所需的机器组并单击 [backcolor=transparent]应用到机器组 将配置应用到机器组。
    如果您还未创建机器组,需要先创建一个机器组。有关如何创建机器组,参见 创建机器组

    [backcolor=transparent]注意:
    • Logtail配置推送生效时间最长需要 3 分钟,请耐心等待。
    • 如果需要收集 IIS 的访问日志,请务必首先参考 IIS 日志收集最佳实践 配置 IIS。
    • 创建Logtail配置后,您可以查看Logtail配置列表,修改Logtail配置或删除Logtail配置。详细信息,参见 Logtail 配置


    后续操作


    完成配置后,日志服务开始收集日志。您可以查看并检索收集到的日志。有关如何查询日志,参见 查询日志
    极简模式下收集到服务端的日志如下所示。每条日志的所有内容都在名为 [backcolor=transparent]content 的KEY下面。

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


    Logtail配置项


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


    日志写入方式


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

    使用 API 写入日志


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

    使用 SDK 写入日志


    除了API,日志服务还提供了多种语言(Java、.NET、PHP 和 Python)的SDK方便您写入日志。关于SDK的完整参考请见 SDK 参考
    缓存 监控 搜索推荐 Java Linux 应用服务中间件 API 开发工具 nginx Windows
    分享到
    取消 提交回答
    全部回答(0)
    开发与运维
    使用钉钉扫一扫加入圈子
    + 订阅

    集结各类场景实战经验,助你开发运维畅行无忧

    推荐文章
    相似问题
    推荐课程