2019년 5월 20일 월요일

데이터 노가다 실수담 - 2nd

지난 주 어느 기업 교육 요청을 받은 후 강의 방식을 조금 바꿨다. 로그스태시 설정 시 grok 필터 비중을 줄이고, dissect 사용을 필수 포함하는 식. 정규표현식에 대한 부담을 조금이나마 줄여보자는 의도.

다음은 dissect 필터로 1차 필드 분류가 끝난 아파치 웹로그의 응답코드 발생 추이. 그런데 이상한 게 눈에 띈다.


테스트해보니 이런 상황. URI에 빈 칸 뭐야?


필드 분류를 위한 dissect 필터는 다음과 같다.
dissect {
 mapping => {
  "message" => '%{clientip} %{} %{} [%{timestamp}] "%{method} %{uri} %{http_ver} %{status} %{bytes}'
 }
}

문제 발견. 연동 대상 로그의 메소드 + URI + HTTP 버전 정보는 큰따옴표(")로 둘러싸여 있는데, 끝나는 위치의 따옴표를 빼먹음(..) 필터 수정.
dissect {
 mapping => {
  "message" => '%{clientip} %{} %{} [%{timestamp}] "%{method} %{uri} %{http_ver}" %{status} %{bytes}'
 }
}

이제 잘 된다. 이정도 실수는 애교지 뭐(..)


이제 남은 건 필요에 따라 필드를 가공해주는 필터를 하나씩 추가하는 작업. grok 필터 폭주 시작 이런 작업을 흔히 데이터 전처리라고 한다.

과거엔 ETL(Extract, Transform, Load)이나 파싱(parsing) 등으로 많이 불렸는데, 빅데이터가 뜬 이후론 거의 데이터 전처리로 통일된 듯. 이런 작업을 잘 할 수 있는 방법은 무엇일까? 마지막 날 어느 교육생이 이런 얘기를 했다.
엘라스틱을 제대로 사용하려면 도메인 지식이 중요하겠네요

강의 의도가 잘 전달된 것 같아 너무 기쁘더라. 빅데이터가 뜨면서 자주 언급되는 용어 중 하나가 '도메인 지식' 아닐까 싶다.

데이터를 알아야 분석 목적을 정하고, 목적에 맞는 데이터 전처리를 수행할 수 있기 때문. 도메인 지식은 필수, 툴은 선택이란 얘기. 데이터에 대한 도메인 지식을 쌓으려면?
엄마 뱃속에서부터 데이터를 배워서 나오는 사람은 없다. 그러면 어떻게 해야 하나? 데이터를 잘 알아야 데이터 분석을 잘 할 수 있는 건 맞지만, 반대로 분석 과정에서 시행착오를 반복하다 보면 자연스럽게 데이터 전문가가 될 수 있다. - 데이터 분석이 쉬워지는 정규표현식 (47페이지)

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스