[ELK] Linux(Ubuntu)에서 ELK 스택 구축
설치환경
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 managers에 apt-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을 날린 후 에러발생 ❗️
Elasticsearch를 설치할 때 버전을 명시하지 않으면 기본적으로 8버전이 설치됨. Elasticsearch 8버전부터는 보안이 강화되어 SSL/TLS 설정을 직접 변경해야 함. 결국 http로 curl을 요청하면 응답 에러남. elasticsearch.yml에서 SSL/TLS 관련 설정 false로 바꿔주면됨.
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
- Filebeat 구동
# start : 서비스 구동 명령어
sudo systemctl start filebeat
6. 모든 작업이 끝나면 데이터 확인
- .csv 파일에 있는 데이터가 conf 파일에 필터에 적용했던 모양대로 데이터가 생성 되는걸 확인 가능
sudo journalctl -u logstash.service
- elasticsearch head에서도 생성 확인 가능
보기에 별거 아닌 파이프라인 구축이지만 가상머신에 우분투 구축까지하면 하루종일 걸렸네요 ㅠㅠ
해보시는 분들 화이팅 입니다 하고나면 너무 뿌듯하네요!!