如何使用logstash和神交和索引作为Kibana领域对每条记录拉从日志中的特定数据?

问题描述 投票:0回答:1

的目标是:在日志中的每一行,应该有弹性包含“消息”(时间戳之后的文本)的文档。每个文档还应该包含项目名称,计划名称字段,并建立#。 < - 这就是我被陷

在开始的时候(Atlassian的竹构建日志)例如日志结构:

simple 01-Jan-2016 14:26:01  Build TestProj - Framework Code - Build #25 (TST-FC-25) started building on agent .NET Core 2
simple 01-Jan-2016 14:26:01  .NET-related builds, tests and publishing.

我有一个神交来获取和创建我的栏目 - 建立名称,版本号和项目名称(并让他们在Kibana字段):

%{NOTSPACE:log_entrytype}%{SPACE}(?<timestamp>(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])-\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b-(?>\d\d){1,2}\s*(?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9]))%{SPACE}Build%{SPACE}%{DATA:BamProjName}%{SPACE}-%{SPACE}%{DATA:BamBuildName}%{SPACE}-%{SPACE}Build%{SPACE}#%{NUMBER:BamBuildNum}

不过,我需要在Kibana每个记录/项可用这些字段。有了这个其他的神交,我可以提取日志的其他线路到log_message领域:

grok {   [
           "message", "%{NOTSPACE:log_entrytype}%{SPACE}(?<timestamp>(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])-\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b-(?>\d\d){1,2}\s*(?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9]))%{SPACE}%{GREEDYDATA:log_message}"
         ]
     }

所以,我需要以某种方式结合这两种模式匹配为一体,使用“可选”:()?这里所描述的语法?:link

是我的最终目标是实现与logstash和单独的神交插件?我可以logstash内的一些类型的变量构造的处理呢? add_field?

***注:使用filebeat航运日志,elastic does not recommend the multiline codec ,所以我很好奇我的其他选项

regex logstash elastic-stack logstash-grok
1个回答
1
投票

你需要用多事件的工作,看看官方文档:https://www.elastic.co/guide/en/logstash/current/multiline.html

© www.soinside.com 2019 - 2024. All rights reserved.