나의보물들/ELK

[ELK] Linux(Ubuntu)에서 ELK 스택 구축

솔솔하네 2024. 7. 21. 23:29
반응형
설치환경
UTM (Virtual machines for Mac)
Ubuntu 22.04.4 LTS

설치목록
Elasticsearch
Logstash
Filebeats

 

ELK 스택


 

1. JDK 설치

   * Logstash에 포함된 JDK 버전을 보면 Java 11을 사용하고 있으므로 JDK 11 버전을 다운로드하고 설치했습니다.

     (윈도우에서 17버전으로 하니 오류가 난적이 있어서 처음부터 11로 고고)

# java11 설치
sudo apt install openjdk-11-jdk-headless

# profile 파일 편집 들어가기
sudo vi ~/.profile

# JAVA_HOME, PATH 설정(추가하기)
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
export PATH=$PATH:$JAVA_HOME/bin 

# shell에 적용
source ~/.profile

# 경로 확인
echo $JAVA_HOME

 

2. Elasticsearch 설치 및 구동

 -  Elasticsearch 다운로드

    (아래 페이지에 들어가서 Package managersapt-get들어가면 상세설명 나와있음)

https://www.elastic.co/kr/downloads/elasticsearch

 

Download Elasticsearch

Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic....

www.elastic.co

# GPG 키 다운로드 및 저장 (GPG 키는 패키지의 출처를 검증하고, 패키지가 변조되지 않았는지 확인하기 위해 사용됨)
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

# HTTPS를 통한 패키지 전송 지원 패키지 설치 (HTTPS를 통해 안전하게 패키지를 다운로드할 수 있도록 apt에 HTTPS 전송 기능을 추가)
sudo apt-get install apt-transport-https

# Elasticsearch 패키지 저장소 추가 (apt가 Elasticsearch 패키지를 찾을 수 있도록 패키지 저장소를 시스템에 등록)
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

# Elasticsearch install
sudo apt-get update && sudo apt-get install elasticsearch

 

  - Elasticsearch 구동 

# start : 서비스 구동 명령어
sudo systemctl start elasticsearch

# enable : 서버가 실행되면 자동 서비스 구동
sudo systemctl enable elasticsearch

# disable : 서버가 실행되면 자동 서비스 구동 비활성화
sudo systemctl disable elasticsearch

 

 - elasticsearch.yml 수정

# elasticsearch.yml 파일 편집
sudo vi /etc/elasticsearch/elasticsearch.yml

# 외부에서도 접속할 수 있게  0.0.0.0으로 수정
network.host: 0.0.0.0

discovery.seed_hosts: ["0.0.0.0"]

  

  - Elasticsearch 테스트 

curl -X GET "localhost:9200/"

 

curl 테스트 성공 시 접속 확인
curl 테스트 시 실패 화면


   

❗️curl을 날린 후 에러발생 ❗️

Elasticsearch를 설치할 때 버전을 명시하지 않으면 기본적으로 8버전이 설치됨. Elasticsearch 8버전부터는 보안이 강화되어 SSL/TLS 설정을 직접 변경해야 함. 결국 http로 curl을 요청하면 응답 에러남. elasticsearch.yml에서  SSL/TLS 관련 설정 false로 바꿔주면됨.

https://stackoverflow.com/questions/71492404/elasticsearch-showing-received-plaintext-http-traffic-on-an-https-channel-in-con

 

Elasticsearch showing received plaintext http traffic on an https channel in console

I am trying to setup elasticsearch in my Windows system but when I am trying to run it its starting up and showing below reponse when I redirect to http://localhost:9200. { "name" : "

stackoverflow.com

 

 - 아래 처럼 설정 파일 수정 후 [sudo systemlctl restart elasticsearch]명령어로 재실행

 

- 호스트 서버에서 테스트

 1. 호스트에서 포트포워딩 하기

ssh username@192.168.64.3 -p 22 -L 9200:localhost:9200

 

2.  http://localhost:9200/ 으로 접속해서 아래와 같이 나오면 성공

 

 

3. Kibana 설치 및 구동

 - Kinaba 다운로드 

sudo apt-get update && sudo apt-get install kibana

 

- kibana.yml 파일 수정

# kibana.yml 파일 편집
sudo vi /etc/kibana/kibana.yml

# kibana.yml 주석 해제
server.port: 5601

# server.host 수정
server.host: "0.0.0.0"

# elasticsearch.hosts 주석 해제 
elasticsearch.hosts: ["http://localhost:9200"]

 

- Kibana 구동

# start : 서비스 구동 명령어
sudo systemctl start kibana

 

4. Logstash 설치 및 구동

 - Logstash 다운로드 

sudo apt-get update && sudo apt-get install logstash

 

- conf파일 생성하기

sudo vi /etc/logstash/conf.d/{파일명}.conf
input {
 # filebeat에서 데이터를 받을 port 지정
  beats {
    port => 5044
  }
}
filter{
	# 필터링
}
output {

  # 콘솔창에 어떤 데이터들로 필터링 되었는지 확인
  stdout {
    codec => rubydebug
  }

  # Elasticsearch 로 "{index명}" 라는 이름으로 인덱싱
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "{index명}"
  }
}

 

- Logstash 구동 

# start : 서비스 구동 명령어
sudo systemctl start logstash

 

- 홈 디렉터리에서 폴더 생성 후 .csv파일 생성 해서 데이터 넣기

5.Filebeat 설치

 - Filebeat 설치

sudo apt-get update && sudo apt-get install filebeat

 

- fiilebeat.yml 파일 수정

sudo vi /etc/filebeat/filebeat.yml

 

pahts 의 첫번째 라인 주석 후 input하려는 데이터 경로 추가
Filebeat inputs 의 enbled true로 변경
Logstash Ouput 부분 주석해제
Elasticsearch Output 다 주석

 

- Filebeat 구동 

# start : 서비스 구동 명령어
sudo systemctl start filebeat

 

 

6. 모든 작업이 끝나면 데이터 확인

 - .csv 파일에 있는 데이터가 conf 파일에 필터에 적용했던 모양대로 데이터가 생성 되는걸 확인 가능

sudo journalctl -u logstash.service

 

- elasticsearch head에서도 생성 확인 가능

 

 

 


보기에 별거 아닌 파이프라인 구축이지만 가상머신에 우분투 구축까지하면 하루종일 걸렸네요 ㅠㅠ 

해보시는 분들 화이팅 입니다 하고나면 너무 뿌듯하네요!!