티스토리 뷰

반응형

이번시간에는 ELK(Elasticsearch+Logstash+Kibana) 를 설치하여 ELK Stack 서버를 구축해 보겠습니다. 
현재 Elasticsearch는 7.5 버전까지 출시가 되었으며, CentOS에서 Yum 패키지를 통해 설치해 보도록 하겠습니다. 

Elasticsearch는 7.5 버전의 새로운 기능 및 릴리즈 정보는 아래 링크를 참고하시기 바랍니다.  
Elastic Stack 7.5.0 출시

< OS 환경 설정>
  - OS : Centos 7 64bit
  - Partition : / 50G  (System 영역)
                   /ELK  300G (ELK Data  영역)
  - CPU : 8Core
  - RAM : 32G


1. Java 설치 ( java 8 이상)

  Elasticsearch 는 Java8 이상이 필요합니다. 만약 java가 설치되어 있지 않으면 jdk 1.8.0-openjdk 파일을 설치합니다.

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@localhost ~]# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
BDB2053 Freeing read locks for locker 0x1b: 5689/140083220739904
Loaded plugins: fastestmirror
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  mesa-libglapi.x86_64 0:18.3.4-5.el7                   pango.x86_64 0:1.42.4-4.el7_7
  pcsc-lite-libs.x86_64 0:1.8.8-8.el7                   pixman.x86_64 0:0.34.0-1.el7
  python-javapackages.noarch 0:3.4.1-11.el7             python-lxml.x86_64 0:3.2.1-4.el7
  ttmkfdir.x86_64 0:3.0.9-42.el7                        tzdata-java.noarch 0:2019c-1.el7
  xorg-x11-font-utils.x86_64 1:7.5-21.el7               xorg-x11-fonts-Type1.noarch 0:7.5-9.el7
  
Complete!
[root@localhost ~]# 

 Java 버전 확인

[root@localhost ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
[root@localhost ~]# 

2. Elasticsearch PGP 키 가져오기
   Elasticsearch 설치시 공개 서명키가 필요하며, 아래와 같이 공개 서명키(public signing key) 를 설치해줍니다. 

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

3. Elastic repository 설정
  /etc/yum.repos.d 디렉토리 밑에 Elastic.repo 라는 파일을 만들고 아래의 Repository 정보를 등록합니다.

vi /etc/yum.repos.d/Elastic.repo

[Elastic-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

 Elasticsearch, Logstash, Kibana 모두 동일한 저장소를 사용하고 있어서 한번만 등록해 주면 됩니다. 

4. Elasticsearch/ Logstash / Kibana  설치 
  Repository 등록 후 Yum을 통해 ELK 패키지를 설치합니다. 

yum -y install elasticsearch

yum -y install logstash

yum -y install kibana

5. 환경 설정
  ELK 설치가 완료되면 아래와 같이 추가적으로 설정값을 변경해 주면 됩니다. 디스크 용량 관리차원에 서 로그 데이터 파티션을 별도 분리하여 관리하고, Java heap 메모리 설정 및 성능 튜닝등을 통해 퍼포먼스를 향상킬 수 있습니다. 

 1) Elasticsearch.yml 파일 수정 및 디렉토리 생성

  -  elasticsearch가 환경 설정 파일 :  /etc/elasticsearch/elasticsearch.yml 

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

cluster.name: clustername        // 클러스터 이름 변경(선택)
path.logs: /ELK/log/elasticsearch   // elasticsearch 로그 파일 위치
path.data: /ELK/elasticsearch       // elasticsearch 데이터 파일 위치
network.host: 0.0.0.0    // elasticsearch 바인딩 정보
http.port: 9200    // elasticsearch 서비스 포트(default 9200)

## 성능 튜닝 관련 설정. 
thread_pool.search.queue_size: 10000  
indices.memory.index_buffer_size : 512mb  
cluster.max_shards_per_node : 3000 

  - elasticsearch 디렉토리 생성 및 소유권 변경 

mkdir /ELK/log                  // 로그 파일 디렉토리 생성
mkdir /ELK/log/elasticsearch    // elasticsearch 로그 디렉토리 생성
mkdir /ELK/elasticsearch        // elasticsearch 데이터 디렉토리 생성

## 디렉토리 소유권 변경 ( root => elasticsearch )
chown elasticsearch.elasticsearch /ELK/log/elasticsearch -R
chown elasticsearch.elasticsearch /ELK/elasticsearch -R

  2) elasticsearch jvm.options heap 메모리 사이즈 조절
   Heap 메모리 사이즈는 최대 32G 이하로 세팅하는 것을 권장하며, 여기서는 32G 메모리의 절반인 16G 로 세팅하였습
 니다.  heap 메모리 관련이나  성능 튜닝관련해서는 차후에 따로 포스팅을 하도록 하겠습니다. 

