LOGSTASH

2020-03-29
지난 글 에서 elapsed 필터로 멀티 라인 구조를 갖는 하나의 트랜잭션 실행 시간을 구해봤는데 멀티 코어가 멀티 라인 로그를 나눠 처리하는 로그스태시의 동작 방식 때문에 잘 되지 않았다. 그렇다고 싱글 코어를 쓰자니 로그양이 너무 많고 (..) test.log 멀티 라인 구조를 싱글 라인으로 바꿔보자. Logstash codec 플러그인 중 multiline 은 서로 다른 시점에 발생한 여러 개의 로그를 특정 조건으로 합쳐준다. 다음은 message 필드에 'EndJob' 패턴이 존재하면 직전 (previous)...
2020-02-12
특정 작업의 생성부터 소멸까지의 수명 주기가 jobID라는 식별자로 구분되는 로그가 있다. 하나의 작업에 소요된 시간을 구해보자. 마지막 작업이 실행된 시간에서 최초 작업 실행 시간을 빼면 된다. 근데 어떻게 하지? 가장 간단한 방법은 서로 다른 시점에 발생한 두 로그 간의 시간차를 계산해주는 로그스태시 필터 플러그인 elapsed 를 사용하는 것. 다음은 파이프라인 설정. 작업을 시작할 때는 send_begin, 작업이 끝날 때는 send_end 태그를 추가했으며, elapsed 플러그인은 해당 태그를 이용해서 계산이 필요한 시간대의 시작과 끝을 결정한다....
2019-11-18
웹 요청 트래픽에는 useragent라는 웹 요청을 시도할 때 사용된 도구에 대한 정보가 있다. 이걸 분석해보겠다고 예전엔 정규표현식으로 웹 로그의 useragent 문자열을 추출한 후, 유형과 운영체제 등을 일일이 분류하는 노가다를 했었는데(..) 그런데 이걸 자동으로 분석해주는 useragent 라는 필터 플러그인을 엘라스틱이 제공한다. 다음은 샘플 로그. 다음은 로그스태시 파이프라인 설정. useragent 분석 결과 필드가 너무 많아서 name 하나만 남겨 두고 remove_field 옵션으로 다 지웠다....
2019-09-05
방화벽처럼 key-value 구조가 반복되는 로그의 필드 분류에는 kv 필터 가 딱이다. 특히 구분기호로 '='을 사용하는 key-value 구조는 kv {} 구문만으로도 완벽한 테이블 구조를 만들어 줌. 문제는 kv 필터가 내부적으로 정규표현식 을 사용한다는 것. 성능 저하가 발생할 수 있다는 얘기. 이때 dissect 필터 가 대안이 될 수 있다. dissect는 데이터 전체에 반영된 공통된 구조를 그대로 이용해서 원하는 부분을 잘라내는 기능을 제공하며, 로그는 보통 사람 읽기 좋으라고 띄어쓰기를 하기 때문에 '공백' 구조를 많이 활용한다. 로그 구조가 다음과 같을 때...
2018-02-11
Wireshark는 maxmind 데이베이스를 이용해서 IP의 지리정보 매핑을 지원한다. 그런데 엘라스틱서치도 같은 방식으로 해당 기능을 지원한다. 다음은 아파치 웹로그 연동을 위한 Logstash 설정. maxmind 데이터베이스는 이미 내장되어 있기 때문에 대상 필드를 geoip 필터로 지정해주기만 하면 된다. 다음은 필터링 결과. 국가 코드 및 이름, 위경도 정보 등이 보인다. 다음은 위경도 정보를 이용한 'Coordinate Map' 생성 결과. 이때 위경도 정보를 갖는 geoip.location 필드는 반드시 geo_point 데이터 타입을 가지고 있어야 하는데, 자동으로 지정해주는 인덱스명을 사용한다면 신경쓸 게 아무 것도 없다. 엘라스틱서치가 알아서 다 해주기 때문....
더보기