Monitoring

ELK Stack이란?

Joon0464 2021. 7. 29. 17:22

ELK Stack이란?

ELK는 로그 및 데이터 분석도구로 Elasticsearch, Logstash, Kibana의 세 가지 오픈소스 프로젝트의 앞 글자 이니셜이다.

  • Elasticsearch는 검색 및 분석 엔진이다.
  • Logstash는 여러 소스로부터 데이터를 수집 및 변환하여 Elasticsearch와 같은 stash로 전송하는 서버 사이드 데이터 처리 파이프라인이다.
  • kibana는 사용자가 수집된 데이터를  Elasticsearch에서 차트와 그래프를 사용하여 데이터를 시각화 해준다.

ELK 솔루션에 Beats가 추가되면서 ELK Stack 이라고 불린다.

  • Beats는 서버에 에이전트로 설치하여 다양한 유형의 데이터를 Elasticsearch 또는 Logstash로 전송하는 오픈 소스 데이터 발송자이다.

Elasticsearch

JSON 기반의 분산형 오픈 소스 RESTful 검색 엔진으로 사용하기 쉽고, 확장 가능하며, 유연하다는 장점이 있다. Apache Lucene 기반으로 구축되었으며 분산형 및 개방형이라는 특징을 가지고 JAVA로 개발되었다.

대용량 데이터 분석에 많이 사용되는 Hadoop은 배치 기반으로 데이터 수집 -> 분석 -> 결과 도출 루틴으로 실행된다. 하지만 Elasticsearch는 클러스터가 실행되는 동안 데이터가 게속해서 입력되며 동시에 실시간으로 색인된 데이터의 검색 및 집계가 가능하다. 이것이 가능한 이유는 Elasticsearch가 Inverted file index(역인덱스) 데이터 구조를 사용하여 Full text 검색을 지원하도록 설계됐기 때문이다.

 

Logstash

Logstash는 실시간 파이프라인 기능을 가진 오픈소스 데이터 수집 엔진이다. 초기에는 Elasticsearch와 별개의 프로젝트로 시작하여 이후 출력 API로 Elasticsearch를 지원하게 되고 많은 이용자들이 Elasticsearch의 입력 수단으로써 사용학 되면서ELK로 통합되었다. Logstash는 Server-side 데이터 처리 파이프라인으로 다양한 소스로부터 동시에 데이터를 수집하고 통합하며 수집된 데이터를 정규화하여 Elasticsearch로 전송하는 역할을 한다. 거의 대부분의 이벤트를 수집하여 변환이 가능하며 기본 제공되는 코덱을 사용하면 수집 프로세스를 보다 간소화할 수 있다.

 

Kibana

kibana는 Elasticsearch로부터 색인된 데이터인 document, aggregation 집계 결과 등을 불러와 웹으로 시각화하는 오픈소스 프론트엔드 서비스이다. Discover, Visualize, Dashboard 메뉴 및 다양한 App으로 구성되어 있으며, 플러그인을 설치하여 확장이 가능하다. Discover는 Elasticsearch에 색인된 소스 데이터들을 검색하기 위한 메뉴이다. Dashboard는 Visualize 메뉴에서 만들어진 시각화 도구(그래프, 메트릭, 검색 및 지도 등)들을 조합하여 하나의 페이지에 모아 두고 다양한 관점에서 데이터에 요약된 인사이트를 제공한다.