ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ELK Stack] Logstash의 특성과 용도
    Dahum Library/ELK Stack 2020. 1. 8. 16:23

    es의 기본적인 이해를 위한 정리는 이쯤 해두고 ELK Stack에서 L에 해당하는 Logstash에 대해서 이야기 해보려고 한다.

     

    우선 앞서 여러번 언급했다싶이 es는 검색엔진 외에도 다양한 데이터소스들이 만들어내는 로그분석시스템으로도 많이 쓰인다.

    개인적으론 처음 es를 접했을 때는 검색엔진에대한 이해가 아예 없었어서 이게 그냥 원본 데이터소스(DB같은)에 연동해놓으면 그 안에서 형태소 분석을 하든 뭘 하든 해서 검색을 하는건줄 알았다.(그런것도 있긴 있나..?) 혹은 아예 es가 데이터소스의 역할까지 하는건줄 알았다. (그런 경우도 분명 있다.)

     

    하지만 es의 자체 데이터 보관소인 index는 말그대로 '검색용' 스토리지로 사용될 때가 많고 대부분의 경우

    이 스토리지를 별도의 데이터소스와 연동하여 지속적으로 sync를 맞춰서 검색 시스템을 구현한다. 이 때 필요한게 바로 FileBeat나 Logstash, MQ와 같은 것들이다. 이것이 바로 Elasticsearch 단독으로 쓰이기보다 ELK Stack이라는 세트(?) 많이 쓰이는 이유다.

     

    참고 : [MQ란?] https://sarc.io/index.php/miscellaneous/1615-message-queue-mq

     

    datasource - elasticsearch synchronize

    이런식으로 원본 Data Source로부터 지속적으로 Collecting작업을 하면서 변경분에 대한 Sync를 Handling할 수 있다.

     

    이제 Logstash가 Elasticsearch와 왜 함께 쓰이는지에 대해 알아봤으니 Logstash 그 자체에 대해서 알아보자.

     

    Logstash는 간단하게 플러그인 기반의 실시간 데이터 수집 파이프라인이다.

    여러 다른 소스와 연동할 수 있는 다양한 플러그인이 제공되고 또 개발되고있다. 이 때문에 굉장히 다루기가 간단하고 직관적이다.

     

    Logstash Process

    위의 그림처럼 하나의 Logstash 인스턴스에 복수의 파이프라인을 놓을 수 있고 각 파이프라인 안에서는 Input, Filter, Output과 같은 프로세스가 이루어진다. 이 때 각 프로세스를 간편하게 만들어주는 광범위한 플러그인들이 아주 잘 되어있다.

     

     

    Logstash 예시

    위의 예제는 실제로 Logstash를 사용하는 예제인데 처음봐도 금방 의미를 파악할 수 있을 정도로 직관적이고 간단한 인터페이스(플러그인)을 제공하고 사용하기도 쉽다.

     

    위의 경우 input{}, filter{}, output{} 세개의 플러그인 에서 file로부터 input을 받아 filter에서 별도의 가공을 거치지 않고 stdout{}으로 codec은 rubydebug를 지정하여 출력하도록 하는 간단한 예제이다.

     

    이 다음부터는 실제로 간단한 검색엔진 모델을 구현하는 과정을 서술하면서 알아보려고한다.

     

    참고문서 : [Logstash 공식 Document]

    https://www.elastic.co/guide/en/logstash/master/index.html

     

     

     

     

     

     

     

     

    댓글

Designed by Tistory.