Realman's World

ELK - elasticsearch, logstash, kibana 설치 및 사용 본문

Kairos/Item

ELK - elasticsearch, logstash, kibana 설치 및 사용

리얼맨 2015. 7. 29. 11:36
ELK 공식 홈페이지 : https://www.elastic.co/

공식 홈페이지에서 상단 메뉴의 PRODUCTS를 클릭하면 솔루션을 설치할 수 있다.


1. elasticsearch 설치

elasticsearch 페이지에서 tar 파일의 링크를 복사 한 후에 Documentaion 페이지로 이동하여 설치 지침을 따른다.


요약하면 아래와 같다.

편의상 다운받는 elasticsearch 파일을  elasticsearch-1.7.0.tar.gz 이라 하겠다.


curl -L -O [다운받을 elasticsearch 주소]

tar -xvf elasticsearch-1.7.0.tar.gz

cd elasticsearch-1.7.0/bin

./elasticsearch --cluster.name my_cluster_name --node.name my_node_name


위와같이 하면 일단 elasticsearch가 실행이 된다.

이를 확인하기 위해서 port 9200으로 접속해 본다


http://[elasticsearch ip]:9200/_aliases?pretty


2. logstash 설치


curl -L -O [다운받을 logstash 주소]

tar -xvf logstash-1.5.2.tar.gz

cd logstash-1.5.2/bin

./logstash -f [logstash configure 파일]


* 서버의 상태 정보를 제공하는 configure 파일

input {

  exec {

    command => "free | grep buffers/cache | awk '{print int($3/($3+$4)*100)}'"

    interval => "5"

    type => "mem"

  }

  exec {

    command => "cat /proc/stat | grep 'cpu ' | awk '{print int(($2+$3+$4)/($2+$3+$4+$5)*100)}'"

    interval => "5"

    type => "cpu"

  }

  exec {

    command => "df -k | grep /was | awk '{print ($5*1)}'"

    interval => "5"

    type => "hdd"

  }

}

filter {

  mutate {

    convert => ["message", "integer"]

  }

}

output {

  elasticsearch{

        cluster => "kibana_cluster"

        node_name => "kibana_node"

        protocol => "node"

        host => "[elasticsearch가 설치된 ip 주소]"

        index => "server-status-%{+YYYY.MM.dd}"

  }

}


3. kibana 설치


http://[kibana ip]:5601


1) Configure an index pattern

logstash 를 실행시켜 elasticsearch와 연동이 되면 logstash의 confingure에 따라 index가 생성이 된다.

kibana는 해당 index를 이용하여 display를 수행한다.

kibana를 처음 실행하면 Configure an index pattern 페이지가 실행이 된다.


logstash에서 별도의 configuration을 하지 않았다면 기본적으로 logstash-* 로 log가 쌓이기 때문에 자동으로 kibana에서 인덱스를 찾아주지만 그렇지 않을 경우에는 설정한 값으로 변경하여야 한다.


아래의 그림을 보면 logstash-* 형태의 index가 없기 때문에 하단의 버튼이 회색으로 되어 있고 다음과 같은 메시지가 표시됨을 알 수 있다.
 
Unable to fetch mapping. Do you have indices matching the pattern?


logstash에서 설정한 index를 써 주자 Create라는 버튼이 생성됨을 볼 수 있다.



Create를 클릭하면 해당 index에 쌓여 있는 json 형태의 log를 분석하여 field와 data의 형태들을 자동으로 불러와서 표시해 준다.



2) Discover


index 설정이 완료가 되면 해당 index에서 필요한 내용을 뽑아내는 작업이 필요하다.

여러개의 Discover 생성이 가능하며 이것을 기반으로 Visualize 및 Dashboard를 생성할 수 있다.


전체 log를 다 사용할 경우에는 왼쪽 하단에서 필드를 바로 선택해도 되지만 필터링을 해야할 경우에는 상단의 검색박스에서 필터링을 한 후에 필드를 선택해야 한다.

가령 server1, server2에서 동일한 index pattern으로 log를 쌓았을 경우 하나의 로그에 2개의 서버 정보가 존재하게 된다.

때문에 server1의 상태 정보와 server2의 상태 정보를 별도로 표기하고 싶다면 server1과 server2를 구분할 수 있는 구분자를 통해 필터링을 한 후에 Discover를 생성해 주도록 한다.


host 명이 tos1, tos2로 나뉘어 진다면 각각 필터링을 수행한다.



이후 왼쪽 메뉴에서 필요한 field를 선택하면 해당 정보만 가지고 온다.

상단의 저장 버튼을 클릭하여 저장하면 Visualize에서 사용이 가능하다.


3) Visualize


상단의 New Visualization 버튼을 클릭하면 Create a new visualization 페이지가 로딩된다.

원하는 visualization 을 선택하면 Select a search source 페이지가 로딩되고 새로운 discover를 생성하여 사용할 것인지 이미 만들어진 discover를 사용할 것인지 선택하도록 한다.



이전에 discover를 만들었으면 From a saved search를 클릭한 후 discover를 선택한다.

X축과 Y축을 설정하고 저장하면 Dashboard에서 사용할 수 있다.





Comments