패키지 제거 명령어
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
복사
시각화 확인