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 |