본문 바로가기

ELASTIC STACK

ELK Stack (Elsatic Stack)이란? 개념, 정의 소개

현재 많은 기업에서는 로그 기록 및 수집에 대한 중요성을 매우 강조하고 있다. 안정된 시스템을 갖추려면 로그에 관한 분석은 필수적이다. 특히, 분산 환경에서 빠르고 쉽게 시스템의 로그 및 서비스 데이터를 수집하고 분석하는 기술을 갖기 위해선 ELK Stack을 필수적으로 알고 있어야 한다. 따라서, ELK Stack을 소개해보려고 한다.

 

우선, ELK는 Elasticsearch, Logstash 및 Kibana의 머리글자로 이루어진 프로젝트이다.

최근에 경량의 단일 목적 데이터 수집기인 Beats가 추가되면서 현재 ELK Stack으로 통틀어 얘기하고 있다.

세 모듈은 각각 독립된 기술이기에 필요에 따라 일부만 사용이 가능하나, 호환성에 매우 뛰어나기 때문에 같이 사용하는 것을 추천한다.

 

그렇다면 ELK Stack을 알기 위해선 각각의 오픈소스 플랫폼이 무엇을 의미하는 지 알아보자.

 

먼저 간단하게 ELK Stack의 구성 요소를 다음 표에서 확인할 수 있다.

ELK 구성 모듈 핵심 기술 요소 비고
Elasticsearch 로그 저장 및 검색 실시간 분석, 전문 검색 엔진, RESTful API, 클러스터 구조
Logstash 로그 수집 파이프라인 데이터 수집 및 가공, 다양한 유형의 소스로부터 로그 수집 가능, 플러그인
Kibana 데이터 시각화 Discover, Visualize, Dashboard 3개의 기본 메뉴와 다양한 App 들로 구성되어 있고, 플러그인을 통해 App의 설치가 가능
Beats 로그수집 Golang, 경량 수집기 포함, 로그스태시와 혼합하여 많이 사용

 


1. Elasticsearch 개념

Elasticsearch란 아파치 루씬(Lucene) 기반의 오픈소스 실시간 분산 검색 엔진으로 JSON 기반의 비정형 데이터 분산 검색 및 분석을 지원한다. 간단한 RESTful API, 분산형 특징, 빠른 속도, 높은 확장성으로 잘 알려져 있으며, Elastic Stack의 중심 구성 요소이다.

쉽게 말하자면 데이터베이스 역할을 하면서 (데이터의 저장) 데이터의 분석 및 관리까지 해준다.

2. Logstash 개념

Logstash는 실시간 파이프라인 기능을 가진 오픈소스 데이터 수집 엔진으로, 데이터를 입력 받아 실시간으로 변경하고 사용자가 원하는 목적지로 데이터를 정규화 할 수 있다. 파이프라인은 입력(INPUTS), 필터(FILTER), 출력(OUTPUTS) 순으로 구성되어 있다. ELK에선 가공된 데이터를 Elasticsearch로 전달해주는 역할을 한다.

쉽게 말하자면 데이터를 가공하고 변환하여 전달하는 역할을 한다.

3. Kibana 개념

Kibana는 ELK을 기반으로 구축된 무료 오픈 소스 프론트엔드 애플리케이션으로, Elasticsearch에서 색인된 데이터를 검색하고 시각화하는 기능을 제공한다.  Kibana는 Elasticsearch 데이터를 시각화하고 Elastic Stack을 탐색하게 해주는 무료 오픈 소스 인터페이스이다.  키바나는 다음과 같은 핵심 기능을 제공한다.

  • 데이터 분석과 시각화 툴: 오픈소스 기반의 데이터 탐색 및 시각화 도구 제공
  • 엘라스틱 관리: 보안, 스냅샷, 인덱스 관리, 개발자 도구 등을 제공
  • 엘라스틱 중앙 허브: 모니터링을 비롯해 엘라스틱 솔루션을 탐색하기 위한 포털

이외에도 수행할 수 있는 기능들이 매우 많다.

4. Beats 개념

Beats는 특정 목적을 위한 데이터 수집기용 플랫폼이다. 경량 에이전트로 설치되어 수백 개 또는 수천 개 데이터를 Logstash 또는 Elasticsearch로 전송한다.  고(Go) 프로그래밍 언어로 작성된 경량 프로그램으로서 가볍고 사용하기 쉬운 데이터 수집기이다. 로그 수집을 원하는 시스템에 큰 부담을 주지 않으며 로그스태시, 엘라스틱서치와 연계해 다양한 시스템의 이벤트 수집이 가능하다. 데이터 수집의 역할을 하던 Logstash의 역할을 대신 하며, 오로지 데이터 수집만을 담당하는 모듈로서 동작한다. 또한 수집하고자 하는 데이터의 유형별로 원하는 Beat를 이용하면 된다.

 

다음은 Beats의 종류와 사용 목적을 알려주는 표이다.

 

Beats 명 설명
파일비트
(filebeat)
로그 파일을 실시간으로 읽어 들여 전송. 가장 많이 사용되는 비트
하트비트
(heartbeat)
서비스가 살아 있는지 확인 및 모니터링
메트릭비트
(metricbeat)
운영체제 포함 서비스로부터 주기적으로 통계 지표 수집
패킷비트
(packetbeat)
네트워크 패킷 분석기로 네트워크 데이터 수집
오딧비트
(auditbeat)
리눅스의 시스템 보안 정보를 감사하는 auditd에서 생성하는 로그 수집
저널비트
(journalbeat)
리눅스 systemd로 실행되는 서비스들에 대한 로그 수집
펑션비트
(functionbeat)
클라우드의 서버리스 환경에서 사용 가능. 아마존의 큐 데이터 등을 수집
윈로그비트
(winlogbeat)
윈도우에서 발생하는 이벤트 로그 수집
커스텀 비츠
(custom beats)
오슨소스 커뮤니티에서 만든 비츠. 아파치 비트, 카프카비트, 엔진엑스비트 등 공식 지원하지 않더라도 유용한 비츠들이 이이 많이 만들어져 있음

 

'ELASTIC STACK' 카테고리의 다른 글

Elasticsearch 구조 및 윈도우 설치 방법  (0) 2022.03.16