ELK STACK이란 ?



Log 및 데이터 분석을 한다고 할 때, 가장 먼저 떠 오르는 도구는 ELK Stack이다.

ELK는 수집 기능을 하는 Logstash, 분석 및 저장 기능을 담당하는 ElasticSearch, 시각화 도구인 Kibana의 앞 글자만 따서 ELK Stack이라고 한다.
이런 조합이 많이 떠오르는 이유는 접근 용이성 때문이라고 생각한다. 

ELK vs Apache echo system으로 비교해보았을 때, ELK가 더 접근성이 좋다.
하지만 좀 더 깊게 들어가서, 큰 시스템을 구축한다고 가정한다면 Apache echo system이 좀 더 유리하다고 생각된다.

ELK을 공부하며 느낀 점은 맘만 먹으면 하루 만에 간단한 기능을 제공할 수 있을 정도로 쉽다는 점이다.

LogStash
먼저 Logstash에 대해 살펴보자 

Logstash는 수집기능을 제공한다고 했다. 아래 그림을 보면 좀 더 명확히 이해할 수 있다. 
다양한 입력형태의 데이터를 읽어, 데이터 필터 기능을 제공하고, 다른 저장소에 저장도 가능하다. 



예로서 logstash설정파일을 보자 
$ logstash-simple.conf

input {
  file {
   # csv 파일에서 받음
    path => "/home/Documents/sample.csv"
   # 파일에서 처음부터 받을라면 beginning (보통은 end가 default )
    start_position => “beginning"
   # 데이터 offset정보가 sincedb에 저장 
    sincedb_path => "/dev/null"
  }
}
#필터 ( csv에서 ,를 분리자로 사용 )
filter {
  csv {
      separator => ","
      columns => [“Test”,”data1”,"data2"]
  }
# float로 변환
  mutate {convert => [“data1", "float"]}
  mutate {convert => [“data2", "float"]}
}
output {
    elasticsearch {
        hosts => "localhost"
        index => “test"
    }
    stdout {}
$ cat sample.csv

Test,data1,data2
abc,100,200
Bcd,200,300
Jas,400,100
이러고 실행함 수집이 된다. ( 무척 쉽다 )
$  ./logstash -f logstash-simple.conf


ElasticSearch
이제 ElasticSearch에 대한 간단 예를 보여주겠다. 

ElasticSearch는 Rest API형식으로 기능을 제공하는데, 아래와 같이 document들을 index기반으로 저장을 하므로 검색 시 Relational DB보다 빠르다. 


Elastic Search와 Relational DB을 비교한 표다
Elastic Search
Relational DB
Index
DataBase
Type
Table
Document
Row
Field
Column
Mapping
Schema

Elastic Search
Relational DB
GET
Select
Put
Update
Post
Insert
Delete
Delete
ElasticSearch는 Rest기반으로 제공하기 때문에 아래와 같이 사용해야한다.
Elastic Search
Relational DB
curl -XGET localhost:9200/classes/class/1 
select * from class where id =1
curl -XPOST localhost:9200/classes/class/1 -d ‘{xxx}'
insert into class values {xxx}
curl -XPUT localhost:9200/classes/class/1 -d ‘{xxx}'
update class set xxx where id = 1
curl -XDELETE localhost:9200/classes/class/1
delete from class where id = 1
Logstash을 거치지 않고도 ElasticSearch에 데이터를 넣고, 조회가 가능하다.
하지만 지금은 ELK에 대해 이해하기 위함 이기에 이 과정은 생략하였다.


Kibana
키바나는 설치 후, 조회할 indexname을 저장하면 다양한 차트를 만들 수 있다.



다양한 형태로 데이터를 볼 수있다. 더 많은 기능은 kibana홈페이지 팜고



이렇게 지도로도 제공가능하다.



많은 오픈소스들을 사용하면서, 절대적으로 좋은 도구는 없다고 생각한다.
주어진 상황에 맞춰서 사용하면, 좀 더 개발하는데 비용을 아낄수 있을 것이다.











+ Recent posts