2014-02-06 15 views
0

問題:找到2個月前和1個月前的時間之間的日誌行,並且這些日誌行必須包含幾個指定的詞(甚至不需要正則表達式,儘管它會很高興有他們)。通過很多日誌搜索(最好在Python中)

捕獲:有20T +的日誌(gzipped!)篩選和搜索必須快速(最好在幾秒鐘內完成)。

我的第一個想法是使用PyTables,因爲我在Pandas中存儲了各種數值數據以及日誌行時間戳和日誌行本身(我可以使用表格格式IIRC存儲在Pandas的HDFStore中),使用內置的PyTable查詢。儘管如此,我還沒有解析整個數據集,只有一小部分日誌(出於分析目的)。我有基本的解析部分完成(提取時間戳,幾個關鍵參數,添加日誌行,保存),但我也需要快速查詢部分。

可行嗎?有更好的Python解決方案嗎?

我想使用內建於Postgres,直到我發現它在表中的列的線性掃描反正文本索引,所以我還不如用grep ...

可能是什麼可取的解決方案(Python提供)用於索引和掃描簡單單詞模式的大數據集?京都/東京內閣?

更新:(匿名)日誌示例如下。

23419 2013-11-27 12:35:59 [INFO] 12772792:ce7429c9d63dc630dce613ccb5a0ae55:201311271235498008010001 func: item uploaded, path=tt6-nas/itemhome174/pool2/20131127/12/35/252273696_12772792.d 

23419 2013-11-27 12:35:59 [WARNING] 12772792:ce7429c9d63dc630dce613ccb5a0ae55:201311271235498008010001 parse_zz: no test found: input= 

23413 2013-11-27 12:35:59 [INFO] 15417668:a0f5116658f701fd848ac9fec3743c2c:201311271235578010010001 Test ok, funcname = zzz_get_results itemid = 15417668 ay_id = 959 ip = 22.222.22.22 session_id = a0f5116658f701fd848ac9fec3743c2c 

23413 2013-11-27 12:35:59 [INFO] 15417668:a0f5116658f701fd848ac9fec3743c2c:201311271235578010010001 calling testfunc with args={'aa': False, 'medid': 15417668, '_objname': 'aa', '_clt_id': '46.238.87.23', '_pvid': '201311271235578010010001', 'limit': 3, '_login': 'aaa',... 

23421 2013-11-27 12:35:59 [INFO] 5642372:1ebd76b4b5c43e36323faf846077a881:201311271235592288010001 calling item_get_info with args={'test': False, '_elemid': 5642372, '_session_id': '1ebd76b4b5c43e36323faf846077a881', .. 

23421 2013-11-27 12:35:59 [INFO] 031 items:get_item=0. "time": 0.008256 query: url=http://hostname.tld:9603/getfunc?date=20131127&test1=7&limit=0&itemid=56119 body=85419:: NO_DATA 
+0

你能給我們一個日誌格式的例子嗎? – wnnmaw

+0

@wnnmaw:在更新中添加了一些日誌行。 – LetMeSOThat4U

回答