我有我的日志形式如下:解析日志与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不起作用 –