Skip to content

Latest commit

 

History

History
151 lines (95 loc) · 9.37 KB

overview.md

File metadata and controls

151 lines (95 loc) · 9.37 KB

Elastic Stack

  • 빅데이터 파이프라인을 구성하는 플랫폼
Flow

엘라스틱 스택의 구성

elastic-stack

엘라스틱서치 : 분산 검색 엔진

검색 엔진 + 데이터베이스

  • 일반적인 검색 엔진(구글, 네이버)과는 다른 검색 엔진

    • 일반적으로 검색 엔진은 내부적으로 각 도큐먼트를 인덱싱하고 빠르게 검색하는 데 사용하는 기술
  • 엘라스틱서치는 모든 레코드를 JSON 도큐먼트 형태로 입력하고 관리

  • 일반적인 데이터베이스와 마찬가지로, 쿼리한 결과에 대해 일치하는 원본 도큐먼트를 반환

  • 일종의 NoSQL 데이터베이스라고 생각

빠른 검색 및 집계 성능

  • 엘라스틱서치는 텍스트나 도큐먼트의 경우 인덱싱 시점에 분석을 거쳐 용어 단위로 분해되고 역인덱스 사전을 구축

  • 숫자나 키워드 타입의 데이터들은 엘라스틱서치의 집계를 위해 집계에 최적화된 컬럼 기반 자료구조를 저장

    • 이렇게 최적화된 자료구조들을 바탕으로 병렬 처리나 분산 처리 가능
  • 엘라스틱서치가 타 관계형 데이터베이스, NoSQL 데이터베이스보다 빠른 검색과 집계 성능을 실현하는 이유는 검색 엔진인 동시에 데이터베이스이기 때문

    • 이론적으로 충분한 크기의 클러스터가 구성되어 있다면 데이터의 양과 무관하게 1초 이내의 응답 속도를 기대할 수 있음

스코어링 : 연관도에 따른 정렬

  • 단순히 필드값을 기준으로 한 정렬은 어떤 데이터베이스에서도 제공되지만, 엘라스틱서치는 검색어에 대한 유사도 스코어를 기반으로 한 정렬을 제공

    • 복잡한 문자열 콘텐츠에서 검색을 수행할 때 큰 효과를 기대할 수 있음
  • 이외에도 다양한 스코어링 방법을 포함해 사용자가 정렬 방식을 다양하게 정의할 수 있음


아파치 루씬(Apache Lucene)

  • 엘라스틱서치가 제공하는 데이터 타입 별로 최적화된 자료구조 지원이나 스코어링 등의 기능은 루씬에서 비롯된 특징
  • 엘라스틱서치는 이러한 기능을 분산 시스템으로 확장해서 성능, 유연성, 활용성을 개선

키바나 : 시각화와 엘라스틱서치 관리 도구

엘라스틱 스택의 UI

  • 엘라스틱서치는 사용자의 모든 입력을 REST API 형태로 받아들이기 때문에 별도의 도구없이 기능을 잘 활용할 수 있음

  • 하지만 복잡한 요청들을 하나하나 작성하기에는 불편함이 있음

  • 키바나를 통해서 엘라스틱서치에 대한 대부분의 관리 기능, API를 실행할 수 있는 콘솔, 솔루션 및 모니터링 페이지를 제공


로그스태시 : 이벤트 수집과 정제를 위한 도구

로그 수집 및 정제

  • 대량의 데이터를 검색하기 위해 가장 먼저 선행되어야 할 작업은 데이터를 적재하는 것

  • 데이터 수집과 가공 기능을 제공하는 로그스태시를 사용하면 로그, 매트릭, 웹 애플리케이션 등 다양한 소스로부터 로그를 수집할 수 있음

  • 필터 기능을 이용해 비정형이나 반정형 데이터를 분석하기 쉬운 형태로 정제할 수 있고, 엘라스틱서치 외에 다양한 플랫폼으로 정제된 데이터를 내보낼 수 있음

안정성

  • 로그스태시는 엘라스틱서치의 인덱싱 기능을 최적화하기 위한 배치 처리와 병철 처리가 가능하며 영속적인 큐를 사용

  • 이를 통해 현재 처리 중인 이벤트의 최초 1회 전송을 보장하고 데이터 양이 급증하는 부하 상황에서도 안정성을 보장

  • 로그스태시가 아닌 커스텀 애플리케이션을 작성하여 소스 데이터를 수집하는 방법도 존재

    • 하지만 커스텀 애플리케이션으로 구현할 경우 신경써야 할 부분이 많고, 문제 발생 시 디버깅이나 튜닝이 쉽지 않음

