스플렁크의 기본 (정규표현식 기반) 데이터 전처리 결과가 마음에 들지 않을 때 정규표현식을 이용하면 커스터마이징이 그리 어렵지 않다. 그런데 정규표현식이 어렵다면?
스플렁크의 필드 추출 기능을 사용해보자. 사람 읽으라고 만들어진 로그 대부분이 가지고 있는 구분자 '빈 칸' 활용.
참고로 구분자를 이용한 필드 추출도 내부적으로는 정규표현식을 사용한다.
백트래킹 과다 에러 |
필드 추출 결과.
그럴듯해 보이지만 'method + uri + ver'를 하나의 필드로 인식하는 아파치 웹로그 기본 구조, 다양한 분석이 어려운 구조가 그대로 반영됐다.
method와 uri를 분리할 수 있을까?
현 uri 필드를 '빈 칸'으로 한 번 더 구분하면 간단. 그런데 스플렁크의 필드 추출 기능은 GUI의 번거로움은 둘째치고, 전체 이벤트인 _raw 필드만을 대상으로 동작한다. 같은 옵션으로는 단계별 진행을 할 수 없다는 얘기. 정규식 옵션을 이용해서 2단계 필드 추출을 진행해보자.
추출을 원하는 구간을 선택하면 해당 구간을 추출해주는 정규표현식을 만들어준다. 오~ 그런데 샘플을 제외한 나머지 데이터는 추출 실패. 스플렁크가 샘플에 과적합된 정규표현식을 만들었기 때문.
샘플을 추가하면 나아질까 싶었는데 아예 정규표현식 생성 실패.
변수가 있는 uri와 없는 uri 구조의 복잡성이 원인. 더 단순한 구조면 모를까, 전체 데이터의 특징을 반영해서 사용자 의도대로 동작하는 정규표현식을 컴퓨터에게 바라는 건 아직 무리. 이거 되면 뭔가 AI 혁명급 아닌가?
구조를 쪼개면 쪼갤수록 다양한 분석이 가능해지는 데이터 분석 특성 상, 정규표현식에 익숙하지 않은 상태에서는 엘라스틱이든 스플렁크든, 그 기능을 절반도 활용하기 힘들다.
댓글 없음:
댓글 쓰기