about absolroot
home

Elastic Search(ELK Stack) 설치 및 Zeek 연동

ELK 설치를 할 때 생각보다 많은 곳에서 컴파일부터 시작하거나, 각각의 파일을 따로 구해서 설정을 해주는 등 방법이 각각 달랐다. 블로그를 보고 하기엔 시행착오가 상당히 많았고 공식 문서를 기반으로 설치한 과정을 정리한다.

Elastic 공식 Document

Elastic Search → Kibana → Logstash → Beats → APM → ElasticSearch Hadoop
프로세스를 요구하지만 실질적으로 Logstash까지만 설치해도 무방하다. (심지어 Elastic Agent를 활용하고 작은 서버라면 이마저도 필요없다)
Ubuntu 20.04를 기준으로 설치한다.

1. ELK 설치

1-1. openjdk 8버전 설치하기 (JAVA 환경설정이 안돼있으면 엘라스틱 실행이 안된다.)

sudo apt update #설치 가능한 패키지 리스트 업데이트 sudo apt upgrade -y #설치된 패키지들 최신 업데이트 sudo apt-get install openjdk-8-jdk -y
Bash
복사

1-2. JAVA 환경설정

vi /etc/profile #맨 아래줄에 다음 입력 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH export Class_PATH=$JAVA_HOME/lib:$CLASS_PATH
Bash
복사
잘 설치됐는지 확인
java -version
Bash
복사

1-3. ELK 설치하기

디렉토리에서 다음을 수행한다. (ELK 설치 모두)
#ElasticSearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-linux-x86_64.tar.gz.sha512 shasum -a 512 -c elasticsearch-8.6.2-linux-x86_64.tar.gz.sha512 tar -xzf elasticsearch-8.6.2-linux-x86_64.tar.gz # cd elasticsearch-8.6.2/ #Kibana curl -O https://artifacts.elastic.co/downloads/kibana/kibana-8.6.2-linux-x86_64.tar.gz curl https://artifacts.elastic.co/downloads/kibana/kibana-8.6.2-linux-x86_64.tar.gz.sha512 | shasum -a 512 -c - tar -xzf kibana-8.6.2-linux-x86_64.tar.gz # cd kibana-8.6.2/ #Logstash #Download and install the Public Signing Key wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg #install the apt-transport-https package on Debian before proceeding sudo apt-get install apt-transport-https #Save the repository definition to /etc/apt/sources.list.d/elastic-8.x.list: echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list #Run sudo apt-get update and the repository is ready for use sudo apt-get update && sudo apt-get install logstash #FireBeat 설치(필수아님, Elastic Agent 활용 예정) curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.6.2-linux-x86_64.tar.gz tar xzvf filebeat-8.6.2-linux-x86_64.tar.gz
Bash
복사

1-4. ElasticSearch 실행

~/elasticsearch-8.6.2/bin/elasticsearch
Bash
복사
Kibana를 실행해서 토큰을 입력하도록 유도한다. (토큰은 30분간 유효)
각 토큰을 모두 복사해두자.

1-5. Kibana 실행

~/kibana-8.6.2/bin/kibana
Bash
복사
VM에서 실행시키니 localhost를 접속할 수 없다. IP로 바꿔주자.
vi ~/kibana-8.6.2/config/kibana.yml
Bash
복사
localhost 부분을 서버 IP로 바꾸고 앞 # 주석을 지운다. port도 혹시 다른 운용중인 서버와 충돌할까 바꿔줬다.
다시 Kibana를 실행한다
앞서 구한 엘라스틱서치의 토큰을 입력하자, 로그인도 주어진 비밀번호를 입력하면 접속된다.

2. Zeek ELK에 연동하기 (Elastic Agent)

2-1. Zeek 설치하기

2-2. Elastic Agent - Zeek Integrations 사용하기

해당 건이 잘 정리되 블로그가 없어 문서를 보며 차근차근 직접 처음부터 진행해봤다.
기존에 알려진 방법은 beats를 활용해 보내는 방식이지만 Elastic에서 지원하는 Agent를 통해 zeek로그 수집이 가능하다.
Integrations에서 zeek을 검색하고 추가
그냥 아무 이름으로 설정해도 무방하다.
추가하면 다음에서 확인이 가능하다.
+Add Egent 를 클릭하면 다음과 같이 Agent를 OS별로 설치하는 방법을 안내한다.
Agent 설정파일 (elastic-agent.yml)
ID, PW값 본인 걸 넣어서 설치
Agent 설치
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.6.2-linux-x86_64.tar.gz tar xzvf elastic-agent-8.6.2-linux-x86_64.tar.gz cd elastic-agent-8.6.2-linux-x86_64 sudo ./elastic-agent install
Bash
복사
Fleet은 별도의 서버럴 구성하는 방식이지만 StandAlone 방식으로 구동하므로 n을 입력해준다.
zeek 설정을 통해 Json 포맷으로 로그 변환 설정
vi /opt/zeek/share/zeek/site/local.zeek
Bash
복사
다음을 local.zeek 최하단에 추가한다.
@load policy/tuning/json-logs.zeek
!!!! 삽질 안하려면 필독
/spool/installed-scripts-do-not-touch/site/local.zeek
도 동일하게 수정해줘야 json 형식으로 변경된다. 이것 때문에 인덱싱이 제대로 안돼서 정말 고생했다.
Kibana에서 Zeek 로그가 수집되는걸 볼 수 있다.

3. 프로세스 백그라운드로 실행시키기

그냥 ssh로 붙여서 실행하고 끊으면 서비스가 모두 종료된다.
지속적으로 수집해야되니 백그라운드로 서비스들을 실행시키자.
백그라운드 실행시킬 서비스 목록
zeek
kibana
elastic search
elastic agent
실행시킬 때 백그라운드로 실행
$ nohup [실행명령] &
Bash
복사
처음에 백그라운드로 실행하지 못했다면 Ctrl+z 를 입력한 뒤 bg 를 입력한다.
&뒤에 붙이고 앞에 nohup 명령어를 쳐줘도, bg를 입력해도 끊기는 경우가 있다.
실행을 한다음에 엔터를 치고, 아래 명령어를 치면 계속 유지된다.
$ disown -h
Bash
복사
백그라운드에서 실행 중인지 확인하기
jobs $ ps -ef | grep [실행명령]
Bash
복사
백그라운드에서 실행 중인 프로세스 죽이기
$ kill -9 아이디번호
Bash
복사

4. 에러 해결

Kibana xpack.Encryptionkey

curl in ElasticSearch

✓ 다른 [정리] 포스트

베트남 환전 왜 한국에서 하면 안될까? (한국 vs 공항 vs 금은방)
Travel
베트남 환전 왜 한국에서 하면 안될까? (한국 vs 공항 vs 금은방)
Travel
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2024. Absolroot all rights reserved.