본문으로 바로가기

1. ELK

  • ElasticSearch: 인덱싱이 되고 있는 DB (저장 & 검색)
  • Logstash: 다양한 로그를 Input으로 받아 전처리를 하고 Elastic Search에 쌓을 수 있는 미들웨어 (로그 파싱)
  • Kibana: 대시보드 (로그 시각화)

2. 자바 설치

ELK를 활용하기 위해서는 자바 설치는 필수입니다.

필자는 CentOS7에 기본으로 설치된 자바 8을 지우고 자바 11을 설치하였습니다.

1. 설치된 자바 확인
# rpm -qa | grep java
java-1.8.0-openjdk-headless-1.8.0.292.b10-1.el7_9.x86_64
java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
tzdata-java-2021a-1.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
python-javapackages-3.4.1-11.el7.noarch

2. 자바 8 제거
# yum remove java java-1.8.0*

3. 설치 할 수 있는 자바 버전 확인
# yum list java*jdk-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
base                                                                                                                                                                       | 3.6 kB  00:00:00     
extras                                                                                                                                                                     | 2.9 kB  00:00:00     
http://yum.mariadb.org/10.5.9/centos7-amd64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
Trying other mirror.
To address this issue please refer to the below wiki article 

https://wiki.centos.org/yum-errors

If above article doesn't help to resolve this issue please use https://bugs.centos.org/.

updates                                                                                                                                                                    | 2.9 kB  00:00:00     
Available Packages
java-1.6.0-openjdk-devel.x86_64                                                                 1:1.6.0.41-1.13.13.1.el7_3                                                                 base   
java-1.7.0-openjdk-devel.x86_64                                                                 1:1.7.0.261-2.6.22.2.el7_8                                                                 base   
java-1.8.0-openjdk-devel.i686                                                                   1:1.8.0.322.b06-1.el7_9                                                                    updates
java-1.8.0-openjdk-devel.x86_64                                                                 1:1.8.0.322.b06-1.el7_9                                                                    updates
java-11-openjdk-devel.i686                                                                      1:11.0.14.0.9-1.el7_9                                                                      updates
java-11-openjdk-devel.x86_64                                                                    1:11.0.14.0.9-1.el7_9                                                                      updates

4. 자바 11 설치
# yum install -y java-11-openjdk-devel.x86_64

3. 지원 매트릭스 확인

4. RPM 파일 다운로드 및 설치

  • ELK를 설치하는 방법에는 repo파일을 작성하거나 rpm파일을 다운로드 받아서 설치하는 방법이 있습니다.
  • 필자는 RPM 파일을 다운받아서 설치하는 방식을 사용했습니다.

 

[다운로드 페이지]

링크에 접속하게 되면 아래 사진과 같이 원하는 타입의 다운로드 방식을 선택합니다.

download type

다운로드 URL을 복사하여 사용합니다. (혹은 ftp를 이용하여 직접 업로드해도 됩니다.)

copy url

다른 버전이 필요하다면 오른쪽 사이드 메뉴에서 View past releases를 클릭하여 다른 여러 버전들도 편하게 다운로드할 수 있습니다.

View past releases
releases page

 

[다운로드 및 설치]

필자는 테스트 서버인 관계로 인증서 관련 오류 때문에 --no-check-certificate 옵션을 사용했습니다.

# cd /usr/local/src

# wget --no-check-certificate https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-x86_64.rpm
# wget --no-check-certificate https://artifacts.elastic.co/downloads/kibana/kibana-7.16.3-x86_64.rpm
# wget --no-check-certificate https://artifacts.elastic.co/downloads/logstash/logstash-7.16.3-x86_64.rpm

# yum localinstall -y elasticsearch-7.16.3-x86_64.rpm, kibana-7.16.3-x86_64.rpm, logstash-7.16.3-x86_64.rpm
Dependencies Resolved

====================================================================================================================
 Package                   Arch               Version                Repository                                Size
====================================================================================================================
Installing:
 elasticsearch             x86_64             7.16.3-1               /elasticsearch-7.16.3-x86_64             493 M
 kibana                    x86_64             7.16.3-1               /kibana-7.16.3-x86_64                    732 M
 logstash                  x86_64             1:7.16.3-1             /logstash-7.16.3-x86_64                  601 M

Transaction Summary
====================================================================================================================

5. 설정

실행을 위해 설정 파일을 수정합니다.

 

[ElasticSearch 설정]

  • 외부에서 접근할 수 있도록 설정합니다.
  • 9200 - ES 기본 포트
  • 9300 - ES 노드들 간에 통신을 위한 포트
# cd /etc/elasticsearch/
# ls
elasticsearch-plugins.example.yml  elasticsearch.yml  jvm.options.d      role_mapping.yml  users
elasticsearch.keystore             jvm.options        log4j2.properties  roles.yml         users_roles

# vi /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0 // 수정
discovery.seed_hosts: ["host1", "host2"] // 주석해제

[network.host]

특정 IP만 엘라스틱서치에 접근하도록 허용할 수 있습니다. 
선택적으로 허용해야 할 경우 [1.1.1.1, 2.2.2.2]와 같이 지정하고, 모든 IP를 허용한다면 0.0.0.0을 지정하면 됩니다.

 

[Kibana 설정]

  • 외부에서 접근할 수 있도록 설정합니다.
  • 5601 - kibana 기본 포트
# cd /etc/kibana/
# ls
kibana.keystore  kibana.yml  node.options

# vi /etc/kibana/kibana.yml
server.host: "0.0.0.0"

 

[방화벽 설정]

# firewall-cmd --zone=public --permanent --add-port=9200/tcp
# firewall-cmd --zone=public --permanent --add-port=5601/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --list-all

6. 실행

1. ELK 실행
# systemctl start elasticsearch.service
# systemctl start kibana.service
# systemctl start logstash.service

2. PORT 확인
# netstat -ntap | grep LISTEN

 

[실행 확인]

엘라스틱 서치 확인
# curl localhost:9200
{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "QJyMT9huSmuQys3Ze79AAQ",
  "version" : {
    "number" : "7.16.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "4e6e4eab2297e949ec994e688dad46290d018022",
    "build_date" : "2022-01-06T23:43:02.825887787Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

키바나