# ELK 기본 활용
1. 개요
-
Elasticsearch는 검색서비스를 제공하는 검색 시스템 기반의 검색엔진
-
Elastic Stack = Elasticsearch + Logstash + Kibana
-
대량의 데이터를 빠르게 수집, 분석
-
프로메테우스는 Pull 방식 / Elastic은 Push 방식
-
NoSQL 계열
- Multi-Storage에 데이터를 분산, 저장
-
분산형 RESTfull 검색 및 분석 엔진
-
수집 : 검색엔진의 목적에 맞게 사용자가 필요로 하는 정보를 준비하는 과정
-
색인 : 수집된 내용을 분석하여 특정 데이터를 빠르게 찾을 수 있도록 저장하는 과정
- 형태소 분석을 통해 최소 단위의 의미 있는 단어 추출
- 역색인 방식으로 데이터를 저장
- 형태소 분석 : 의미를 가지는 최소 단위로 분리하는 과정(Tokenizer+Filter)
- 검색 : 사용자로부터 검색 요청을 받아 검색 결과를 변환하는 과정
2. Elastic Stack
2-1. Beats
-
경량 에이전트로 설치되어 데이터를 Logstah or Elasticsearch로 전송하는 도구
-
Packetbeat / Filebeat / Metricbeat / Winlogbeat / Heartbeat / Auditbeat
-
Filebeat
- 내부 모듈을 통해 일반적인 형식의 로그 데이터를 단일 명령으로 간편하게 수집, 구문 분석, 시각화 가능
2-2. Logstash
-
플러그인을 이용해 데이터 집계 및 보관, 서버 데이터 처리
-
파이프라인으로 데이터를 수집하여 필터를 통해 변환 후 Elasticsearch로 전송
-
Input - Filter - Output 구조로 구성
2.3 Kibana
-
시각화 툴
-
HTML+Javascript 엔진
2.4 Elasticsearch
-
아파치 루씬 기반 오픈소스 검색엔진
-
주로 REST API를 이용해 처리
2.5 용어
- Index
- Indexing을 통해 검색 가능 구조로 변환된 데이터를 저장하는 저장 공간
- 유사한 특성을 갖는 문서들의 집합
- 기존 RDB의 Database와 같은 의미
- Type
- Index 내에서 하나 이상의 Type을 정의
- 기존 RDB의 Table과 같은 의미
- Document
- Index를 생성할 수 있는 기본 정보 단위
- JSON으로 표현
- 기존 RDB의 Row와 같은 의미
- Field
- 기존 RDB의 Column과 같은 의미
- Shard
- Shard를 이용하여 Index를 여러 조각으로 분리(분산) 저장
- 수평적으로 콘텐츠 볼륨을 split/scale 가능
- 작업을 분산 및 병렬 처리 가능하여 성능 / 처리량 향상