我的日志文件中的几行中的不同结构

时间:2015-04-10 08:21:56

标签: logstash grok

我的日志文件包含几行不同的结构,我不能理解它,我不知道我们是否可以按行或属性进行测试,我还是初学者。 如果你不了解我,我可以给你一些例子:

输入:

id=firewall action=bloc type=web
id=firewall fw="ER" type=filter
id=firewall fw="Az" tz="loo" action=bloc

模式:

id=%{WORD:id} ...

我想在()之间添加一些模式? 但我不知道该怎么做。 您可以使用此网站对其进行测试http://grokdebug.herokuapp.com/

请帮忙吗?我该怎么办:(

2 个答案:

答案 0 :(得分:1)

Logstash支持键值,请查看http://logstash.net/docs/1.4.2/filters/kv

或者您可以使用多个匹配值:

grok {
    patterns_dir => "./patterns"
    match => [
        "message", "%{BASE_PATTERN} %{EXTRA_PATTERN}",
        "message", "%{BASE_PATTERN}",
        "message", "%{SOME_OTHER_PATTERN}"
    ]
}

答案 1 :(得分:0)

不确定我是否理解你的问题,但我会尽力回答。我认为您要做的第一件事就是从您的输入中解析不同的字段。解析第一行输入的模式示例:

PATTERN %{NOTSPACE} %{NOTSPACE} %{NOTSPACE}(在$ LOGSTASH_HOME / pattern / extra中)

然后在您的logstash配置文件中:

filter {
    grok {
        patterns_dir => "$LOGSTASH_HOME/pattern"
        match => [ "message" => "%{PATTERN}" ]
    }
}

这会将您的第一行与3个字段("id=firewall" "action=bloc" "type=web")匹配(如果您有超过3个字段,则必须对其进行调整)。

你似乎要寻找的最后一件事是分割字段(在键值方案中),如id=firewall将成为id => "firewall"。这可以使用kv插件完成。我从未使用它,但我建议你使用logstash docs here

如果我不理解你的问题,请更清楚。