vi /etc/elasticsearch/jvm.option
-Xms1g    =>  Xms16g
-Xmx1g    =>  Xms16g

 3)  logstash.yml 파일 수정 및 디렉토리 생성

  -  logstash 환경 설정 파일 : /etc/logstash/logstash.yml

vi /etc/logstash/logstash.yml

path.data: /ELK/logstash/
path.logs: /ELK/log/logstash

  - logstash 디렉토리 생성 및 소유권 변경

mkdir /ELK/log/logstash    // logstash 로그 디렉토리 생성
mkdir /ELK/logstash        // logstash 데이터 디렉토리 생성

## 디렉토리 소유권 변경 ( root => logstash )
chown logstash.logstash /ELK/log/logstash -R
chown logstash.logstash /ELK/logstash -R


 4) logstash jvm 옵션 heap 메모리 조절 ( 1G => 4G )
   logstash heap 메모리도 시스템 사양에 따라 적절하게 값을 할당해 주시면 됩니다. 여기서는 4G로 할당하였습니다

vi /etc/logstash/jvm.option
-Xms1g    =>  Xms4g
-Xmx1g    =>  Xms4g

  5) kibana.yml 환경 설정
  -  kibana 환경 설정 파일 : /etc/kibana/kibana.yml

vi /etc/kibana/kibana.yml

server.host: 0.0.0.0
elasticsearch.hosts: "http://localhost:9200"

6. Elasticsearch , Kibana 시작 및 서비스 등록

systemctl enable elasticsearch
systemctl start elasticsearch
systemctl enable kibana
systemctl start kibana

7. Logstash  파일 생성 및 Logstash 실행
  Logstash는 외부 로그데이터 전송시 로그를 수집하고(Input), 변환한 후(filter), elasticsearch로 전송(output) 해주는 역할을 합니다. logstash 실행시 데이터 수집 및 변환 출력을 위한 필터가 필요합니다. 

  1) logstash 필터 파일 구조 ( logstash.conf , 파일 이름 임의 생성 가능 )
    원하는 이름으로 생성하시면 되며 아래와 같은 구조로 작성을 합니다.

input {
    udp {      
        host => "0.0.0.0"
        port =>  514
    }

filter {
     grok {
           match => ["message", "%{SYSLOG5424PRI:syslog_index}%{GREEDYDATA:message}"]
           overwrite => [ "message" ]
     }
}

output {
       elasticsearch { hosts => ["localhost:9200"] }
       stdout { codec => rubydebug }
}
  ※  input : 로그데이터를 수신할 프로토콜 및 포트, 코덱 등을 정의
  ※  filter :  수신한 로그에 대한 파싱, 인덱싱 및 변환 작업
  ※  output :  변환한 데이터를 Elasticsearch 등 외부 저장소로 출력


8. ELK 서비스 포트 방화벽 허용

## Allow Logstash Input
firewall-cmd --add-port=514/udp
firewall-cmd --add-port=514/udp --permanent

## Allow Elasticsearch
firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

## Allow Kibana
firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent

9. Logstash 서비스 실행.

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf  --path.settings /etc/logstash &

 아래와 같은 메시지가 뜨면 정상적으로 서비스가 실행이 된것입니다. 

[INFO ][logstash.agent] Successfully started Logstash API endpoint {:port=>9600}

 

10. Kibana 웹 URL 접속

http://ELK_ServerIP:5601

웹브라우저에서 http://elk_server_ip:5601 로 접속하면 아래와 같이 Kibana Web UI 화면이 보이게 됩니다. 

다음번에는 Kibana 접속시 아파치 웹 서버를 통한 로그인 인증 설정 방법, 
logstash.conf 에 다양한 로그 형식에 대한 필터링 설정 예시 등 대해서 포스팅 하도록 하겠습니다. 

궁금하신 내용 있으면 댓글 남겨 주시면 답변 드리도록 하겠습니다. 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함