0. Elastic Stack 소개
- Elastic Stack (ELK stack) 은 Elastic Search, Logstash, Kibana, Beats)를 묶어서 이르는 말이다.
- 각 컴포넌트 별로 대략적인 역할은 다음과 같다.
- Elastic Search : 로그 저장 및 검색
- Logstash : 데이터 입출력 변환 기능 (Beats 도입 이전엔 수집까지 담당)
- Kibana : 로그 시각화 및 관리
- Beats : 데이터 수집 엔진
1. Elastic Search
- Elastic Search는 Elastic Stack의 심장이라고 부른다.
- 기본적으로 모든 데이터를 색인하여 저장하고 검색, 집계 등을 수행하며 결과를 클라이언트 또는 다른 프로그램으로 전달하여 동작하게 한다.
- Elastic Search는 다음과 같은 특징들을 가지고 있다.
- 오픈소스
- 실시간 분석
- 전문 검색 엔진
- RESTful API
- 멀티테넌시 (multitenancy)
- 전문 검색 엔진
- 사용자 관점에서는 JSON 형식으로 데이터를 관리하지만 ES 내부적으로는 역색인(inverted file index) 구조로 되어 있어 효율적인 전문 검색이 가능하다.
- 역색인이란 text 데이터를 토큰화하여 해당 토큰을 기준으로 인덱스를 생성하는 방식이다.
- 멀티테넌시
- 인덱스들은 서로 다른 저장소에 분산되어 저장되는데, 떨어져 있는 서로 다른 인덱스들을 별도의 커넥션 없이 하나의 질의로 검색하고, 결과를 하나의 출력으로 도출하는 것을 말한다.
2. Logstash
- ES에서 필요한 데이터 수집도구의 역할을 한다.
- Logstash는 데이터 처리를 위해서 크게 다음과 같은 과정들을 거치게 된다.
- 입력 (inputs) : 다양한 데이터 저장소로부터 데이터 입력 받음
- 필터 (filters) : 데이터를 확장, 변경, 필터링 및 삭제 수행
- 출력 (outputs) : 다양한 데이터 저장소로 데이터를 전송
3. Kibana
- Kibana는 ES를 가장 쉽게 시각화할 수 있는 도구이다.
- 검색, aggregation의 집계 기능을 이용해 ES에 특화되어 결과를 시각화할 수 있다.
4. Beats
- Beats 이전에 Logstash는 수집 기능을 동시에 담당했는데 너무 다양한 기능 때문에 프로그램 부피가 컸고 실행에 많은 자원을 필요로 했다.
- 이렇게 거대한 프로그램을 모든 단말 시스템에 설치하는 것은 큰 부담이었음.
- Beats는 데이터 수집 역할을 대신하는 매우 가벼운 도구이다.
출처 : ref. https://esbook.kimjmin.net/