비츠 : 엣지단에서 동작하는 경량 수집 도구

경량 수집기

  • 로그스태시의 기능은 충분히 강력하지만 이벤트 정보를 수집하기 위해서는 실제 서비스가 동작하는 호스트에 수집기를 설치해야 하는 경우가 많음

    • 이 경우 로그스태시는 다양한 필터와 설정을 지원하기 만큼 무겁기 때문에 활용도가 떨어짐
  • 엘라스틱 스택에는 이를 위해 파일비트, 메트릭비트 등의 비츠라고 부르는 경량 수집기가 포함


엘라스틱 스택의 용도

  1. 전문 검색 엔진
  2. 로그 통합 분석
  3. 보안 이벤트 분석
  4. 애플리케이션 성능 분석

1. 전문 검색 엔진

전문 : 단순한 문장부터 뉴스 기사나 논문 등 다양한 글의 전체 내용

  • 대상 도큐먼트가 많지 않다면 일반적인 관계형 데이터베이스의 LIKE 질의만으로도 충분히 검색이 가능하지만 도큐먼트 수가 조금만 늘어나도 인덱스의 도움이 없이 빠른 검색은 불가능에 가까움

  • 전문을 빠르고 정확하게 검색하기 위해 전문을 용어(term) 단위로 분석해 인덱싱해두고 이를 기반으로 검색을 수행하는 역인덱싱 기법이 많이 활용

  • 전문 검색은 관계형 데이터베이스와 커스텀 애플리케이션을 이용하여 직접 개발할 수 있지만 완성도와 정확도가 떨어지고 추가적인 공수가 필요하기 때문에 비추

2. 로그 통합 분석

  • 애플리케이션에서 발생하는 로그의 양이 많지 않다면 일반적인 텍스트 에디터나 간단한 쉘 스크립트만으로도 발생되는 로그를 충분히 파악할 수 있음

  • 하지만 많은 로그가 발생되는 경우 로그의 발생 위치를 모두 파악해야 하고, 발생 순서를 추적하는 것도 어려움이 있음

  • 엘라스틱 스택에서는 비츠를 사용하여 적은 리소스로 각 장비의 로그를 빠르게 수집할 수 있고, 로그스태시를 활용하여 필터를 통해 일원화된 형태로 가공하고, 엘라스틱서치의 인덱싱 기능과 텍스트 검색 기능을 통해 흩어진 서비스 로그를 통합해서 분석할 수 있고, 키바나를 통해 직관적으로 모니터링할 수 있음

3. 보안 이벤트 분석

  • SIEM(Security Information and Event Management)나 ESM(Enterprise Security Management) 등으로 불리는 솔루션은 조직 내에 속한 다양한 장비들로부터 보안 이벤트를 수집하고 분석할 수 있게 하려는 목적으로 제작

  • 공격자의 공격 방식의 다변화에 따라 보안 이벤트들은 실시간으로 수집됨과 동시에 실시간 검색과 필터링을 통한 연관 분석과 머신러닝을 이용한 이상 징후 탐지까지 연결되어야 함

  • 키바나에서 제공하는 엘라스틱 SIEM(이벤트 분석)은 비츠 모듈을 통해 애플리케이션, 엔드포인트, 인프라스트럭쳐, 클라우드, 네트워크 등의 다양한 소스에서 수집한 이벤트를 기반으로 엔드포인트 활동, 인증 로그, DNS 트래픽, 네트워크 플로우에서 이상 징후, 불법적인 로그인 시도, 사용자 접근 패턴 등의 문제를 빠르게 찾아낼 수 있음

4. 애플리케이션 성능 분석

  • 엘라스틱 스택은 APM(Application Performance Monitoring) 기능을 제공하기 때문에 애플리케이션 상태를 지속적으로 모니터링할 수 있음

엘라스틱 스택의 연동

카프카와 연동

with-kafka-1

with-kafka-2

하둡 생태계와 연동

with-hadoop-ecosystem

관계형 데이터베이스와 연동

with-db

  • 로그스태시를 활용하여 연동 가능

with-others

유사 제품

구성 목적 비교군
엘라스틱서치 데이터베이스 RDBMS(MySQL, PostgreSQL, ...), NoSQL(MongoDB, ...)
엘라스틱서치 검색 엔진 솔라(Slor)
로그스태시/비츠 데이터 수집 플루언트디(Fluentd)
키바나 시각화 그라파나(Grafana), 태블로(Tableau)
엘라스틱 스택 전체 스플렁크(Splunk)

참고