0

嘿我有一个包含许多行的每一行的文本文件含有3个值由空格隔开:logstash文本文件输出配置

username email hash 
username email hash 
username email hash 
username email hash 
username email hash 

我尝试使用此配置索引列表与logstash:

input { 
     file { 
       path => "/path/to/your/file.log" 
       start_position => beginning 
       sincedb_path => "/dev/null" 
     } 
} 
filter { 
     grok { 
       match => {"message" => "%{WORD:username} %{WORD:email} %{WORD:hash}" } 
     } 
} 
output { 
     elasticsearch { 
       hosts => ["localhost:9200"] 
     } 
} 

我的问题是,logstash指数会这样:

 { 
    "_index": "logstash-2017.06.01", 
    "_type": "logs", 
    "_id": "AVxinqK5XRvft8kN7Q6M", 
    "_version": 1, 
    "_score": null, 
    "_source": { 
    "path": "C:/Users/user/Desktop/user/log.txt", 
    "@timestamp": "2017-06-01T07:46:22.488Z", 
    "@version": "1", 
    "host": "DESKTOP-FNGSJ6C", 
    "message": "username email password", 
    "tags": [ 
     "_grokparsefailure" 
    ] 
    }, 
    "fields": { 
    "@timestamp": [ 
     1496303182488 
    ] 
    }, 
    "sort": [ 
    1496303182488 
    ] 
} 

,我希望它到b e像这样:

 { 
    "_index": "logstash-2017.06.01", 
    "_type": "db", 
    "_id": "AVxinqK5XRvft8kN7Q6M", 
    "_version": 1, 
    "_score": null, 
    "_source": { 
    "username": "Marlb0ro", 
    "email": "[email protected]", 
    "hash": "123456", 
} 

我该怎么做才能改变它?任何帮助将被apricated

回答

1

当我尝试在http://grokconstructor.appspot.com测试你的grok有一个解析错误。由于空间的分隔符,我尝试使用NOTSPACE用户名和电子邮件地址:

%{NOTSPACE:username} %{NOTSPACE:email} %{WORD:hash} 
+0

对不起,GhostCat,这是一个诚实的错误。我应该给出答案,但我点击评论。我编辑了它。 :) – Yee

+0

是的,现在看起来好多了。 – GhostCat

0

我敢肯定,你神交解析器将无法正常工作。因为“Word”模式不匹配哈希或电子邮件地址。

您可以检查自己的github页(here

有一个“EMAILADDRESS”的模式和哈希我会用“用户名”在他们预先定义的模式。