본문 바로가기

데이터베이스/ELK

[ELK] ELK Stack 이해하기

 

1. ELK Stack

ELK는 3가지 오픈소스 소프트웨어 Elastic Search, LogStatsh, Kibana의 조합을 말합니다. 
각 제품이 연동되어 데이터 수집 및 분석 툴로서 동작합니다.
Elastic이라는 기업명에 걸맞게 높은 확장성과 뛰어난 이식성을 가지고 있어 다른 여러가지 툴과도 연동이 가능합니다.

 

1) ElasticSearch

분산현 검색 엔진

  • ElasticSearch는 Apache Lucene기반으로 구축되어 있는 분선형 및 개방형이 특징인 검색엔진이다.
  • Lucene이 JAVA로 만들어져 있기 때문에 ElasticSearch도 JAVA로 개발되었다.

실시간 분석 시스템

  • 클러스터가 실행되고 있는 동안 계속해서 데이터가 입력되고, 실시간에 가까운 속도로 검색 및 집계 수행
  • 역인덱스(Inverted File Index) 데이터 구조를 사용하여 풀텍스트(Full Text)검색이 가능하다.
  • RDB와 비슷하나 검색 및 분석 성능은 훨씬 뛰어나다.

 

데이터저장 역할

  • LogStash를 통한 수산된 데이터를 저장소에 저장하는 역할
  • 데이터를 중심부에 저장하여 예상되는 항목을 검색하고, 예상치 못한 항목을 밝혀낼 수 있다.
  • 정형, 비정형, 위치정보, 매트릭 등 원하는 방법으로 다양한 유형의 검색 수행 및 결합이 가능하다.
  • 표준 Restfil API와 JSON을 사용한다.

RDBMS와 ElasticSearch 비교

RDBMS ElasticSeach
Datebase Index
Table Type
Row Document
Column Field
Schema Mapping
Select GET
Update PUT
Insert POST
Delete DELETE
EX. (CRUD 공부하면 이해 가능할 것임..)
curl -XGET localhost:9200/DBMS/TBLE/1
select * from table where id = 1

curl -XPOST localhost:9200/DBMS/TABLE/1 –D ‘{values}’
insert into table values (values)

 

Port : 9200 (JSON 인터페이스)

 

2) LogStash

데이터수집 엔진

  • 오픈소스 서버특 데이터처리 파이프라인
  • JRuby로 되어있어 Ruby로 개발되어 JAVA Runtime 가상머신 위에서 돌아간다.
  • 출력 API로 ElasticSearch를 지원하기 시작하면서 Logstash (입력) -> ElasticSearch (출력)을 보편화
  • 다양한 플러그인 제공으로 인해 여러 유형의 로그 수집 및 인덱싱이 가능

 

데이터전송 역할

  • 다양한 소스에서 동시에 데이터를 수집하고, 변환하여 stash 보관소로 보낸다.
  • 수집할 로그를 선정해서 지정된 대상서버에 인덱싱하여 (정규화하여) ElasticSearch 등의 목적지로 전송하는 역할

 

Port : 5601 (웹 인터페이스)

 

3) Kibana

 

웹 프론트엔드 서비스

  • 데이터를 검색하고, 시각화하는 오픈소스 프론트엔드 서비스
  • ElasticSearch로부터 집계결과를 가져와서 차트와 그래프로 데이터를 웹으로 시각화한다.
  • 시각화를 담당하는 HTML + JavaScript 엔진

 

데이터시각화 역할

  • Discover, Visualize, Dashboard 메뉴와 다양한 App으로 구성되어 있으며 플러그인으로 확장가능
  • Discover : ElasticSearch로부터 인덱싱된 소스데이터 검색메뉴
  • Visualize : 시각화도구 (차트, 그래프, 매트릭, 검색 및 지도 등)들을 조합하여 단일페이지에 모아놓고 인사이트 제공

 

Port : 5044 (Beats 인터페이스)

 

 

4) Beats

  • 서버에 에이전트 형식으로 설치하는 오픈소스 데이터 수집기
  • Beats는 데이터를 ElasticSearch에 직접 전송할 수 있으며, LogStash를 통해서 데이터를 전송할 수도 있다.

 

 

2. Data Flow

 

ELK Stack의 데이터 흐름은 어떻게 될까?

1. 1개 이상의 수집할 Data 발생 서버에서 beats가 특정 트리거에 의해 logstash (ElasticSearch 가능)로 Data를 전송합니다.

2. logstash로 전달된 Data를 커스터마이징이 가능한 필터를 통해 가공하여 ElasticSearch로 전달합니다.

3. ElasticSearch로 전달받은 Data를 서버(ElasticSearch)에 저장합니다.

4. Kibana에서 연동되어있는 ElasticSearch에 저장된 데이터 셋을 토대로 시각화를 제공합니다.