ELK 스택 구축

2504 단어 빅데이터ELKELK

ELK란?
ElasticSearch, LogStash, Kibana 조합으로 로그 수집 - 로그 저장 및 검색 - 시각화로 쓰이게 된다.

Logstash

특징

Logstash는 실시간 파이프라인 기능을 갖는 데이터 수집 엔지이며, Input을 받아 Filter를통해 가공하고 Output이 ElasticSearch의 Input이 되거나 MQ의 producer가 되는 등 파이프라인의 첫번째 단계이다.
Logstash는 여러 시스템에서 데이터 수집 및 위해 다양한 입력 Plugin을 지원하기 때문에 유연성 갖고 있다.

다른 Dataflow Tool과 차이

Streamsets, Nifi 등 ETL 툴과 다른점은 Logstash는 로그 수집하고 구문 분석해서 나중에 사용할 수 있도록하는 Log Management로 분류된다. 반면 다른 툴들은 Stream Processing 범주의 도구로 분류된다.

설정파일

Input : 로그데이터가 쌓이는 파일
Filter : 로그데이터에서 필요한 칼럼, 형변환 등 Transformation과정
Output : ElasticSearch와 연동될 경우에는 hosts는 ElasticSearch서버, 해당 서버의 index 설정

> logstash_stage1.conf
input {  
  file {
    path => "/home/minoh1227/demo-spark-analytics/00.stage1/tracks_live.csv"
    start_position => "end"
  }
}

filter {
  csv {
    columns => ["event_id","customer_id","track_id","datetime","ismobile","listening_zip_code"]
    separator => ","
  }

  date {
    match => [ "datetime", "YYYY-MM-dd HH:mm:ss"]
    target => "datetime"
  }

  mutate {
    convert => { "ismobile" => "integer" }
  }
}

output {
  stdout {
    codec => rubydebug{ }
  }

  elasticsearch {
    hosts => "http://localhost:9200"
    index => "ba_realtime"
  }
}

ElasticSearch

  • 분산 검색 엔진으로 보통 Cluster구성하고, shard로 데이터 저장하며 replica를 저장하기 때문에 높은 HA를 제공한다.
  • 실시간으로 색인되어 데이터 검색과 분석 가능
  • JSON 기반으로 저장해서 Rest API 기반으로 처리한다.

analzer

데이터가 들어오면 Tokernizer, Token Filter가 특정 기준으로 토큰을 분리해서 검색 가능하도록(searchable) 가공한다.

Term Query vs Full-Text Query

Term Query경우에는 analyzer거치지 않고 검색어와 일치하는 문서 찾기. 정형 데이터 예시로는 날짜, IP주소, 제품ID 등.
Full-Text Query경우에는 analyzer 거쳐서 좀 더 복잡한 조회에 적합

RDB와 차이점

  • RDB는 row기반으로 데이터 저장하지만, ES는 단어 기반(Inverted Index)로 저장한다. (일반적인 NoSQL도 역색인 지원X) 해당 단어만 찾으면 포함된 문서 위치 알 수 있다.

단점

  • Rollback 지원 하지 않는다.
  • update 지원하지 않는다. 기존 문서 delete -> insert 과정을 거친다.

<row 기반>

<Inverted Index 기반>

Kibana

ELK 아키텍처 한계

  1. 사용자 증가로 처리 용량 한계
  2. 더 많은 데이터 통해 분석 필요

좋은 웹페이지 즐겨찾기