Search

ELK Stack 연동1

패키지 제거 명령어

sudo apt-get purge [패키지 이름]
Bash
복사

1. Elastic Search 설치

ELK Stack 구성요소는 기본적으로 Ubuntu의 apt 저장소에서 사용 불가 Elastic의 패키지 소스 목록을 수동으로 추가해야함

1.1 GPG키 다운로드

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
Bash
복사
Elasticsearch의 GPG 키를 다운로드하여 elastic.gpg라는 파일로 저장 해당 키는 패키지의 신뢰성을 검증하는 데 사용
GPG? GNU Privacy Guard Key 소프트웨어 패키지의 신뢰성을 검증하기 위해 사용되는 암호화 키 소프트웨어를 다운로드할 때, 이 키를 통해 해당 소프트웨어가 공식 출처에서 배포된 것인지 확인할 수 있다.

1.2 Elasticsearch 패키지 저장소 추가

echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Bash
복사

1.3 필수 패키지 설지

sudo apt-get install apt-transport-https
Bash
복사

1.3 업데이트 및 설치 진행

sudo apt update sudo apt install elasticsearch=7.16.2
Bash
복사

1.4 구성 파일 수정

sudo vi /etc/elasticsearch/elasticsearch.yml
Bash
복사
56번 라인 주석 해제 및 localhost 입력
기본적으로 로컬호스트만 접근 가능하며 외부에서 접근하게 만들 때 수정
그러나 명시적으로 로컬호스트를 지정하여 설정의 명확성 확보

1.5 서비스 시작 및 활성화

sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
Bash
복사

1.6 테스트

curl -X GET "localhost:9200"
Bash
복사
설치에 문제가 없다면 아래와 같이 출력됨

2. Kibana, Nginx 설치

2.1 패키지 설치

sudo apt install kibana=7.16.2
Bash
복사

2.2 서비스 활성화 및 시작

sudo systemctl enable kibana sudo systemctl start kibana
Bash
복사

2.3 Nginx 설치

sudo apt install nginx
Bash
복사
Nginx? Kibana 는 기본적으로 localhost 에서만 접근 가능하기 때문에 외부에서 접근할 수 있도록 하기 위해 역방향 프록시를 설정해야함 해당 기능을 위해 Nginx를 사용 Nginx 의 추가 기능 1. 보안 강화 (HTTPS) 2. 접속제어 (IP 제한, 인증 등 설정 가능) 3. 부하 분산 (트래픽 분산)

2.4 Kibana 사용자 생성

echo "newtour:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
Bash
복사

2.5 서버 블록 수정 및 도메인 지정

sudo vi /etc/nginx/sites-available/default
Bash
복사
아래 내용 작성
server { listen 80; server_name kibana.local; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Bash
복사

2.6 구성파일 테스트 및 Nginx 재로드

sudo nginx -t sudo systemctl reload nginx
Bash
복사
정상 적용 시 syntax is ok 가 출력
방화벽이 Nginx를 차단하고 있는 경우 허용 sudo fuw allow ‘Nginx Full’
기존 도메인 삭제 방법 sudo rm /etc/nginx/sites-available/<삭제할 도메인>

2.7 DNS 설정 (pfsense)

Host: kibana
Parent domain of host : local
IP to return host : 192.168.0.10 (MON 서버)
위와 같이 설정하여 pfsense 에서 도메인 지정

2.8 최종 확인

IP, 도메인으로 Kibana 접속 확인
IP
도메인

3. Logstash 설치

3.1 Logstash 설치

Logstash 는 패키지가 없어서 wget 으로 설치
sudo wget http://artifacts.elastic.co/downloads/logstash/logstash-7.16.2-amd64.deb
Bash
복사
sudo dpkg -i logstash-7.16.2-amd64.deb
Bash
복사

3.2 구성 파일 수정 (input)

sudo vi /etc/logstash/conf.d/beats-input.conf
Bash
복사
아래 내용 삽입
input { beats { port => 5044 } }
Bash
복사

3.3 구성 파일 생성 (output)

sudo vi /etc/logstash/conf.d/elasticsearch-output.conf
Bash
복사
아래 내용 작성
output { if [@metadata][pipeline] { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" pipeline => "%{[@metadata][pipeline]}" } } else { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } } }
Bash
복사
이 과정은 Logstash가 Beats 데이터를 Elastic Search로 보내도록 지시한다.

3.4 설정 테스트

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
Bash
복사
아래 내용 확인 시 정상

3.5 서비스 시작 및 활성화

sudo systemctl start logstash sudo systemctl enable logstash
Bash
복사

4. Filebeat 설치

4.1 Filebeat 설치

sudo apt install filebeat=7.16.2
Bash
복사

4.2 Filebeat 설정

sudo vi /etc/filebeat/filebeat.yml
Bash
복사
아래와 같이 주석처리
132번 라인
... ... ... #output.elasticsearch: # Array of hosts to connect to. #hosts: ["localhost:9200"] ... ... ...
Bash
복사
아래와 같이 주석 해제
145번 라인
... ... ... output.logstash: # The Logstash hosts hosts: ["localhost:5044"] ... ... ...
Bash
복사

4.3 Nginx 로그 수집

sudo filebeat modules enable nginx sudo filebeat setup --pipelines --modules nginx sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]' sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601
Bash
복사

4.4 서비스 실행 및 활성화

sudo systemctl enable filebeat sudo systemctl start filebeat
Bash
복사
시각화 확인