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홈페이지 팜고
이렇게 지도로도 제공가능하다.
많은 오픈소스들을 사용하면서, 절대적으로 좋은 도구는 없다고 생각한다.
주어진 상황에 맞춰서 사용하면, 좀 더 개발하는데 비용을 아낄수 있을 것이다.