검색 시스템을 구축하기 위해 먼저 ELK Stack 환경을 구성하려고한다.
(ELK는 Elastic Search와 Logstash, Kibana를 앞글자만 딴 단어이다.)
스럽 ELK Stack 구성 Java 11 Elastic Search 7.0 Logstash 7.0 Kibana 7.0 |
Elasticsearch는 검색 및 분석을 위한 오픈 소스 분산 검색 엔진이고, Kibana는 Elasticsearch로부터 수집된 데이터를 시각화하고 분석하는 데 사용되는 오픈 소스 도구이다.
Elasticsearch와 Kibana와 함께 사용하면 데이터 수집, 분석 및 시각화를 효과적으로 수행할 수 있다.
Logstash는 데이터 처리 파이프라인을 구축하기 위해 사용되며, 수집기능을 해준다.
이러한 도구들을 함께 사용하면 데이터 처리와 분석을 통해 중요한 정보를 추출하고 이해하기 쉬워진다!
스럽에서는 Logstash를 통해 DB에 저장된 데이터를 ElasticSearch에 저장하고 있다.
Logstash는 기본적으로는 DB와 연동하여 인덱스를 자동 생성하는 기능은 기본적으로 내장되어 있지는 않지만, input 플러그인을 제공한다. 이를 통해 JDBC를 사용하여 DB와 연동하여 데이터를 수집하고있다. 이렇게 수집한 데이터를 일정 간격으로 Elasticsearch에 전송하면 Elasticsearch에서는 자동으로 인덱스를 생성하게 되는데, 이를 이용해 DB와 elastic search에 있는 데이터를 동기화한다.
이제 로컬환경에 ELK 이 3가지를 모두 설치해보자
현재 로컬환경에는 Elastic search 7.17.4 버전이 설치되어있고, 이를 삭제 후 7.0.0 버전으로 재설치하는 작업을 진행했다.
새롭게 설치하는 사람은 삭제하는 과정은 생략하면 된다 .
재설치를 하기 전에 기존에 사용하던 7.27.4 버전을 삭제해준다. 기존에 brew를 통해 설치했으므로 삭제도 brew를 통해서 진행했다.
다시 설치할 때는 homebrew를 사용하지 않았으니, 필요하신 분들은 아래 링크 참고하면 된다.
- brew에 설치된 목록을 확인 후 삭제한다.
brew list
brew uninstall elasticsearch-full
관련 파일들은 수동으로 삭제해주었다.
- 아래 링크를 통해서 7.0.0 버전을 설치한다. (본인이 사용할 버전에 맞게 설치해주면 된다.)
https://www.elastic.co/kr/downloads/past-releases/elasticsearch-7-0-0
- 사용중인 OS를 선택하여 다운로드 받는다.
- 다운로드 후 원하는 경로로 이동시켜 압축 해제한다.
** "확인되지 않은 개발자의 MAC 앱 열기" 오류가 생길 경우 참고
- elasticsearch-x.x.x 폴더가 생기면 정상적으로 설치가 된 것이다 !! 구성은 아래와 같다.
- elasticsearch-x.x.x 경로에서 터미널 창을 켜고 아래 명령어를 실행한다.
./bin/elasticsearch
- elastic search는 기본적으로 9200 포트를 사용한다. localhost:9200 포트로 접속하면 7.0.0 버전으로 설치된 것을 확인할 수 있다.
- brew에 설치된 목록을 확인 후 삭제한다.
brew list
brew uninstall kibana-full
- 아래 링크를 통해서 7.0.0 버전을 설치한다. (본인이 사용할 버전에 맞게 설치해주면 된다.)
https://www.elastic.co/kr/downloads/past-releases/kibana-7-0-0
- 사용중인 OS를 선택하여 다운로드 받는다.
- 다운로드 후 원하는 경로로 이동시켜 압축 해제한다.
- elastic search와 유사하게 정상적으로 설치되면 kibana-x.x.x 폴더가 생기고 구성은 아래와 같다!
- kibana-x.x.x 경로에서 터미널 창을 켜고 명령어 실행한다.
./bin/kibana
** 오류 해결
[03:27:58.467] [fatal][root] { Error: getaddrinfo ENOTFOUND localhost
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'localhost' }
이런 오류가 날 경우 config 경로에 kibana.yml 설정 파일을 수정해준다. (elasticsearch와 연결해서 사용하기위해 필요하다. 버전에 따라서 url, hosts 등의 사용이 다른 듯하다. )
server.host: "0.0.0.0"
** 오류 해결
("Request error, retrying HEAD http://localhost:9200/ => getaddrinfo ENOTFOUND localhost localhost:9200 "
오류가 발생해서 hosts 파일을 수정해줬다. (이전에 host를 추가하면서 localhost 부분이 주석처리 된 것이 문제였다. )
* hosts 파일 수정하는 방법
- 키바나의 디폴트 포트는 5601이다. localhost:5601로 접속하면 정상 실행된다. (devtool 기능을 주로 사용할 예정이다! )
(동일 과정 생략)
https://www.elastic.co/kr/downloads/past-releases/logstash-7-0-0
단, lostash는 conf 파일과 함께 실행되어야한다 !
logstash config 경로에 logstash-sample.conf 파일이 있다. 말그대로 sample 파일인데 임시로 수정해서 Logstash와 함께 실행할 수 있다. conf 파일은 index별로 생성해야하고, 추후에 필요한 파일은 추가 후 logstash와 함께 실행하면 된다. 이후에 따로 포스팅 할 예정이다.
- 실행 명령어이다.
./bin/logstash -f [conf 파일 경로]
** 오류 해결:
Unrecognized VM option 'UseConcMarkSweepGC'
자바 버전 관련 문제라고한다. 11로 바꿔주니 해결되었다.
참고하여 환경 변수 설정해 준 후 source ~/.bash_profile 명령어로 수정사항을 반영하자.
여기까지가 ELK의 기본적 설치 과정이다 ! !
3가지 도구를 잘 활용하면 로그 분석, 애플리케이션 모니터링, 검색 엔진 등에 유용하게 사용할 수 있다.
엘라스틱 서치에서는 다양한 기능을 가진 플러그인을 지원한다. 스럽에서는 형태소 분석을 위해 노리 한글 형태 형태소 분석기를 사용한다.
참고 링크
https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori
플러그인 설치는 elastic search만 잘 설치되어있다면 간단하다.
- 해당 경로에서 위 명령어를 입력한다.
/bin/elasticsearch-plugin install analysis-nori
- 성공적으로 설치되면 엘라스틱 서치 경로에 plugins 폴더가 생성된다. (직접 zip 파일로 다운받아도 가능하다. )
[Elastic Search ] Logstash - mysql 연동하기 (0) | 2023.04.30 |
---|---|
[Elastic search] 데이터 검색 (0) | 2023.04.29 |
[Elastic Search] 데이터 모델링 (0) | 2023.04.24 |
[Elastic Search] elastic search 기본 개념잡기 (2) | 2023.04.23 |
댓글 영역