我有这个日志文件:http://dpaste.com/3FE2VNY
我只想提取某些信息,例如日期时间和发布的事件数量。我尝试将其放入elasticsearch会导致挂起logstash。不知道我做错了什么,因为我是新手。
我尝试做的是简单地抓取日志文件中的所有内容并将其传递给elasticsearch。我知道必须使用grok
来获取特定部分,但我还没有达到那个级别。
我的目标是提取:
start: Mon Apr 27 13:35:25 2015
finish: Mon Apr 27 13:35:36 2015
number of events posted: 10
日志文件:
test_web_events.py: START: Mon Apr 27 13:35:25 2015
# TESTCASE TestWebPost ==================================================
# START TEST METHOD #################################: test_10_post_valid_json
[2015-04-27T13:35:25.657887] HTTP DELETE http://pppdc9prd3net:8080/rastplatz/v1/sink/db?k0=bradford4
{}
HTTP response: 200
0
POSTING event_id b29b6c7c-48cd-4cd9-b3c4-aa0a7edc1f35 to businessevent
Content-Type: text/plain
POSTING event_id 13678af1-3e3a-4a6e-a61c-404eb94b9768 to businessevent
Content-Type: text/plain
POSTING event_id 47b70306-2e7c-4cb2-9e75-5755d8d101d4 to businessevent
Content-Type: text/plain
POSTING event_id 6599cdb2-0630-470d-879d-1130cf70c605 to businessevent
Content-Type: text/plain
POSTING event_id d088ce29-fa0d-4f45-b628-045dba1fd045 to businessevent
Content-Type: text/plain
POSTING event_id 07d14813-b561-442c-9b86-dc40d1fcc721 to businessevent
Content-Type: text/plain
POSTING event_id b6aea24a-5424-4a0f-aac6-8cbaecc410db to businessevent
Content-Type: text/plain
POSTING event_id 016386bd-eac5-4f1c-8afc-a66326d37ddb to businessevent
Content-Type: text/plain
POSTING event_id 6610485d-71af-4dfa-9268-54be5408a793 to businessevent
Content-Type: text/plain
POSTING event_id 92786434-02f7-4248-a77b-bdd9d33b57be to businessevent
Content-Type: text/plain
Posted 10 events
# END TEST METHOD ###################################: test_10_post_valid_json
test_web_events.py: FINISH: Mon Apr 27 13:35:36 2015
conf file:
input {
file {
path => "/home/bli1/logstash-1.5.0/tmp/bradfordli2_post.log"
codec => multiline {
pattern => "^."
negate => true
what => "previous"
}
}
}
output {
elasticsearch { protocol => http host => "127.0.0.1:9200"}
stdout { codec => rubydebug }
}
答案 0 :(得分:1)
您可以使用以下内容:
multiline {
pattern => "START:"
negate => "true"
what => "previous"
}
这指示多行过滤器/编解码器将所有不包含START的行放在上一个logevent中。
然后,您可以使用grok模式提取3条信息。注意你必须通过在grok模式开头使用多行开关来指示grok查看多行消息,如下所示:
grok {
match => ["message", "(?m)Posted %{NONNEGINT:nrEvents} events"]
}
如果您正在使用多线程输入/多个并行工作线程,请发出警告。 logstash多行处理中存在当前的错误,这些错误可能导致来自各种事件的行在并行处理时相互混合。我也不确定这是否与您相关,但请看一下:
https://github.com/elastic/logstash/issues/1754
另一个信息。我真的不明白mutline过滤器和编解码器之间的区别以及何时使用其中一个。我在我的项目中使用过滤器,但它工作正常。