2014-02-06 1 views
0

문제 : 2 개월 전과 1 개월 전의 로그 라인을 찾아 그 로그 라인에 여러 개의 지정된 단어가 있어야합니다 (정규 표현식조차 필요하지 않습니다. 그들을 갖게되어 기쁘다).많은 로그를 통한 검색 (바람직하게는 파이썬에서)

캐치 : 20T + 로그 (gzipped!)로 검색 할 수 있으며 검색 속도가 빨라야합니다 (가급적 몇 초 내에 완료해야 함).

로그 라인 타임 스탬프와 함께 다양한 숫자 데이터를 저장하고 팬더에 로그 라인을 저장하기 때문에 PyTables를 사용하는 것이 처음이었습니다 (테이블 형식 IIRC를 사용하여 판다의 HDFStore에 저장할 수 있음), 내장 된 PyTables 쿼리 사용 . 아직 전체 데이터 세트를 분석하지는 못했지만 분석 용도로만 사용할 수 있습니다. 기본 파싱 부분 (타임 스탬프 추출, 몇 가지 핵심 매개 변수, 로그 라인 추가, 저장)을 수행하지만 빠른 쿼리 부분도 필요합니다.

실현 가능합니까? 파이썬을위한 더 나은 솔루션이 있습니까?

나는 어쨌든 테이블의 컬럼의 선형 검색을한다는 것을 발견 할 때까지 포스트 그레스에 내장 된 텍스트 인덱서를 사용하는 방법에 대한 생각, 그래서 나뿐만 아니라 그렙를 사용할 수 있습니다 ... 바람직한 해결책이 될 수 무엇

(파이썬에서 사용 가능) 간단한 단어 패턴을위한 큰 데이터 세트를 색인하고 스캔하기 위해? 교토/도쿄 내각?

업데이트 : (익명 처리 된) 로그 예가 이어집니다.

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

답변