CentOS7에서 ELK Stack 설치하기(Filebeat, logstash, Elasticsearch, kibana)

안녕하세요 jay입니다.
오늘은 CentOS7에서 ELK Stack을 구축해보도록 하겠습니다

설치해야할게 정말 많고 버전도 각각 다 달라
버전에 맞춰서 설치를 하는 것이 중요합니다.
elastic 공식 홈페이지를 바탕으로 설치를 진행해보겠습니다.


Intro) 자신의 설치 환경 파악하기

무작정 블로그를 보고 따라서 설치하시는 것 보다는
자신이 설치할 프로그램들의 버전과 os가 호환되는지 확인하는 것이 중요합니다.
일단 제 현재 OS는 CentOS7입니다.
일단 공식 홈페이지에 가서 저희가 설치할 프로그램들의 버전들의 호환성을 확인해봅시다.

https://www.elastic.co/kr/support/matrix 이 사이트로 들어갑니다.

CentOS7에서 Elasticsearch 7.5.x를 설치할 수 있군요


CentOS7에서 Logstash 7.5.x를 설치할 수 있군요

Filebeat 7.5.x도 설치 가능하군요

이왕 설치하는거 최신 버전으로 설치해봅시다!(2020.1.26기준)
7.5.x버전으로 설치를 진행해보도록하겠습니다.

설치 전제조건

 root환경에서 설치 진행 과정입니다. root환경이 아니신 분들은 sudo를 붙여주세요
IP address는 임의로 지정하지 않고 localhost로 지정하겠습니다.
다른 IP를 사용하고 싶으신 분들은 localhost부분의 IP를 바꿔주시면 됩니다.



1. Elasticsearch 설치

일단 Elasticsearch 설치전 리눅스에 java가 설치 되었는지 확인하셔야 됩니다.
java -version으로 확인을 합니다.

java -version

#openjdk version "1.8.0_232"
#OpenJDK Runtime Environment (build 1.8.0_232-b09)
#OpenJDK 64-Bit Server VM 9build 25.232-b09, mixed mode)

위와 같이 설치가 되었으면 설치를 진행하시면 됩니다.
jdk설치가 안되신 분들은 설치를 해주시기 바랍니다.

저희는 공식홈페이지에 나와있는 설치법 그대로 진행하겠습니다.
rpm으로 설치를 진행하겠습니다. 먼저 아래를 입력해주세요


rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

그리고 vi를 켜주세요
vi /etc/yum.repos.d/elasticsearch.repo

vi에 아래를 그대로 입력해주세요.
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

그 다음 install을 하고 기다리세요.
yum install --enablerepo=elasticsearch elasticsearch

설치가 완료되면 Complete!라는 문구가 나옵니다.
그 다음 아래와 같이 입력합니다.
vi로 elasticsearch.yml파일을 엽니다.
vi /etc/elasticsearch/elasticsearch.yml

