简介: 日志上下文浏览是排查业务故障时罕用的形式,但受限于Logtail插件零碎的设计,在Logtail 1.2.1版本前,如果用户应用Logtail插件来解决日志或采集容器的规范输入,那么用户将无奈应用上下文浏览及Livetail性能。为了解决这一问题,本文将重点介绍如何应用日志上下文聚合插件来使能上下文查问和Livetail性能。背景在排查业务故障时,用户往往须要查看业务日志文件来定位问题。然而,当用户在应用SLS收集业务日志时,同一个Logstore中往往寄存着不同的日志(例如同一台主机上不同目录下的文件,抑或是同一个K8S集群节点上不同容器内的文件或规范输入),间接在管制台上点击“查问/剖析”按钮并不能直观地失去某一份日志文件的残缺上下文内容。为了解决这个问题,SLS提供了上下文查问和LiveTail性能,使得用户可能疾速直观地浏览同一日志文件中的内容:上下文查问:用户可在指定Logstore中的某条日志后,间接查问某条该条日志的上下文(即该条日志在所在文件中的前后若干条日志);Livetail:实时展现指定日志所在文件的最新日志,相似于对该文件执行tail -f。然而,在Logtail 1.2.1版本之前,上述两个性能仅针对应用固定解析模式解析日志的场景(如极简模式、残缺正则模式等),当额定应用Logtail插件来晋升日志解析能力或采集容器的规范输入时,上述两个性能就不再起效。从Logtail 1.2.1版本起,当用户应用Logtail插件来解决日志或采集容器的规范输入时,能够通过配置日志上下文聚合插件来应用上述两个性能。原理概览Logtail采纳批量发送日志数据的模式,即多条日志会被打包在同一个日志组中进行传送。在这种模式下,为了高效地获取某条日志的上下文或进行Livetail,Logtail在打包日志数据时采纳以下策略:同一个日志组中只寄存同一起源的日志,并在日志组的Meta信息中记录代表日志起源的惟一标识符及序号,组内日志按工夫顺序排列;对于寄存同一起源日志的日志组,日志组的序号按工夫先后顺序顺次递增。在这种模式下,每一条日志都可用(日志组标识符+序号,组内序号)的二元组合进行惟一标识,SLS服务端据此对该二元组合建设索引,从而实现日志上下文的疾速查找。
然而,受限于Logtail插件零碎的设计,在1.2.1版本前,当用户应用插件零碎解决数据或采集容器的规范输入时,Logtail无奈执行上述策略。具体来说,因为插件零碎的输出模块是以一条条日志的模式向后续模块传递信息,因而日志的起源信息从来到输出模块后便呈现缺失,从而导致无奈在日志打包阶段(即聚合模块)将同一起源的日志放入同一个日志组中,最终导致日志上下文查问及Livetail性能的生效。
为了解决上述问题,Logtail在现有各模块之间的数据交互上额定减少日志起源信息,同时新增了一个日志上下文聚合插件。因为日志的起源信息得以保留,该插件因而能够按照上文提到的日志打包策略对日志进行打包,从而实现日志的上下文查问及LiveTail。采集配置设置上面将介绍当用户应用Logtail插件来解决日志或采集容器的规范输入时,如何设置采集配置以应用上下文查问和Livetail性能。采集文本日志且应用Logtail插件解决日志在采集文本日志时,如果应用Logtail插件来解析日志,则须要在插件配置的中额定减少日志上下文插件aggregator_context:{
"global": {...},
"processors": [...],
"aggregators": [
{ "type": "aggregator_context", "detail": {}}
]
}示例:应用Logtail插件解析单行正则日志,则在控制台的插件配置框内填入以下内容:{
"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对于选定的日志,在该日志的左上角单击
图标进入Livetail页面:
此时该条日志所在文件的最新的日志数据将实时显示在页面底部。界面中的按钮性能如下:在高亮显示文本框中设置须要高亮显示的字符串,可实现字符串标红显示。在过滤条件文本框中设置过滤字符串,可实现日志列表中只显示蕴含过滤字符串的日志。字段过滤下拉菜单中可抉择须要展现的字段。 对于iLogtailiLogtail作为阿里云SLS提供的可观测数据采集器,能够运行在服务器、容器、K8s、嵌入式等多种环境,反对采集数百种可观测数据(日志、监控、Trace、事件等),曾经有千万级的装置量。目前,iLogtail已正式开源,欢送应用及参加共建。GitHub:https://github.com/alibaba/il...社区版文档:https://ilogtail.gitbook.io/i...企业版官网:https://help.aliyun.com/docum...
原文链接:https://click.aliyun.com/m/10...本文为阿里云原创内容,未经容许不得转载。