본문 바로가기

Dot Database/Elastic Search

데이터 분석 플랫폼 Elastic Stack: Elasticsearch, Kibana, Logstash, Beats

    Elastic Stack

    Elastic은 검색 엔진을 만드는 회사이다. 해당 회사의 Stack을 예전에는 Logstash, ElasticSearch, Kibana를 묶어서 ELK Stack이라는 이름으로 많이 불리었지만 지금은 Beats까지 포함하여 Elastic Stack으로 불리고 있다.

     

    Elastic Stack에는 Elasticserach, Kibana, Beats, Logstash가 이에 속해있다.

    • Elasticsearch: 데이터 저장, 쿼리, 검색, 분석 등 모든 처리를 하는 가장 핵심 엔진이다
    • Kibana: Elasticserach 데이터 시각화 및 관리 등 사용자가 편하게 사용할 수 있는 클라이언트 기능을 제공한다
    • Logstash: 데이터를 수집하는 수집 도구이다. 과거 Logstash를 사용하고 있다가 Logstash는 Elasticsearch뿐만 아니라 다양한 데이터 시스템들로부터 데이터를 수집하고 다시 전송할 수 있는 ETL 도구이다.
    • Beats: 단일 목적의 데이터 수집기 플랫폼인 Beats는 수백 수천 개의 장비와 시스템으로부터 Logstash나 Elasticsearch에 데이터를 전송한다. Logstash를 모든 데이터 소스에 있는 장비마다 전부 설치하는 부분이 번거로웠기 때문에 그런 부분을 담당하는 Beats를 만들게 되었다.

    Elastic Stack

     

     

    Elastic 아키텍처

    ELK Stack

    1. Logstash: 다양한 형태(DB, CSV 등)의 로그 또는 트랜잭션 데이터를 필터 기준에 따라 수집, 집계, 파싱한다. 그렇게 수집된 데이터를 ElasticSearch 엔진에 전달한다.
    2. ElasticSearch: Logstash로 부터 받은 로그 및 데이터를 검색 및 집계하여 원하는 정보를 구한다.
    3. Kibana: 마지막으로 Elasticserach의 빠른 검색을 통해 로그 및 데이터를 원하는 형태에 따라 시각화하고 관리 및 모니터링한다. 

     

     

    ELK(Elasticsearch, Logstash, Kibana)

     

    Beats + ELK (Elastic Stack)

    Beats는 데이터 수집, 대상이 되는 파일 또는 시스템 정보에 대한 데이터 지정된 시간 간격으로 데이터 수집 및 전달한다. 수집된 데이터에 대해서 Elasticsearch 또는 Logstash로 전달한다. Beats는 세부적으로 기능에 따라 나누어진다.

    • Filebeat: 로그 파일, 대용량 CSV 파일 등의 데이터를 수집 (AI 학습활용, 초기 저장된 데이터 읽는 시간 용량에 따라 필요)
    • Metricbeat: 시스템 실행중인 프로세스 정보, 서버의 CPU, 메모리 사용률, DBMS나 Docker등의 서비스 메트릭도 수집
    • Packetbeat: 네트워크 패킷 데이터를 수집. 프로토콜 및 서비스 별로 수집 
    • Winlogbeat: Window OS용 window 이벤트 관련 로그 정보 및 기타 윈도우용 로그 데이터 수집
    • Heartbeat: Uptime Monitoring. 다른 프로세스 가동 시간 모니터링, 다양한 시스템을 동시에 모니터링할 떄 유용

     

     

    Beats + ELK

     

    Elasticsearch

    Elaistcsearch는 확장성이 뛰어난 Apache Lucene기반의 Java 오픈소스 분산 검색 및 분석 엔진이다. 

    • 분산 시스템이기 때문에 쉽게 스케일 아웃(Scale-out)이 가능하고 고가용성(HA)을 보장한다.

     

    검색 엔진

    검색 엔진을 말하면 보통 구글, 네이버, 다음과 같은 웹 포털 검색엔진을 생각하기 쉽다. 그러나 검색엔진은 더 많은 기능을 포함하고 있다. 단순히 텍스트 뿐만 아니라 숫자, 날짜 등 다양한 데이터를 복합해서 사용하고 있다. Elastic은 정말 여러 산업에서 많이 사용되고 있다.

    • 고객이 판매 제품을 검색할 수 있는 온라인 웹 스토어를 운영한다. 이 경우에는 Elasticsearch를 사용하여 전체 제품 카탈로그 및 재고 정보를 저장하고 그에 대한 검색 및 자동 완성 제안 기능을 제공할 수 있다.
    • 이 외에도 모바일 위치 정보(우버), Tinder같은 경우 남녀 이상형을 찾는 서비스. 이상형 프로필을 입력하고 그에 맞는 이성을 찾는 서비스도 Elasticserach를 사용한다.

     

    데이터 집계 및 분석

    Elasticsearch는 검색 기능만 있는 게 아니라 다양한 데이터들을 집계 및 분석하는 기능도 있다.

    • 실제로 액티비전 블리자드는 이를 사용해서 전세계에있는 배틀넷 서버들의 수많은 Metric들을 모니터링하고 있다. 많은 게이머들이 게임들을 하고있는데 특정 서버에 문제가 생겼다거나 다운이 되었다거나 트래픽이 몰린다거나 하는 그런 정보들을 Elasticsearch를 사용한 시스템으로 집계 및 분석해서 모니터링하고 있다.
    • 로그 또는 트랜잭션 데이터를 수집하고 이 데이터를 분석하고 마이닝하여 추이, 통계, 요약 정보를 얻거나 이상 요인을 알아내려 할 수 있다.
    • 분석/비즈니스 인텔리전스 기능이 필요하며 방대한 데이터(수백만 또는 수십억 개의 레코드)를 대상으로 신속하게 조사, 분석, 시각화, 임시 질의를 수행하고 싶다. 이 경우에는 Elasticsearch를 사용하여 데이터를 저장한 다음 Kibana를 사용하여 데이터 중 중요한 요소를 시각화할 맞춤형 대시보드를 만들 수 있다. 또한 Elasticsearch 집계 기능을 사용하여 데이터에 대한 복잡한 비즈니스 인텔리전스 쿼리를 수행할 수 있다.
    • 다양한 유즈 케이스 보러가기

     

    따라서 검색이라는 행위는 텍스트 검색, 메트릭 분석, 로그 분석 등을 다 포함한다고 생각하면 된다.

     


    참고

    Elastic Stack 제품 및 기능 소개