본문 바로가기

AI/MLOps

[MLOps] 엘라스틱 스택(ELK) 소개 - Elasticsearch, Logstash, Kibana

 

엘라스틱 스택(Elastic Stack)이란?

  엘라스틱 스택이란 빅데이터 파이프라인을 구성하기 위한 오픈소스 데이터 플랫폼을 말한다. 모든 유형의 데이터를 수집, 가공, 저장, 분석 및 시각화하는 소프트웨어를 갖추고 있다. 널리 알려진 오픈소스 프로젝트인 Elastic Search, Logstash, Kibana를 축약해 ELK라고 부르기도 한다. 해당 프로젝트들은 엘라스틱 스택의 구성요소이다.

 

 

엘라스틱 스택의 구성요소

 

 

  • 데이터 수집 및 가공: beats, logstash
  • 데이터 저장: elasticsearch (검색 엔진)
  • 시각화: kibana

하단에서부터 차례차례 살펴보도록 하겠다.

 

 

1. Logstash (로그스태시)

  로그스태시는 데이터 수집과 가공 기능을 제공하며, 로그, 메트릭, 웹 어플리케이션 등 다양한 소스로부터 로그를 수집할 수 있다. 또한 필터 기능을 이용해 비정형이나 반정형 데이터를 분석하기 쉬운 형태로 정제할 수 있고, 엘라스틱서치 외에도 다양한 플랫폼으로 정제된 데이터를 보낼 수 있다. 로그스태시는 형식에 무관하게 데이터를 동적으로 수집, 변환, 전송하는 구조로 되어 있다.

 

 

로그스태시 동작 방식

 

  로그스태시가 단순한 소스 데이터 정제 기능만 수행해주는 것은 아니다. 엘라스틱서치와의 최적화된 연동을 위해 배치 처리와 병렬 처리가 가능하고, 유동적인 처리 방식으로 수집 중인 데이터양이 급증하는 부하 상황에도 안정성을 보장해준다. 그리고 이미 잘 만들어진 플러그인이나 모듈이 많아서 활용하기 쉽다는 장점도 있다.

 

 

2. beats (비츠)

  비츠는 데이터 수집 기능을 제공하는 경량 수집기로, 총 6개의 종류가 있다. 파일비트, 메트릭비트 등은 각각 로그 수집, 시스템 지표 수집 등 특정 목적에 최적화되어 있으며 Golang 언어로 작성되었다(그래서 가벼움). 다양한 필터와 설정을 지원하는 로그스태시만큼 무겁지는 않아서 각 서비스 호스트에 부담없이 설치할 수 있다. 따라서 비츠와 로그스태시를 경우에 따라 종종 혼합해서 사용한다.

 

비츠의 종류와 지표

 

 

3. elasticsearch (엘라스틱서치)

  엘라스틱서치는 엘라스틱 스택의 메인 구성요소이다. 기본적으로는 검색 엔진(search engine)이지만 데이터를 저장하는 DB의 역할도 한다. 엘라스틱서치는 모든 레코드를 JSON 형태로 관리하고 있으며, 텍스트 외에도 숫자나 날짜, IP 주소, geographic 정보 등 다양한 데이터 타입에 대해 최적화되어 있다. 일종의 NoSQL DB라고 생각하면 쉽다.

 

3-1. Characteristics

  • JSON based DS: 요청과 응답 모두 JSON 문서로 주고받고, 소스 저장도 JSON 형태로
  • RESTful: 모든 API는 HTTP 통신을 이용하여 RESTful하게 사용 가능 (접근 용이)
  • many different data sources: logs, metrics, application trace data, etc

3-2. Comparison with RDBMS

 

3-3. Inverted indexing & Scoring

  일반적인 데이터베이스에서는 원하는 도큐먼트를 탐색하는 수단으로 단방향 인덱싱 방법을 사용한다. 특정 키워드를 포함하고 있는 도큐먼트를 찾기 위해서는 모든 도큐먼트의 내용을 읽어서 해당 키워드를 포함하고 있는지 검사를 해야하는데, 이러한 과정을 상당한 연산을 필요로 하며 동일한 요청에 대해서 같은 작업이 반복되어 이루어지게 된다.

  반면, 엘라스틱서치는 텍스트나 도큐먼트의 인덱싱 시점에 형태소 분석을 거쳐 용어 단위로 분해해 역인덱스(inverted index) 사전을 구축한다. 역인덱스는 특정 키워드를 포함하고 있는 도큐먼트들에 대한 primary key를 매핑하는 index table을 생성한다. 이를 활용하여 MongoDB와 같은 다른 NoSQL 제품을 압도하는 빠른 검색 기능을 제공할 수 있게 된다.

 

 

  또한 검색 엔진으로서 엘라스틱서치의 중요한 특징 중 하나는 스코어링(scoring), 즉 연관도에 따른 정렬이다. 단순히 필드값을 기준으로 한 정렬은 어떤 데이터베이스에서도 제공되지만, 엘라스틱서치는 검색어에 대한 유사도 점수를 기반으로 한 정렬을 제공한다(정확히는 relevance score라고 한다). 가장 일반적으로 사용되는 score 알고리즘에는 TF-IDF와 BM25가 있는데, lucene이 default로 BM25를 사용하기 시작하면서 엘라스틱서치도 이를 기본 score 알고리즘으로 채택하였다. 이 외에도 다양한 scoring 알고리즘을 포함해 사용자가 정렬 방식을 다양하게 정의할 수도 있다.

 

3-4. distributed process

  분산 시스템으로서 엘라스틱서치는 복수의 lucene 인스턴스를 병렬로 배치하고 분산 처리해 검색 속도를 무한히 확장할 수 있다. 또한 노드 간 복제가 가능해 일부 노드가 다운되더라도 정상적으로 서비스를 지속할 수 있다. 보통 3개 이상의 노드를 클러스터로 구성하며, 데이터를 샤드로 저장 시 클러스터 내 다른 호스트에 replica를 저장해놓는다.

 

엘라스틱서치 클러스터

 

 

4. Kibana (키바나)

  키바나는 엘라스틱서치 기반의 시각화 도구로, 엘라스틱 스택의 UI를 담당한다. 엘라스틱서치에 대한 대부분의 관리 기능, API 콘솔, 솔루션 페이지들이 모두 키바나에 포함되어 있다. 일반적으로 많이 사용되는 차트와 테이블, 지도 등 다양한 시각화 요소들을 쉽게 구성할 수 있기 때문에 모니터링 툴로 활용된다. 특히 시각화 요소들을 한 화면에 cutomize해 배치하고 실시간으로 업데이트 할 수 있는 대시보드 기능은 엘라스틱 스택의 확산에 큰 공헌을 했다고 할 수 있다.

 

키바나를 이용한 데이터 시각화

 

 

 

 

 

자료출처 : https://www.youtube.com/watch?v=ZP0NmfyfsoM 

https://velog.io/@koo8624/Database-Elastic-Search-1%ED%8E%B8-%EC%97%AD%EC%83%89%EC%9D%B8Inverted-Index%EA%B3%BC-%ED%98%95%ED%83%9C%EC%86%8C-%EB%B6%84%EC%84%9D