RDBMS에 있는 data를 스케줄링과 쿼리를 사용해 Elasticsearch로 접근하는 다양한 플러그인이Logstash에 존재한다. 

참고: https://wooyoung85.tistory.com/52     

 

하지만 RDBMS가 아닌 Elasticsearch에서 매일 새로 유입된 data만  또다른 elasticsearch를 거쳐서 logstash를 통해 output 파일로 만들 수 있는지 확인하고자 했다. 

 

Trouble Shooting

 

 

input에 file과 elasticsearch 2개를 설정

 

※ 아주 기본적인 사실이지만 하나의 logstash에서 2개의 input을 받을 수 없다. 하지만 output은 병렬처리가 가능하다.

 

elasticsearch에 저장한 index를 logstash의 schedule기능을 통해 하루치의 data만 output으로 만든다.

 

이때 output 파일은 csv파일로 만들기로 정했다.

 

 

우선, logstash의 scedule기능은 cron문법과 유사하다. 

 

▶cron 표현식

 *  *  *  *  *    수행할 명령어
┬ ┬ ┬ ┬ ┬
 │   │    │   │   │
 │   │    │   │   │
 │   │    │   │  └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
 │   │    │ └───────── 월 (1 - 12)
 │   │   └───────── 일 (1 - 31)
 │  └───────── 시 (0 - 23)
└───────── 분 (0 - 59)

 

logstash conf파일

input: 엘라스틱 인덱스 (elastic홈페이지에 있는 sample data 활용)
output: csv파일(필드로 _id값, _source안에있는 FlightNum DestCountry timestamp OriginCountry) 

=> 새로 유입된 데이터를 지속적으로 체크할 수 있도록 로그스태시 스케줄 기능과 쿼리를 이용

위의 파일에서 %{_id}부분이 csv파일에 나오지 않았다.

왜냐하면 _index, _type, _id, _score의 값들은 Elasticsearch만을 위한 값이기 때문에 따로 export할 수 없는 값들이다.

이때, 값으로 나올 수 없는 값들은 logstash에서 공백으로 처리한다.

 

+

※ timestamp와 @timestamp 구분
timestamp: 클라이언트 요청을 마친 시간 -> web log 시간
@timestamp: logstash에서 전처리 과정을 걸친 날짜데이터 -> parsing 된 시간

 

따라서 1분 단위로 elasticsearch에 새롭게 들어온 data를 csv파일로 만드는 conf파일은 다음과 같다.

 

잘못된 내용이나 추가할 내용은 댓글로 남겨주시면 감사하겠습니다~!

'ElasticSearch' 카테고리의 다른 글

Elastic Stack에서 한국어 NLP사용  (0) 2022.06.02
조건문 사용(If Else 문)  (0) 2022.04.29
ElasticStack에 대해  (0) 2022.03.15

+ Recent posts