ELK

ELK-1.png

로그를 한 곳으로 집중시키고 분석하고 적당한 쿼리를 만들어 원하는 데이터를 도출 해낼 수 있는 로그 관리 솔루션이다. 모든 유형의 구조화 및 비정형 데이터에서 실시간으로 실행 가능한 통찰력을 제공하는 END TO END Stack을 만들었고 이는 데이터를 검색하고 분석하는데 용이하다.

분산형 RESTful 검색 및 분석 엔진

  • 정형, 비정형, 위치정보, 메트릭 등 원하는 방법으로 다양한 유형의 검색을 수행하고 결합할 수 있다.
  • 표준 RESTful API와 JSON을 사용한다.

L (Logstash)

  • 오픈소스 서버측 데이터 처리 파이프라인으로, 다양한 소스에서 동시에 데이터를 수집하고 변환하여 자주 사용하는 Stash 보관소로 보낸다.

K (Kibana)

  • 데이터를 시각적으로 탐색하고 실시간으로 분석할 수 있다

ELK Stack

  • ELK 솔루션에서 Beats 추가되면서 ELK Stack이라고 불린다

Beats

  • 서버에서 에이전트로 설치하여 다양한 유형의 데이터를 Elastic Search 또는 Logstash에 전송하는 오픈소스 데이터 발송지

데이터 흐름

elk7

Beats -> Logstash -> Elasticsearch -> Kibana

  • 로그 수집 대상 서버에서 Beats가 설치되어 수집할 데이터 발생 시 Beats 트리거에 따라 Logstash로 데이터를 전송
  • Logstash로 전달 된 데이터는 사용자 필터에 따라 가공되어 Elasticsearch로 전달
  • Elasticsearch는 전달 받은 데이터를 Elasticsearch 서버에 저장
  • Kinbana를 통해 Elasticsearch에 저장된 데이터를 토대로 시각화 제공

Elastic Search

검색 엔진이다. 검색 엔진은 웹에서 정보를 수집하여 검색 결과를 제공하는 프로그램이다. 엘라스틱 서치는 비정형 데이터(텍스트, 음성, 영상 등)를 색인하고 검색하는 것이 가능하다. 역색인 구조를 사용함으로써 빠른 검색이 가능하다.

검색엔진

  • 아파치 재단의 루씬을 기반으로 개발된 오픈소스 검색엔진이다.

전문 검색

  • 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것이다.

통계 분석

  • 비정형 로그 데이터를 수집하고 한곳에 모아 통계 분석을 할 수 있다.

멀티테넌시(Multi-tenancy)

  • 검색할 필드명으로 여러 개의 인덱스를 한번에 조회할 수 있다.

역색인

  • 역색인 구조를 통해 특정 단어를 찾을 때 문서 전체에서 찾는 것이 아닌, 단어가 포함된 특정 문서의 위치를 알아내어 빠르게 결과를 찾아낼 수 있다.

분산 환경

  • 엘라스틱 서치에서는 데이터를 샤드라는 작은 단위로 나누어 제공하고, 데이터를 분산하여 빠르게 처리한다.

엘라스틱 서치의 단점

  • 실시간이 아니다
    • 엘라스틱 서치는 데이터 저장 시점에 해당 데이터를 색인한다. 색인된 데이터는 1초 뒤에나 검색이 가능해져서 실시간으로 검색이 불가능하다.
  • 트랜잭션과 롤백이 없다
    • 클러스터의 성능 향상을 위해 비용 소모가 큰 롤백과 트랜잭션 기능이 없다.
  • 데이터의 업데이트를 제공하지 않는다.
    • 데이터를 변경하려면 삭제하고 삽입해야한다.

Logstash 개념

logstash.png

오픈소스 데이터 수집 엔진이다. Logstash는 서로 다른 소스의 데이터를 탄력적으로 통합하고 사용자가 선택한 목적지로 데이터를 정규화 할 수 있다. Input을 받아 커스텀한 Filters로 가공하여 Output으로 내보내는 역할을 수행한다. elk 스택에서는 들어온 데이터를 필터하여 elasticsearch로 전달한다.

Beats 개념

beats.png

서버에 에이전트 형식으로 설치하는 오픈소스 데이터 수집기이다. Beats는 데이터를 Elasticsearch에 직접 전송할 수 있으며, Logstash를 통해서 데이터를 전송할 수 있다.

  • FileBeat
    • 서버에서 로그 파일을 제공한다.
  • PacketBeat
    • 응용 프로그램 서버간에 교환되는 트랜잭션에 대해 정보를 제공하는 네트워크 패킷 분석기이다.
  • MetricBeat
    • 운영 체제 및 서비스에서 Metrics를 주기적으로 수집하는 서버 모니터링 에이전트다.
  • WinlogBeat
    • Windows 이벤트 로그를 제공한다.