# 0. EFK 스택구축 - EFK스택?

empty·2020년 12월 28일

EFK-STACK

목록 보기
1/6

EFK 스택

  • ElasticSearch
  • Fluentd
  • Kibana

EFK스택이란 지속적으로 유입되는 로그 데이터를 수신하고 이 데이터를 차트와 그래프로 시각화 하는 시스템이다. 위의 세가지 오픈소스들을 활용하는데 오픈소스들의 첫 글자를 따서 EFK 스택이라 부른다.

EFK 스택의 필요성


데이터가 서버에 지속적으로 유입이 되어 데이터의 양이 늘어나면 서버는 데이터양을 감당하지 못할것이다. 규모가 커질수록 분석속도가 느려지고 서버의 리소스가 감당하지 못할 것인데 이러한 데이터를 어떻게 감당할 수 있느냐? 이 문제에 대한 솔루션이 바로 EFK 스택이다.

#1. ElasticSearch - 검색도구


Apache 루씬 기반의 Java 오픈소스 분산 검색엔진이다. 많은 양의 데이터를 보관하고 실시간으로 저장, 검색, 분석할 수 있게 해준다.

특징

다음은 ElasticSearch의 몇 가지 특징들이다.

1️⃣ 멀티테넌시

  • 데이터는 여러개로 분리된 인덱스들의 그룹으로 저장
  • 서로 다른 인덱스의 데이터를 하나의 질의로 검색하여 하나의 출력으로 도출가능하다.

2️⃣ 실시간 데이터 및 실시간 분석

  • 저장된 데이터는 검색에 사용되기 위해 별도의 재시작 / 갱신이 불필요하다.
  • 색인 작업이 완료됨과 동시에 바로 검색 가능하다.
  • 실시간 분석 / 검색은 데이터 증가량에 구애받지 않는다.

3️⃣ 고가용성

Elasticsearch는 하나 이상의 노드로 구성이 되고 각 노드는 1개 이상의 데이터 원본과 복사본을 서로 다른위치에 나누어 저장을하여 고가용성을 제공한다.

  • 항상 일정한 데이터 복사본의 개수를 유지하여 높은 가용성안정성을 보장한다.
  • 노드가 종료되거나 실행에 실패할 경우 다른 노드로 데이터를 이동한다.

4️⃣ 테이블과 스키마 대신에 JSON 형식으로 저장

기본적으로 모든 필드를 색인 후에 JSON 형식으로 저장한다. JSON 구조로 인해 모든 레벨의 필드에 접근이 쉽고, 빠른 속도로 검색이 가능해진다.

  • JSON 문서를 URI로 명시, 이 문서를 처리하기 위해 HTTP 메소드를 이용한다.

시스템 구조


Elasticsearch의 하나의 클러스터는 마스터노드와 데이터노드로 구성된다.

  • 10개 이상의 Node로 구성된 클러스터인 경우 마스터 전용 노드데이터 전용 노드를 분리하는 것이 좋다.
  • 마스터 노드도 아니고 데이터 노드도 아닌 일반 노드도 존재한다.
    • 색인과 검색을 위한 명령과 결과를 전달하는 역할로만 존재한다.
    • HTTP Port를 차단하여 데이터를 저장하는 역할만 전담한다.

클러스터의 명을 동일하게 유지하고 프로세스만 실행하게 되면 시스템의 확장이 가능해진다.

Master Node

마스터 노드는 전체 클러스터의 상태에 대한 메타정보를 관리하는 노드이다.

  • 기존의 마스터 노드가 종료되면 새로운 마스터 노드가 선출이 된다.
  • 마스터 노드는 요청을 처리하지 않고 데이터를 보유하지 않으므로 CPU, RAM 및 디스크와 같은 적은 리소스만 사용한다.
  • node.master 속성을 false로 하면 마스터 노드에서 제외된다.

Data Node

색인된 데이터를 실제로 저장하는 노드이다.

  • 데이터 노드는 인덱스 처리 빈도에 따라서 Hot Data Node와 Warm Data Node로 나뉘어 진다.
  • node.data 속성을 false로 하면 해당 노드는 데이터를 저장하지 않는다.

#2. Fluentd - 로그 데이터 수집


Fluentd는 로그 데이터를 수집, 변환 후 Elasticsearch의 백엔드로 전송해주는 역할을 하는 오픈소스 데이터 수집기이다.

  • 데이터 유실을 막기위해 메모리와 파일기반의 Buffer 시스템을 갖고있음
  • Failover를 위한 HA구성도 가능

#3. Kibana - 로그 데이터 시각화


Kibana는 그래프, 차트를 제공해주는 Elasicsearch용 데이터 시각화 관리도구이다. Kibana를 사용하여 Elasticsearch 색인에 저장된 데이터를 검색할 수 있다.

Kibana를 사용하여 웹 사이트 방문자를 표시할 수도 있고 트래픽을 실시간으로 볼 수도 있다.

EFK 스택 아키텍쳐

각 파드의 Fluentd에서 로그를 수집하고 수집된 로그를 Elasticsearch 백엔드로 변환되어 전송한다. Elasticsearch에서 데이터가 분석되고 분석된 데이터는 Kibana로 시각화하여 볼 수 있다.

  • Kibana 대시보드를 사용하고 나머지 Fluentd, Elasticsearch는 백엔드에서 작동한다.

이제 EFK스택을 구성하는 각각의 서비스에 대해 간략하게 알아보았으니 상세 구축과정을 살펴보자.

Reference


0개의 댓글