日志服务中日志为日志服务中处理的最小数据单元,采用半结构化数据模式定义一条日志,具体数据模型包括主题(Topic)、时间(Time)、内容(Content)和来源(Source),详细描述请参考核心概念。其中主题(Topic)为用户自定义字段,用以标记一批日志(例如:访问日志根据不同站点进行标记),默认值为空字符串(空字符串也为一个有效的主题)。用户可以通过使用REST API/SDK上传数据时设置主题。除此之外,Logtail客户端为日志服务用户常用的数据接入客户端,目前也支持设置使用不同的属性设置主题名称。
Logtail主题配置可以在Logtail配置页面中“高级选项”进行设置,目前支持4中主题设置方式:空字符串(默认值)、文件路径、文件路径正则和机器组Topic属性。页面详情请参考截图。
空字符串
空字符串即Logtail主题配置的默认值,在使用“日志索引”功能进行关键词查询时不需要输入任何主题名称即可查询上传数据。
文件路径正则
使用场景
如果服务日志根据不同的用户或者实例将日志记录在不同目录下面,但是日志比如下面的目录结构:
/logs
| - /userA/serviceA
| - service.log
| - /userB/serviceA
| - service.log
| - /userC/serviceA
| - service.log
使用Logtail配置文件路径为“/logs”,文件名称为“service.log”后,会将三个service目录下的日志内容实时收集至服务端,但是无法明确区分日志内容具体由哪个用户或者实例产生。此时可以设置“Topic生成方式”为“文件路径正则”,并且输入正则表达式“/(.*)/serviceA/.*”提取实例名称。
查询方式
当选择“文件路径正则”主题生成方式时,Logtail上报数据时会将实例名称作为主题名称上传至日志服务,根据上述目录结构和配置,会生成3个topic,其分别为“userA”、“userB”和“userC”,在使用“日志索引”功能查询时需要指定主题名称为实例名称。
机器组Topic属性
使用场景
假设公司通过一批前端机器对外提供HTTP服务,但是对于VIP用户希望提供更高的SLA,因此将其中部分机器只对VIP用户开放服务,对于所以HTTP访问日志目录结构如下:
/logs
| - access.log
使用Logtail配置文件路径为“/logs”,文件名称为“access.log”后,会将所有前端机对应的访问日志都实时收集至服务端,但是无法明确区分是由哪组前端服务器产生。此时可以设置“Topic生成方式”为“机器组Topic属性”,之后将前端机器分成“normal-group”和“vip-group”两个机器组,在创建机器组时,可以设置两个机器组的Topic属性分别为“normal”和“vip”,具体设置方式截图如下:
将两个机器组应用之前创建的Logtail配置后,即完成对应配置。Topic属性会根据机器组应用到对应机器,为防止歧义,请不要对同一台机器应用不同Topic数值,否则会在Topic之间进行切换。
查询方式
当选择“机器组Topic属性”主题生成方式时,Logtail上报数据时会将机器所在机器组的Topic属性作为主题名称上传至日志服务,在使用“日志索引”功能查询是需要指定主题名称为特定机器组Topic属性。