그 다음 아래로 조금 내려가서
network.host부분과 http.port부분의 주석을 제거합니다.(위와 같이 #을 지워주시면 됩니다.)

elasticsearch를 다시 재시작합니다. 이제 잘 설치되었나 확인을 해봅시다.
systemctl restart elasticsearch

아래 명령어를 입력하면
curl http://127.0.0.1:9200

위와 같은 화면이 나옵니다.

근데 여기서 접속이 거절당하는 에러를 뜨시는 분들이 있습니다.
그때는 아래와 같은 명령어들을 순차적으로 입력해주시면 됩니다.
근데 여기서 주의할 점은 저희가 현재 설치환경 아이피가 로컬이다보니
아래와 같은 방법이 가능합니다.
회사나 학교(연구실)같은 경우 아래와 같은 방법을 쓰시면 큰일나겠죠?
vim /etc/sysconfig/selinux

아래와 같이 위로 들어가셔서 SELINUX=enforcing을 disabled로 바꿔주세요
이제 elasticsearch 설치가 완료되었습니다.


2. Kibana설치

kibana도 마찬가지로 공식홈페이지를 바탕으로 설치를 진행하겠습니다.

아래 명령어를 입력해주세요.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vi를 켜서, 아래 내용을 입력해주세요
vi /etc/yum.repos.d/kibana.repo

#아래를 입력해주세요
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

kibana를 install합니다.
yum install kibana

호스팅을 위해 vi로 kibana.yml을 엽니다.
vi /etc/kibana/kibana.yml

아래 부분을 주석처리 제거를 해줍니다(#을 지우시면 됩니다.) 
총 3개의 주석을 지우시면 됩니다.

kibana를 재실행합니다. 이제 설치가 제대로 되었나 확인을 해봅시다.

systemctl restart kibana

CentOS7에서 브라우저를 켜주시고 주소창에 아래를 입력해주세요
아래와 같이 kibana가 켜지면 설치 성공입니다.
http://127.0.0.1:5601





3. logstash 설치하기

마찬가지로 공식홈페이지를 바탕으로 설치를 진행해보겠습니다.

또 아래를 입력합니다. 지겹네요ㅎ.ㅎ
(여기서 의문이 드는게 이걸 지금 3번째 반복인데,
느낌상 한번만 입력해도 될거같지만 혹시 모르니 계속 입력하겠습니다.)
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vi로 logstash.repo파일에 아래를 입력해주시면 됩니다.
vi /etc/yum.repos.d/logstash.repo

#아래를 입력하세요
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

입력을 마치셨으면 install을 합시다.
yum install logstash

install이 완료되었으면,
filebeat와 elasticsearch연결을 위한 설정을 해봅시다.
일단 아래로 이동합시다.
cd /etc/logstash

아래와 같이 여러 파일들이 있다는 것을 알 수 있습니다.
저희는 conf.d(디렉토리)로 넘어가서 연결을 위한 conf파일을 생성하겠습니다.

vi로 conf파일을 켜주시면 됩니다.
vi /etc/logstash/conf.d/first-pipeline.conf

위 사이트를 가시고 맨 아래쯤 스크롤을 내리시면
아래와 같은 내용이 있습니다.
공식홈페이지 내용에다가 input에 host => "0.0.0.0"을 추가하시면 됩니다.

input {
  beats {
    port => 5044
    host => "0.0.0.0"
  }
}

filter {
  if [system][process] {
    if [system][process][cmdline] {
      grok {
        match => {
          "[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
        }
        remove_field => "[system][process][cmdline]"
      }
    }
  }
}

output {
  elasticsearch {
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

logstash를 다시 실행해보겠습니다.
systemctl restart logstash

잘 설치되었나 확인해보겠습니다.
netstat -anpt | grep 5044

잘 설치되었네요(중간에 filebeat는 이미 설치를 한 상태에서 확인을 해서 나왔습니다.)


4. filebeat 설치

드디어 filebeat설치 마지막 단계입니다.
filebeat도 어렵진 않습니다.
마찬가지로 우리들의 친구 공식홈페이지를 참고합시다.

근데 설치과정에서 두 가지 방법이 있습니다.
제 기억으론 yum으로 설치했던거 같습니다.
버전을 확인해보니 7.5.2로 설치가 되었습니다.
버전 확인 법 : filebeat version
# 그냥 설치
yum install filebeat

# 공식 홈페이지 설치
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.2-x86_64.rpm
rpm -vi filebeat-7.5.2-x86_64.rpm

설치 후 이제 vi로 filebeat.yml을 열어주세요.
vi /etc/filebeat/filebeat.yml

/etc/filebeat/filebeat.yml
...
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
...

/etc/filebeat/filebeat.yml
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]
Filebeat는 수많은 출력을 지원하지만 일반적으로 추가 처리를 위해, 이벤트를 elasticsearch 또는 logstash로 직접 보냅니다. 저희는 logstash를 통해 elasticsearch로 데이터를 보내는 구조이므로  output.elasticsearch 부분 호스트를 주석처리하고, logstash host는 주석을 제거하겠습니다.

system을 활성화시키고 modules리스트를 확인해봅시다.
filebeat modules enable system

filebeat modules list

Output
Enabled: system Disabled: apache2 auditd elasticsearch .....

5. HOSTING

이제 모든 시스템을 다시 가동을 해보겠습니다.
systemctl restart elasticsearch
systemctl restart logstash
systemctl restart kibana
systemctl restart filebeat

아래 명령어를 입력해서 index pattern을 확인하고 추가를 하면 됩니다.
curl localhost:9200/_cat/indices?v

CentOS7의 브라우저에 아래주소를 입력합니다. 그러면 kibana가 켜집니다.
이제 index pattern을 추가하겠습니다.
http://127.0.0.1:5601

kibana 메뉴에 Management를 눌러줍니다.

Index Patterns를 눌러줍니다.

Create index pattern을 눌러주시고
filebeat-*를 입력해주시면 됩니다. 그러면 다음 단계로 넘어갑니다.
@timestamp를 클릭하시고 Create index pattern을 눌러주시면 됩니다.

그리고 Menu에 discover를 누르면 아래와 같이 log가 나오는 것을 알 수 있습니다.
드디어 local환경에 설치를 완료했습니다

댓글