E + L + K
Elasticsearch : 분석 및 저장 기능
Logstash : 수집 기능
Kibana : 시각화 도구
1. Elasticsearch
- Apache Lucene 기반의 검색 엔진으로 Logstash를 통해 수신된 데이터를 저장소에 저장하는 역할
- 정형, 비정형, 위치정보, 메트릭 등 원하는 방법으로 다양한 유형의 검색을 수행하고 결합
- 모든 레코드를 JSON document 형태로 입력하고 관리하고 있으며, 일반적인 DB와 마찬가지로 쿼리한 결과에 대해 일치하는 원본 도큐먼트를 반환 (텍스트 외에도 숫자, 날짜, IP 주소, 지리(geo) 정보 등 다양한 데이터 타입에 대해 최적화)
- 모든 통신을 REST API를 이용하도록 만들어 사용하기 쉽고, 확장 가능하며, 유연함
2. Logstash
- 데이터 수집 및 로그 파싱 엔진으로 데이터를 수집하고 변환한 다음 데이터 파이프라인을 따라 인덱싱하여 Elasticsearch 으로 보내는 역할을 담당하는 소프트웨어
- 필터 기능을 이용해 비정형이나 반정형 데이터를 분석하기 쉬운 형태로 정제
- 별도의 코딩 없이 간단한 설정만 해도 로그를 가공 가능 (확장 가능한 200개 이상의 플러그인)
3. Kibana
- 데이터를 시각적으로 탐색하고 실시간으로 분석하는 시각화 도구
- 최근 PT를 만들듯이 시각화할 수 있는 캔버스, 서버에 접속해 tail 명령의 로그를 확인하고 검색할 수 있는 로그, App의 성능 모니터링을 위한 APM 등 많은 활용
- 키바나의 경우 대체 가능한 소프트웨어로 그라파나(Grafana)가 존재
ELK stack
logstash로 로그를 수집하는 것도 충분하지만 기능이 많아 무겁기 때문에 경량적인 수집기를 같이 도입함
Beats는 Golang으로 작성되어 가볍게 이벤트 수집이 가능
장점
- 무료 오픈 소스
- 커스터마이징 가능한 실시간 수집 플랫폼
: 엘라스틱서치, 로그스태시, 키바나를 각각 용도 별로 분리하여 발전하기 때문에 구조적 안정성은 물론 다른 시스템과도 유연한 호환성을 가짐
- 수십 억 건까지 커버 가능한 월등한 성능
-자유 스키마
: JSON 방식의 Key-Value 형식의 데이터를 사용하므로 형식에 자유롭다.
- 인덱스 와일드카드 지원
: 관계형 데이터베이스로 치면 테이블(Table)에 해당하는 개념인 인덱스(Index)의 Union 또는 Join이 경우에 따라 와일드 카드(*) 표기로 쉽게 사용
- 확장(Scale-out) 가능 데이터베이스
: 처음부터 확장을 고려하여 만들어졌기 때문에, 여러 대의 서버를 엮어서 성능 향상을 기대할 수 있는 클러스터 방식을 구성할 때 관계형 데이터베이스보다 상대적으로 관련 정보에 쉽게 접근이 가능
- 오픈 소스 전체 텍스트 검색 및 분석 엔진 (자바 루씬 기반의 검색 엔진)
- 대량의 데이터를 신속하고 거의 실시간에 가까운 저장, 검색 및 분석
- 실시간 데이터 처리
: 메시지 큐(Message Queue, MQ)와 결합하면 강력한 실시간(Realtime) 데이터 수집 및 처리 시스템이 됨
※ 상용 라이센스를 구입할 경우에는 그래프 분석이나 머신러닝 같은 고급 기능도 사용 가능하다.
단점
- 초기 데이터 구성 및 migration 문제
: 기존의 데이터를 엘라스틱서치로 migration 하는 것은 성능 저하를 일으킬 수 있는 요소가 많기 때문에 다른 방법을 이용해야 함
- 저장 공간이 크게 압축되지 않고 시스템 리소스를 많이 사용
- 쿼리 DSL(Domain Specific Language) 쿼리를 채용하는데 JOIN 쿼리가 사실상 어렵기 때문에 반정규화를 기본으로 모델링
- 인덱스가 불변의 자료구조이기 때문에 document를 수정하거나 삭제할 경우에 비용이 저렴하지 않음
- 로그스태시->엘라스틱서치->키바나로 데이터가 넘어가는 과정에서 시간대(Timezone) 일관성이 깨지는 문제
'DevOps > ELK' 카테고리의 다른 글
Elasticsearch (2) | 2023.04.01 |
---|---|
Logstash vs Filebeat (0) | 2023.01.04 |
Filebeat Tutorial, 파일비트 튜토리얼 (0) | 2022.12.29 |
Logstash Tutorial, 로그스태시 튜토리얼 (2) | 2022.12.29 |
grok (0) | 2022.12.29 |