简介: 日志上下文浏览是排查业务故障时常用的方式,但受限于Logtail插件系统的设计,在Logtail 1.2.1版本前,如果用户使用Logtail插件来处理日志或采集容器的标准输出,那么用户将无法使用上下文浏览及Livetail功能。为了解决这一问题,本文将重点介绍如何使用日志上下文聚合插件来使能上下文查询和Livetail功能。
在排查业务故障时,用户往往需要查看业务日志文件来定位问题。然而,当用户在使用SLS收集业务日志时,同一个Logstore中往往存放着不同的日志(例如同一台主机上不同目录下的文件,抑或是同一个K8S集群节点上不同容器内的文件或标准输出),直接在控制台上点击“查询/分析”按钮并不能直观地得到某一份日志文件的完整上下文内容。
为了解决这个问题,SLS提供了上下文查询和LiveTail功能,使得用户能够快速直观地浏览同一日志文件中的内容:
然而,在Logtail 1.2.1版本之前,上述两个功能仅针对使用固定解析模式解析日志的场景(如极简模式、完整正则模式等),当额外使用Logtail插件来提升日志解析能力或采集容器的标准输出时,上述两个功能就不再起效。从Logtail 1.2.1版本起,当用户使用Logtail插件来处理日志或采集容器的标准输出时,可以通过配置日志上下文聚合插件来使用上述两个功能。
Logtail采用批量发送日志数据的模式,即多条日志会被打包在同一个日志组中进行传送。在这种模式下,为了高效地获取某条日志的上下文或进行Livetail,Logtail在打包日志数据时采用以下策略:
在这种模式下,每一条日志都可用(日志组标识符+序号,组内序号)的二元组合进行唯一标识,SLS服务端据此对该二元组合建立索引,从而实现日志上下文的快速查找。
然而,受限于Logtail插件系统的设计,在1.2.1版本前,当用户使用插件系统处理数据或采集容器的标准输出时,Logtail无法执行上述策略。具体来说,由于插件系统的输入模块是以一条条日志的形式向后续模块传递信息,因此日志的来源信息从离开输入模块后便出现缺失,从而导致无法在日志打包阶段(即聚合模块)将同一来源的日志放入同一个日志组中,最终导致日志上下文查询及Livetail功能的失效。
为了解决上述问题,Logtail在现有各模块之间的数据交互上额外增加日志来源信息,同时新增了一个日志上下文聚合插件。由于日志的来源信息得以保留,该插件因此可以依照上文提到的日志打包策略对日志进行打包,从而实现日志的上下文查询及LiveTail。
下面将介绍当用户使用Logtail插件来处理日志或采集容器的标准输出时,如何设置采集配置以使用上下文查询和Livetail功能。
在采集文本日志时,如果使用Logtail插件来解析日志,则需要在插件配置的中额外增加日志上下文插件aggregator_context:
{
"global": {...},
"processors": [...],
"aggregators": [
{
"type": "aggregator_context",
"detail": {}
}
]
}
{
"global": {
"DefaultLogQueueSize": 10
},
"processors": [
{
"type": "processor_split_log_string",
"detail": {
"SplitKey": "content",
"PreserveOthers": true
}
},
{
"type": "processor_regex",
"detail": {
"SourceKey": "content",
"Regex": "(\\S+)\\s-\\s(\\S+)",
"Keys": [
"remote_addr",
"remote_user"
]
}
}
],
"aggregators": [
{
"type": "aggregator_context",
"detail": {}
}
]
}
当用户在采集容器标准输出时,也需要在插件配置的中额外增加日志上下文插件aggregator_context:
{
"inputs": [
{
"detail": {
"Stdout": true,
"Stderr": true
},
"type": "service_docker_stdout"
}
],
"aggregators": [
{
"type": "aggregator_context",
"detail": {}
}
]
}
对于选定的日志,在该日志的左上角单击图标进入上下文查询页面:
此时可以使用鼠标在当前页面上下滚动查看指定日志的上下文信息。界面中的按钮功能如下:
对于选定的日志,在该日志的左上角单击图标进入Livetail页面:
此时该条日志所在文件的最新的日志数据将实时显示在页面底部。界面中的按钮功能如下:
关于iLogtail
iLogtail作为阿里云SLS提供的可观测数据采集器,可以运行在服务器、容器、K8s、嵌入式等多种环境,支持采集数百种可观测数据(日志、监控、Trace、事件等),已经有千万级的安装量。目前,iLogtail已正式开源,欢迎使用及参与共建。
GitHub:https://github.com/alibaba/ilogtail
社区版文档:https://ilogtail.gitbook.io/ilogtail-docs/about/readme
企业版官网:https://help.aliyun.com/document_detail/65018.html
原文链接:https://click.aliyun.com/m/1000362896/
本文为阿里云原创内容,未经允许不得转载。