我对Logstash完全不熟悉。我今天刚开始研究它。我没有找到任何好的教程。所以我在这里发帖子。
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 => rubydebug添加到配置文件的输出后,输出将作为图像附加。output
你能告诉我哪里错了吗? 我是否需要创建任何模式文件或是否存在任何用于grok的默认模式文件。任何帮助都将深表感谢。
感谢。
答案 0 :(得分:2)
确定了问题。问题是由我在GROK模式中使用的命名约定引起的。在GROK模式中使用空格导致了这个问题。
grok {
match => [ "message", "%{WORD:FileName} %{WORD:MethodName} %{NUMBER:Number1} %{NUMBER:Number2}" ]
}
通过使用此GROK模式,我的问题得到了解决。 感谢您提出建议here