본문 바로가기
elastic-stack

Elasticsearch? Kibana? Logstash? - Elastic Stack

by jiseok.woo 2020. 1. 5.
반응형

 

 

작년에 회사 프로젝트를 진행하면서 Elasticsearch를 처음 접했다.

외부 협력사에 개발 의뢰를 했었는데 협력사에서 mysql과 함께 elasticsearch를 사용했다.

프로젝트가 대용량의 이기종 로그들을 한데 수집하는 내용이었는데, 검색 속도가 빠르다며 elasticsearch를 사용했었다.

프로젝트를 진행면서 협력사가 하도 그지같이 개발해오고 뭐 다 안된다고 궁시렁궁시렁대길래...

너무 답답한 나머지 elasitcsearch에 대해 직접 공부해보자며 Elastic Stack에 관심을 갖기 시작했다.

 

그렇다면 Elasticsearch가 정확히 뭘까?

위키백과에서는 아래와 같이 설명하고 있다.

 

일래스틱서치(Elasticsearch)는 루씬 기반의 검색 엔진이다. HTTP 웹 인터페이스와 스키마에서 자유로운 JSON 문서와 함께 분산 멀티테넌트 지원 전문 검색 엔진을 제공한다. 일래스틱서치는 자바로 개발되어 있으며 아파치 라이선스 조항에 의거하여 오픈 소스로 출시되어 있다. 공식 클라이언트들은 자바, 닷넷(C#), PHP, 파이썬, 그루비 등 수많은 언어로 이용이 가능하다. 일래스틱서치는 가장 대중적인 엔터프라이즈 검색 엔진으로 그 뒤를 루씬 기반의 Apache Solr가 잇는다.
일래스틱서치는 로그스태시(Logstash)라는 이름의 데이터 수집 및 로그 파싱 엔진, 그리고 키바나(Kibana)라는 이름의 분석 및 시각화 플랫폼과 함께 개발되어 있다. 이 3개의 제품들은 연동 솔루션으로 사용할 목적으로 설계되어 있으며이를 "일래스틱 스택"(Elastic Stack, 과거 이름: ELK 스택)으로 부른다.


출처 : 위키피디아 -  https://ko.wikipedia.org/wiki/일래스틱서치

 

전문가들은 저 말을 보면 한번에 알아듣겠지?

난 전문가는 아니므로 하나씩 짚어보자...

 

루씬(Lucene)은 Apache 프로젝트 중 하나로 java로 개발된 검색엔진 관련 라이브러리라고 보면 될 것 같다.

즉, elasticsearch는 일종의 검색엔진이다. 일반적으로 알고 있는 데이터베이스(mysql, oracle 등)와 유사하지만 저장된 데이터를 검색하는데에 특화되어 있다고 볼 수 있겠다.

elasticsearch는 기본적으로 HTTP 기반의 Restful API를 통해 데이터를 관리하며, json 형식으로 데이터를 관리한다.

mysql과 비교해보자면, mysql은 mysql-client를 통해 DB에 접속하고 sql로 데이터를 관리한다.

elasticsearch는 mysql 처럼 별도 클라이언트 없이 HTTP에서 제공하는 GET/POST 등의 method를 이용해 데이터를 관리한다.

이게 무슨 말인지 정확히 와닿지 않는다면.. 뒤편의 예제를 보면 쉽게 이해가 갈테니 참아보자..

 

 

elasticsearch는 logstash, kibana 라는 솔루션들과 함께 elastic stack으로 불린다.

이전에는  ELK(elasticsearch logstash kibana) stack으로 불렸었는데 언젠가부터 elastic stack으로 명칭이 바뀌었다.

 

Elastic Stack Diagram (출처 : elastic blog - https://www.elastic.co/kr/what-is/elk-stack)

 

logstash는 이름에서 유추 가능하듯이 각종 로그들을 수집하는 솔루션으로 다양한 소스들(syslog, kafka, snmp 등등)로부터 로우 데이터를 받아서 필터를 통해 원하는 데이터만 추출해 elasticsearch에 저장할 수 있도록 해주는 아주 고마운 솔루션이다.

 

kibana는 elasticsearch에 저장된 데이터들을 시각적으로 보여주는 솔루션인데 그 기능이 어마어마하다. 원하는 종류의 차트들을 만들고 그 차트들을 활용해 dashboard를 구성해 한눈에 보기 쉬운 화면을 설계할 수도 있다. 시각적으로 표현할 수 있는 정말 다양한 기능들을 제공한다. (심지어 머신러닝 기능도 있다.)

 

이외에 beats라는 솔루션이 있는데, logstash와 유사하게 로그들이나 데이터들을 수집하는 역할을 한다. logstash는 외부에서 들어오는 데이터를 파싱하거나, 직접 DB등에 접속해 데이터를 가져오는 등의 역할을 한다면 beats는 로그나 데이터들을 수집해 logstash나 elasticsearch로 전송해주는 역할을 담당한다. beats도 역시 filebeat, packetbeat, matricbeat, heartbeat 등 다양한 데이터의 수집을 지원하고 있다.

 

 

 

정리해보자면, elastic stack은 위 그림 처럼 beats와 logstash가 데이터 수집 역할을 하고 elasticsearch에 데이터들이 쌓이게 된다. 그리고 elasticsearch에 쌓인 데이터를 kibana를 통해 원하는대로 시각화해 분석/모니터링에 사용할 수 있게 된다.

정말 완벽한 삼박자가 아닌가... 한번 써보면 정말 그 매력에 흠뻑 빠질 수 밖에 없는 elastic stack인 것 같다.

 

 

일단 이번 글에서는 이정도로 elastic stack의 느낌만 정리해보고 다음 글에서 elasticsearch에 대해 자세히 정리해봐야겠다.

 

반응형

댓글