我有我的日誌形式如下:解析日誌與logstash
TFMLOG252252 1454964680185 2016-02-09 02:21:20.185 204 - - - - DEV gcfo dev dev 0.0.1-SNAPSHOT a70d72f-1a-152c2a725f9000 INFO INFO - - - - applog.cls=com.walmart.ecommerce.getcustomerfulfillmentorder.cache.impl.GetCustomerFulfillOrderCacheManager,applog.mthd=getFulfillmentSystem,applog.line=40,applog.msg=Entered getfulfillmentSystem
TFMLOG252252 1454964690141 2016-02-09 02:21:30.141 204 - - - - DEV gcfo dev dev 0.0.1-SNAPSHOT a70d72f-1a-152c2a74cdd000 INFO INFO - - - - applog.cls=com.walmart.ecommerce.getcustomerfulfillmentorder.camel.AuditEventNotifier,applog.mthd=notify,applog.line=26,applog.msg=Audit String: Endpoint//=Endpoint[http://dummyhost]//,TransId//=null//,Order Number//=201601290102//,NodeId//=5509//,CountryCode//=US//,FirstName//=null//,LastName//=PUTTESTING//,OrderType//=PUT//,MaxOrderCount//=32//,ResponseTime//=2131
TFMLOG252252 1454964900004 2016-02-09 02:25:00.004 204 - - - - DEV gcfo dev dev 0.0.1-SNAPSHOT a70d72f-e-152c2aa80a4005 HB LOG - TH COUNTS - sampling.rate=1024,quota.limit=10485760,quota.msg.dropped=0,sampling.msg.dropped=0,sampling.msg.received=7
TFMLOG252252 1454964688008 2016-02-09 02:21:28.008 204 - - - - DEV gcfo dev dev 0.0.1-SNAPSHOT a70d72f-1a-152c2a74488000 INFO INFO - - - - applog.msg=TransID//=213564 ENTERED IN FUNC FUL
現在我想分析2型和4型的唯一記錄我該怎麼辦呢?
我寫了這個過濾,截至目前:
filter{
grok{
match => { "message" => "%{WORD:loggingid}\s*%{NUMBER:epoch}\s*%{TIMESTAMP_ISO8601:timestamp}\s*%{NUMBER:system}\s*-\s*-\s*-\s*-\s*%{WORD:env}\s*%{WORD:appid}\s*%{WORD:dc}\s*%{WORD:envid}\s*%{NOTSPACE:appversion}\s*%{NOTSPACE:msgid}\s*%{WORD:msgtype}\s*%{WORD:msgsubtype}\s*-\s*-\s*-\s*-\s*%{GREEDYDATA:actuallog}"}
}
}
該過濾器能夠解析類型1,2和4,但未能在解析類型3.我嘗試使用%{} WORD的 - 但沒。
我的邏輯是這樣的:我以爲我會將實際日誌寫入actual_log字段,然後查看actual_log是否包含「TransId」或「TransID」,否則使用drop filter來刪除該日誌。如果事件沒有被刪除,我將使用kv過濾器從actual_log中獲取鍵值對,並刪除其他不必要的字段(例如:日誌記錄,曆元等),然後將其放入彈性搜索中。
現在我有幾個問題:
1) How to parse the "-" ?
2) Is my logic correct?
一個解決辦法,我想的是,我可以檢查,如果我得到grokparsefailure,我不會把它放在彈性搜索這樣我就可以在自身之間拖放。這有意義嗎?
感謝阿蘭。但是,我可以只把kv過濾器放在真實環境中嗎?如果是,如何? –
kv {}採用「源」值,您可以在其中指定數據字段。 –
在第四種日誌中,是否有我可以將transid作爲關鍵字?我包括 \t千伏{ \t \t源=> 「actuallog」 \t \t field_split => 「=」 \t} 在我的過濾器,這給正確的結果爲2型的日誌,但日誌4不起作用 –