Logstash - 基本Grok模式不起作用

时间:2017-04-10 14:53:54

标签: logstash logstash-grok

我对Logstash完全不熟悉。我今天刚开始研究它。我没有找到任何好的教程。所以我在这里发帖子。

我有一个基本的conf文件:

 input {
    file{
        path => "C:/software/logstash-5.3.0/logstash-5.3.0/bin/test1.txt"
        type => "Text File"
        start_position => "beginning"
    }
}

filter {

    grok { 
        match => [ "message", "%{WORD:File Name} %{WORD:Method Name} %{NUMBER:testing Number} %{NUMBER:testing second number}" ] 
    } 
}

output{

    file {
        path => "C:/software/logstash-5.3.0/logstash-5.3.0/bin/test_op1.txt"
        codec => line  { format => "File Name is: %{File Name} and Method Name is: %{Method Name}"
        }    
    }

    stdout {}
}

我通过在Google搜索中查看几个示例来制作此配置文件。

我的输入文件只包含一行:testFile testMethod 123 345

我只是想了解Logstash如何在这里工作。

我使用上面的conf文件和输入文件运行了logstash。 它开始成功运行。 并在控制台上打印了“testFile testMethod 123 345”。 并且“文件名是:%{文件名},方法名称是:%{方法名称} “打印到输出文件。 鉴于,预期输出为:“文件名为:testFile,方法名称为:testMethod”

将codec => ruby​​debug添加到配置文件的输出后,输出将作为图像附加。output

你能告诉我哪里错了吗? 我是否需要创建任何模式文件或是否存在任何用于grok的默认模式文件。

任何帮助都将深表感谢。

感谢。

1 个答案:

答案 0 :(得分:2)

确定了问题。问题是由我在GROK模式中使用的命名约定引起的。在GROK模式中使用空格导致了这个问题。

更正了Grok模式

grok { 
    match => [ "message", "%{WORD:FileName} %{WORD:MethodName} %{NUMBER:Number1} %{NUMBER:Number2}" ] 
} 

通过使用此GROK模式,我的问题得到了解决。 感谢您提出建议here