엘라스틱 스택 줄여서 ELK는 Elastic Search, Logstash, Kibana 3가지 기술 스택을 말한다.
해당 스택은 빅데이터 파이프라인을 구성하기 위한 데이터 수집, 가공, 저장, 분석, 시각화에 필요한 모든 소프트웨어를 갖추고 있다고 할 수 있다.
이들 스택의 각 역할을 간단히 말한다면 로그 스태시가 데이터를 수집하고, 엘라스틱 서치는 데이터를 저장하고 검색이 가능한 엔진을 제공한다. 마지막으로 키바나는 이들 데이터의 시각화를 담당한다.
이들 각 스택에 대해 간단하게 알아보자.
1. 엘라스틱 서치 : 분산 검색 엔진
엘라스틱 서치는 검색 엔진이다.
검색 엔진: 내부적으로 각 도큐먼트를 인덱싱하고 빠르게 검색하는 데 사용되는 기술
모든 레코드들을 JSON 도큐먼트 형태로 관리. 일반적인 데이터베이스처럼 쿼리한 결과에 대해 일치하는 원본 도큐먼트를 반환.
텍스트 외에도 숫자, 날짜, IP, 지리 정보 등 다양한 데이터 타입을 지원.
===> 검색 엔진 + 데이터 베이스 ===> 일종의 NoSQL 데이터 베이스라고 생각하면 된다.
텍스트나 도큐먼트의 경우 인덱싱 시점에 분석을 거쳐 용어 단위로 분해되고 역인덱스 사전을 구축. 숫자나 키워드 타입 데이터들은 집계를 위해 최적화된 컬럼 기반 자료구조를 저장. ===> 최적화된 자료구조들을 바탕으로 병렬처리나 분산 처리가능
다른 NoSQL과 매우 유사하지만 다른 NoSQL을 압도하는 검색 기능과 성능을 가지고 있음.
검색어에 대한 유사도 스코어를 기반으로 한 정렬을 제공 (스코어링)
JOIN 쿼리가 어렵기 때문에 반정규화를 기본으로 모델링 해야한다.
반정규화: 데이터베이스 설계에서 정규화 원칙을 일부 우회하는 기법. 정규화는 데이터베이스를 잘 구조화하여 중복을 최소화하고 데이터의 일관성과 무결성을 유지하는 데에 중점을 두지만 반정규화는 성능 향상을 위해 정규화 원칙을 일부 무시하고 중복 데이터를 허용함.
반정규화는 주로 대량의 데이터를 처리해야 할 때 성능 향상을 목적으로 사용됨. 중복 데이터의 증가로 인해 데이터베이스의 일관성과 무결성이 약간 희생되지만, 데이터 접근 속도를 향상시키는 효과를 가져올 수 있다.
인덱스가 불변의 자료구조이기 때문에 도큐먼트의 수정이나 삭제 비용이 비싸다.
REST API 형태로 입력을 받아들임.
2. 키바나: 시각화와 엘라스틱서치 관리 도구
엘라스틱 스택의 UI를 담당
엘라스틱 서치에 복잡한 요청을 편하게 할 수 있도록 도와줌.
엘라스틱 서치에 대한 관리 기능, API 실행콘솔, 솔류션 페이지, 스택 각 구성요소들을 위한 모니터링 페이지 제공.
===> 제일 중요한 기능은 시각화 대시보드
===> 키바나는 라인 차트, 파이 차트 등과 테이블, 지도 등의 다양한 시각화 요소들을 클릭 몇번으로 쉽게 구성하도록 해줌
3. 로그스태시: 이벤트 수집과 정제를 위한 도구
데이터 수집과 가공 기능 제공. 다양한 소스로부터 로그를 수집하게 해줌.
필터 기능을 통해 비정형이나 반 정형 데이터를 분석하기 쉬운 형태로 정제 가능.
로그 스태시는 형식에 무관하게 데이터를 동적으로 수집, 변환, 전송하는 구조로 되어 있음.
로그 스태시는 코딩 없이 간단한 설정만으로 로그를 가공할 수 있게 해줌.
3-1. 비츠 : 엣지 단에서 동작하는 경량 수집 도구
로그 스태시는 매우 강력하지만 무겁다. 해서 엘라스틱 스택에는 파일비트, 메트릭비트 등 비츠라고 부르는 경량 수집기가 포함되어 있다.
가벼운 Golang으로 작성됨.
각 비트는 로그 수집, 시스템 지표 수집 등 특정 목적에 최적화된 에이전트.
로그 스태시 수준의 복잡한 이벤트 가공은 지원하지 않아 가벼워 각 서비스 호스트에 부담없이 설치 가능.
참고: 엘라스틱 스택 개발부터 운영까지 - 김준영, 정상운 저
'ELK' 카테고리의 다른 글
서비스에 ELK적용하기 (0) | 2023.08.04 |
---|