我有应用程序日志文件,这些文件使用Filebeat发送到logstash。日志文件将包含类似这样的内容,包括模块名称和在其中处理所花费的时间
[10/08/2020#11:25:45:451] #SVS#SVS#NA#NA#NA#-#DE#00000199#DE_ONL_DC_SERVER1_NODE05_PRD##[8/10/2020#11:25:45:451] #O#-#-#-#Module1#1#-#5#-#-#-#CoreB#-
我只想从上面的日志中提取3个字段,模块名称{Module1}、处理{5}所花费的时间、服务器名称{DE_ONL_DC_SERVER1_NODE05_PRD},这样我就可以在kibana中将它们绘制到这些术语的仪表板中。
我是elk堆栈的新手,仍在探索logfilter中的各种过滤器选项,以实现上述目标,如有任何帮助,我们将不胜感激。感谢
是的,如果所有日志行看起来完全相同,我会使用dissect
过滤器。像这样的模式应该做:
filter {
dissect {
mapping => {
"message" => "[%{@timestamp}] #%{?ignored}#%{?ignored}#%{?ignored}#%{?ignored}#%{?ignored}#-#%{?ignored}#%{?ignored}#%{serverName}##[%{?ignored}] #%{?ignored}#%{?ignored}#%{?ignored}#%{?ignored}#%{moduleName}#%{?ignored}#%{?ignored}#%{processTime}#%{?ignored}#%{?ignored}#%{?ignored}#%{?ignored}#%{?ignored}
"
}
}
}
这将在事件中提取以下字段:
{
"@timestamp": "10/08/2020#11:25:45:451",
"message": "[10/08/2020#11...",
"serverName": "DE_ONL_DC_SERVER1_NODE05_PRD",
"moduleName": "Module1",
"processTime": 5
}