[ELK] 우분투에 ELK 설치 및 테스트 하기

Category: Elasticsearch | May 06, 2015

참고 : ELK ( Elasticsearch + Logstash + kibana 를 합쳐서 부름)

ELK 설명

Installation

0. Nginx(테스트 용도)

$ sudo apt-get install nginx
$ sudo vim /etc/nginx/nginx.conf

nginx.conf 파일 내에 아래내용 추가

http {
.... 중략 ....
log_format main '$http_host '
'$remote_addr [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time '
'$upstream_response_time';
access_log /var/log/nginx/access.log main;
}
$sudo service nginx start

1. Elasticsearch 1.5.1

1. 설치하기

$ tar xvzf elasticsearch-1.5.1.tar.gz
$ cd elasticsearch-1.5.1
$ bin/plugin -install mobz/elasticsearch-head
$ vim config/elasticseach.yml
$ sudo bin/elasticsearch -d

elasticseach.yml 파일 내의 node.name 에 적당한 이름을 써준다.

2. kibana 4.0.2

1. 설치하기

$ tar xvzf kibana-4.0.2-linux-x64.tar.gz
$ cd kibana-4.0.2-linux-x64
$ vim config/kibana.yml
$ sudo bin/kibana &

kibana.yml 내의 elasticseach_url 부분만 수정 .

3. logstash 1.4.2

1. 설치하기

$ tar xvzf logstash-1.4.2.tar.gz
$ sudo vim log_list/nginx.conf

ex.) log_list/nginx.conf

input {
    file {
      path => "/var/log/nginx/access.log"
      type => "Nginx"
    }
  }
filter {
  mutate { replace => { "type" => "nginx_access" } }
  grok {
    match => { "message" => "%{NGINXACCESS}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
  }
  geoip {
    source => "clientip"
  }
}
output {
  elasticsearch { 
    host => localhost 
    port => 9200
    protocol => http
  }
  stdout { codec => rubydebug }
}
$ sudo vim patterns/nginx

ex.) patterns/nginx

NGUSERNAME [a-zA-Z.@-+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:http_host} %{IPORHOST:clientip} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time:float} %{NUMBER:upstream_time:float}
NGINXACCESS %{IPORHOST:http_host} %{IPORHOST:clientip} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NUMBER:request_time:float
$cd logstash-1.4.2
$bin/logstash -f log_list/nginx.conf -t
$bin/logstash -f log_list/nginx.conf

-t 옵션으로 configtest 를 한뒤에 실행한다.

이 글 쓰고 나니 elasticsearch.co는 전부 업데이트 됐음.
최신버전 보러가기 : https://www.elastic.co/downloads