본문 바로가기
System/Elastic Stack

Elasticsearch5, Logstash5, and Kibana5 (ELK5 Stack) install CentOS 7

*ELK5 Stack

Elasticsearch 5.0.0 안정화 버전이 2016년 11월자로 릴리스 되었다. 기존 버전에 비하여 인덱싱 성능이 25~80% 정도 개선 되었으며
새로운 자료 구조를 제공 하고 있다고 한다 또한, es5 릴리스와 함께 kibana,logstash,filebeat 도 동일하게 5 버전으로 릴리스 되었다.


* Stack 구성 


Stack 구성은 기존 es2 버전과 동일하게 되어있는 구조로 되어 있다.

1)Logstash: 로그를 받아서 해당 로그를 elasticsearch 로 전달 하는 역할 을 한다.
2)Elasticsearch : 로그를 저장, 검색 인덱싱 하는 과정을 한다.
3)Kibana: nginx proxy 를 통하여 전달되는 웹인터페이스로 각 로그를 유저가 볼 수 있게 가시화 하는  역할을 한다.
4)Filebeat:각각의 target 이되는 서버는 로그를 filebeat 를 이용하여 logstash 에 로그를 보낸다. 로그를 전달하는 agent 역할을 한다

*설피 필요 패키지 다운 로그 및 시간 동기화

본격적인 설치 과정에 앞서, 설치에 필요한 패키지 및 시간 동기화를 진행 한다.

[root@localhost ~]# yum install wget rdate unzipepel-release epel*  -y && rdate -s time.bora.net

* Install Java 8
Elasticsearch, Logstash 는 java 기반으로 동작 하기 때문에 openJDK 를 이용하여 설치한다.

[root@localhost ~]# cd ~ && wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"
[root@localhost ~]# yum -y localinstall jdk-8u73-linux-x64.rpm &&  rm -rf ~/jdk-8u*-linux-x64.rpm &&  java -version
java version "1.8.0_73"



* Install es5
Elasticsearch5 패키지 저장소를 등록후 Elasticsearch5를 설치 한다. 하위 버전과 다르게 해당 repo 등록시 
kibana,logstash 등도 동일한 버전으로 설치 가능 하게 제공 된다.


[root@localhost ~]# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
[root@localhost ~]#  echo '[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md' | sudo tee /etc/yum.repos.d/elasticsearch.repo

[root@localhost ~]#  vi /etc/elasticsearch/elasticsearch.yml

     54 # network.host: 192.168.0.1
     55 network.host: localhost

[root@localhost ~]#  systemctl start elasticsearch && systemctl enable elasticsearch
[root@localhost ~]# curl  http://localhost:9200
{
  "name" : "ecJIf0x",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "scfl5q7HQuGmfiZc-fvsRA",
  "version" : {
    "number" : "5.1.1",
    "build_hash" : "5395e21",
    "build_date" : "2016-12-06T12:36:15.409Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}





* Install kibana5

es5 설치전 등록된 repo 를 이용하여 , kibana5 를 설치 한다.

[root@localhost ~]# yum -y install kibana
[root@localhost ~]# vi /etc/kibana/kibana.yml
      5 # server.host: "0.0.0.0"
      6 server.host: localhost

[root@localhost ~]# systemctl start kibana && systemctl enable kibana



* Install nginx


kibana 는 별도의 인증이 없기 때문에 nginx proxy 를 통하여 nginx 로 접근 하며, nginx 의 웹 인증을 이용하여 프록시 설정을 아래와 같이 진행 한다.

[root@localhost ~]# yum -y install nginx httpd-tools
[root@localhost ~]# htpasswd -c /etc/nginx/htpasswd.users admin
New password:
Re-type new password:
Adding password for user admin

[root@localhost ~]# vi /etc/nginx/nginx.conf
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        location / {


                auth_basic "Restricted Access";
                auth_basic_user_file /etc/nginx/htpasswd.users;

                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://localhost:5601;
        }
[root@localhost ~]# systemctl start nginx && systemctl enable nginx


* Install logstash5

logstash도 동일하게 설정된 es5 repo 를 이용하여, logstash5 를 yum 으로 설치 한다.
[root@localhost ~]# yum list | grep logstash       
logstash.noarch                           1:5.1.1-1                      elasticsearch-5.x
[root@localhost ~]# yum install logstash   

* Configure Logstash


[root@localhost tls]# vi /etc/logstash/conf.d/10-syslog-filter.conf
input {
  beats {
      port => 5044
  }
}


filter {
  if [type] == "syslog" {
    grok {
        match => [ "message", "%{SYSLOGTIMESTAMP:syslog_timestamp}%{SPACE}%{WORD:syslog_hostname}%{SPACE}%{DATA:syslog_program}\:%{SPACE}%{GRE
EDYDATA:syslog_message}" ]
        add_field => [ "received_at", "%{@timestamp}" ]
        add_field => [ "received_from", "%{host}" ]
        }
        syslog_pri { }
        }
}



output {
  elasticsearch {
      hosts => "localhost:9200"
  }
}



모든 설정이 끝나면 아래와 같이 logstash 를 재시작 한다.

[root@localhost tls]# systemctl restart logstash && systemctl enable logstash


*filebeat install ,configuration

해당 데모 에서는 ELK 서버 자체의 syslog 를 수집 하기 위해 ELK 서버 자체에 filebeat 를 설치 하여, 로그를 전송 하게 한다.

[root@localhost tls]# yum -y install filebeat
[root@localhost tls]# vi /etc/filebeat/filebeat.yml

filebeat:
  # List of prospectors to fetch data.
  prospectors:
    # Each - is a prospector. Below are the prospector specific configurations
    -
      # Paths that should be crawled and fetched. Glob based paths.
      # To fetch all ".log" files from a specific level of subdirectories
      # /var/log/*/*.log can be used.
      # For each file found under this path, a harvester is started.
      # Make sure not file is defined twice as this can lead to unexpected behaviour.
      paths:

  - /var/log/messages
  document_type: syslog


...생략...
#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]


[root@localhost tls]# systemctl restart filebeat


*kibana setting 
웹 브라우저를 통하여 kibana 를 접속 하면 처음 접속시 index pattern 이 등록 된것이 없기 때문에 아래와 같이 index pattern 
설정 부분으로 들어 온다. index 는 logstash* 로 설정 후 생성 한다.
(이미지 잘못 나와 있습니다. filebeat 가 아닌 logstash 입니다.)



정상적으로 될 경우 아래와 같이 필드를 확인 할 수 있다.


Discovery 를 통하여 로그를 확인 할 수 있다.
기본적인 메뉴는 하위 버전과 유사 하며, 설정 방법도 동일하다.



2016년 상반기 부터 사용이 중지 되었던 지도 기반 visualize 도 정상적으로 등록 되는 것을 확인 할 수 있다.


또한, Timelion 도 기본 내장 되어 있다.



*Xpack install 
추가적인 기능을 제공하는 xpack 설치(무료 평가판 으로 유료 패키지임)

[root@201 ~]# cd /tmp && wget  https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.1.1.zip

[root@201 ~]# /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///tmp/x-pack-5.1.1.zip

[root@201 ~]# /usr/share/kibana/bin/kibana-plugin install file:///tmp/x-pack-5.1.1.zip

[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml  
##로그인 페이지 보여주지 않음
xpack.security.enabled: false


[root@201 tmp]# systemctl restart elasticsearch
[root@201 tmp]# systemctl restart kibana

아래 이미지처럼 왼쪽에 추가적인 메뉴가 생긴 것을 확인 할 수 있다.
자세한 내용은 홈페이지 참조 한다.










반응형