2017년 8월 13일 일요일

Elasticsearch 활용(winlogbeat 사용이 힘들 때 - 2nd)

어제 텍스트 형태로 수집된 윈도우 이벤트 로그를 Elasticsearch와 연동하는 과정을 진행했었다. 그런데 한글이 깨진다. 어쩌나?

사실 이벤트 로그는 ID 번호의 의미가 고정돼있기 때문에 메시지가 크게 중요하진 않다. 해당 로그를 구성하고 있는 다른 필드들의 관계를 파악하는 게 더 중요.

하지만 그래도 찝찝하니 깨지는 한글을 복구해보자. 일단 Logstash는 연동되는 로그를 UTF-8로 기본 인식하는 듯하다. 그래서 한글을 복구하려면 연동 대상 로그를 처음부터 UTF-8로 인코딩하거나,


아니면 전송 과정에서 UTF-8 인코딩이 아님을 알려줘야 한다. 한글 윈도우 기본 문자셋은 'CP949'


다음은 logstash 인코딩 설정.

input {
file {
path => "d:/event.log"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => plain {
charset => "CP949"
}
}
}

한글도 안 깨지고 잘 넘어간다. (filter 영역 주석 처리한 상태)


그런데 filter 영역을 활성화하면 grok 정규표현식 영역에서 또 에러.-_-


정규표현식은 분명 문제가 없는데?

regex101.com/r/i7L2Vq/1

grok debugger에서도 필드 추출 잘 되고.


어제 에러와 비교해보자. 정규표현식이 더 이어지는데 에러 메시지는 '"' 문자를 검사하는 과정에서 끝나 있다. 오늘 메시지도 마찬가지.


grok 필터는 '"' 문자를 무조건 정규표현식 구분자로 인식하나보다. 확인해보니 어제도 정규표현식에 '"'이 없을 때만 연동이 성공했다. '"'를 예외처리(\")해서 순수 문자로 인식시켜 보자.


잘 된다. 질문 주신 분 덕에 또 하나 배움.



댓글 없음:

댓글 쓰기

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