Filter 日志存储:具有不同模式的多个日志文件
我们想为我们公司的几个不同项目设置一个日志存储服务器。现在我尝试在Kibana中启用它们。我的问题是: 若我有不同的日志文件模式,我如何为它们构建一个过滤器? 示例:logstash.conf:Filter 日志存储:具有不同模式的多个日志文件,filter,logstash,kibana,logstash-grok,logfiles,Filter,Logstash,Kibana,Logstash Grok,Logfiles,我们想为我们公司的几个不同项目设置一个日志存储服务器。现在我尝试在Kibana中启用它们。我的问题是: 若我有不同的日志文件模式,我如何为它们构建一个过滤器? 示例:logstash.conf: input { file { type => "A" path => "/home/logstash/A/*" start_position => "beginning" } file { type => "B" path =&g
input {
file {
type => "A"
path => "/home/logstash/A/*"
start_position => "beginning"
}
file {
type => "B"
path => "/home/logstash/B*"
start_position => "beginning"
}
}
filter {
multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
grok {
type => A
match => [ "message", "%{TIMESTAMP_ISO8601:logdate} %{DATA:thread %{LOGLEVEL:level}\s*%{DATA:logger_name}\s*-\s*%{GREEDYDATA:log_text}"]
add_tag => [ "level_%{level}" ]
}
date {
match => ["logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
}
grok {
type => B
match => [ any other pattern ...
}
}
output {
elasticsearch { embedded => true }
}
我是否必须为每个项目(A、B、C,…)创建一个自己的过滤器,当我为每个项目创建不同模式的日志文件时,我必须做什么?您只需要为所有项目创建一个过滤器 对于Logstash1.3.3,您可以使用语句来区分每个项目组。比如说,
filter {
multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
if [type] == "A" {
grok {
match => [ any other pattern ...
}
}
else if [type] == "B" {
grok {
match => [ any other pattern ...
}
}
}
希望这能帮助你 谢谢你,本,我会试试的。当我在A和B中有不同的日志文件模式时,当A和B是项目时,我该怎么办?谢谢Ben,我会尝试一下。当我在A和B中有不同的日志文件模式时,当A和B是项目时,我该怎么办?一个输入(文件)将有一种类型。因此,如果在A中有不同的日志文件模式,则需要首先分离日志。感谢Ben。现在我的理解是:当我有两个不同的Web服务(A和B)具有不同的日志文件模式时,则不可能在一个Kibana GUI安装中显示它们。我需要为每个Web服务提供一个自己的KibanaGUI,对吗?在一个GUI中使用两个仪表盘是不可能的?我认为您有误解。如果您想使用grok解析Logstash中的日志文件,那么日志模式应该是相同的,否则您的grok模式会很复杂。两个或多个web服务日志文件可以保存到一个elasticsearch(搜索引擎)。您可以使用一个Kibana GUI和两个不同的仪表板。例如,可以将一个仪表板配置为A类型,将另一个仪表板配置为B类型