DevOps/ELK

ELK, Elasticsearch+Logstash+Kibana

게임이 더 좋아 2022. 12. 29. 23:32
반응형
728x170

 

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