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. 지원 매트릭스 확인
- 다음 사이트에 들어가 설치하려는 버전의 호환성을 확인합니다.
- https://www.elastic.co/kr/support/matrix#matrix_compatibility
4. RPM 파일 다운로드 및 설치
- ELK를 설치하는 방법에는 repo파일을 작성하거나 rpm파일을 다운로드 받아서 설치하는 방법이 있습니다.
- 필자는 RPM 파일을 다운받아서 설치하는 방식을 사용했습니다.
[다운로드 링크]
https://www.elastic.co/kr/downloads/elasticsearch
https://www.elastic.co/kr/downloads/kibana
https://www.elastic.co/kr/downloads/logstash
[다운로드 페이지]
링크에 접속하게 되면 아래 사진과 같이 원하는 타입의 다운로드 방식을 선택합니다.
다운로드 URL을 복사하여 사용합니다. (혹은 ftp를 이용하여 직접 업로드해도 됩니다.)
다른 버전이 필요하다면 오른쪽 사이드 메뉴에서 View past releases를 클릭하여 다른 여러 버전들도 편하게 다운로드할 수 있습니다.
[다운로드 및 설치]
필자는 테스트 서버인 관계로 인증서 관련 오류 때문에 --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"
}
'Backend > ELK Stack' 카테고리의 다른 글
[elasticsearch] Content-Type header [application/x-www-form-urlencoded] is not supported (406 에러) (0) | 2022.01.17 |
---|---|
[elasticsearch] 엘라스틱서치 Curl HTTP REST API (0) | 2022.01.16 |