如何解析和提取特定字段并将其存储到 logstash 过滤器中的另一个字段?
how to parse and extract specific fields and store it into another field in logstash filter?
我有使用 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。像这样的模式应该做的:
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
}
我有使用 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。像这样的模式应该做的:
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
}