您可以通过设置不同的日志主题(Topic)对采集到的文本日志进行分类,例如按服务器类型、用户区分。
配置日志主题
前提条件
已创建Project、标准型Logstore。具体操作,请参见创建项目Project、创建Logstore。
已创建机器组。
操作步骤
您可通过控制台或API方式配置日志主题。
控制台方式
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
查询相应主题的日志。更多信息,请参见查询语法。