全部产品
Search
文档中心

日志服务:日志主题

更新时间:Nov 07, 2024

您可以通过设置不同的日志主题(Topic)对采集到的文本日志进行分类,例如按服务器类型、用户区分。

配置日志主题

前提条件

操作步骤

您可通过控制台或API方式配置日志主题。

控制台方式

  • Logtail配置页面,单击其他全局配置,并在展开的区域选择日志主题类型。配置项说明如下:

    • 机器组Topic:选择为机器组Topic时,在创建机器组时必须配置机器组Topic

    • 文件路径提取:选择为文件路径提取时,必须配置相应的正则表达式。

    • 自定义:选择为自定义时,须输入customized:// + 自定义主题名,使用自定义的静态日志主题。

    image

  • 日志服务Project中创建Logtail配置。更多信息,请参见采集主机文本日志

API方式

如果需要使用API创建Logtail采集配置,请使用CreateConfig。 日志主题相关的参数,请参见Logtail配置topicFormat参数

日志主题类型

  • 机器组Topic

    日志服务Project支持将一个Logtail配置应用到多个机器组。使用机器组Topic可用于区分来自不同机器组的日志。Logtail上报数据时,会将服务器所在机器组的机器组Topic作为日志主题上传至日志服务Project。用户在查询日志时需要指定日志主题作为查询条件。

  • 文件路径提取

    文件路径提取方式用于区分不同用户或应用产生的日志数据。如果不同的用户或应用将日志保存在不同的顶级目录中,但是下级目录和日志文件名相同,日志服务在采集日志时无法明确区分日志是由哪个用户或应用产生的。

    Logtail通过正则表达式来完整匹配文件路径,并将表达式匹配的结果(用户名或应用名)作为日志主题(Topic)上传至日志服务。用户在查询日志时需要指定日志主题作为查询条件。

    说明

    文件路径的正则表达式中,需要对正斜线(/)进行转义。

    场景1:不同用户将日志记录在不同目录下,但是日志文件名称相同,目录路径如下所示。

    /data/logs
    ├── userA
    │   └── serviceA
    │       └── service.log
    ├── userB
    │   └── serviceA
    │       └── service.log
    └── userC
        └── serviceA
            └── service.log

    如果在Logtail配置中仅配置文件路径为/data/logs且文件名称为service.log,Logtail会将三个service.log文件中的内容采集至同一个Logstore中,因此无法区分日志具体由哪个用户产生。您可以使用正则表达式提取文件路径中的值,生成不同的日志主题。

    • 正则表达式

      \/data\/logs\/(.*)\/serviceA\/.*
    • 提取结果

      __topic__: userA
      __topic__: userB
      __topic__: userC

    场景2:如果单个日志主题不足以区分日志的来源,您可以在日志文件路径中配置多个正则捕获组来提取关键信息。其中捕获组包括命名捕获组(?P<name>)或非命名捕获组。如果全是命名捕获组,则生成的tag字段为__tag__:{name};如果全是非命名捕获组,则生成的tag字段为__tag__:__topic_{i}__,其中{i}为捕获组的序号。

    说明

    当正则表达式中存在多个捕获组时,不会生成__topic__字段。

    例如,文件路径为/data/logs/userA/serviceA/service.log,您可以通过以下方式提取文件路径中的多个值。

    • 示例1:使用非命名捕获组进行正则提取。

      • 正则表达式

        \/data\/logs\/(.*?)\/(.*?)\/service.log
      • 提取结果

        __tag__:__topic_1__: userA
        __tag__:__topic_2__: serviceA
    • 示例2:使用命名捕获组进行正则提取。

      • 正则表达式

        \/data\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/service.log
      • 提取结果

        __tag__:user: userA
        __tag__:service: serviceA
  • 自定义

    输入customized:// + 自定义主题名,使用自定义的静态日志主题。

    重要

    Logtail 0.16.21(Linux系统)及以上版本支持该设置。

根据日志主题查询日志

在日志查询分析页面,输入__topic__: userA__tag__:__topic_1__: userA查询相应主题的日志。更多信息,请参见查询语法