No Docker,
Linux Machine 그 자체에 설치하는 방법 정리
굳이 환경 변수까지 설정하지 않아도 무방하다.
Kibana가 기본적으로 localhost에서만 접근이 가능하다.
물론,
외부 접근을 허용할 수 있지만
실 프로젝트에서 많이 활용하는 Nginx를 활용하여 리버스 프록시 기능을 구현해보자.
sudo apt-get update
sudo apt install nginx
- ELK 설치를 위한 컴포넌트들이 우분투의 기본 패키지 레포에는 포함되어 있지 않다.
- 따라서 apt를 이용한 설치를 위해 Elastic 패키지 소스 리스트를 추가해야 한다.
- 다음 명령어를 순서대로 입력하여 추가한다.
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
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
sudo apt update
chan00@chan00-VB:/home/chan00# curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
chan00@chan00-VB:~$ 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
deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main
chan00@chan00-VB:/home/chan00# sudo apt update
Get:1 https://artifacts.elastic.co/packages/7.x/apt stable InRelease [13.7 kB]
Get:2 https://artifacts.elastic.co/packages/7.x/apt stable/main amd64 Packages [106 kB]
Hit:3 http://kr.archive.ubuntu.com/ubuntu jammy InRelease
Hit:4 http://kr.archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:5 http://kr.archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:6 http://kr.archive.ubuntu.com/ubuntu jammy-security InRelease
Fetched 120 kB in 2s (69.8 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
chan00@chan00-VB:~$
공식문서 에 따라, 다음 순서로 설치
1 Elasticsearch (install instructions)
2 Kibana (install)
3 Logstash (install)
4 Beats (install instructions)
5 APM (install instructions)
6 Elasticsearch Hadoop (install instructions)
이 순서대로 설치를 해야 각 제품의 의존성과 구성요소가 제대로 설치된다고 한다.
sudo apt install elasticsearch
별 문제가 없다면, 정상적으로 설치될 것이다.
이후, 해당 경로에서 Elasticsearch의 기본 설정 파일을 확인할 수 있다.
sudo vi /etc/elasticsearch/elasticsearch.yml # 또는 sudo nano /etc/elasticsearch/elasticsearch.yml
외부 접근 허용
# ---------------------------------- Network ----------------------------------- # # By default Elasticsearch is only accessible on localhost. Set a different # address here to expose this node on the network: # #network.host: 192.168.0.1
network.host: ~~ 주석 해제
# Elasticsearch 실행
sudo systemctl start elasticsearch
# 자동 실행 설정
sudo systemctl enable elasticsearch
Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /lib/systemd/system/elasticsearch.service.
chan00@chan00-VB:~$
# 정상 동작 확인
curl -X GET "localhost:9200"
{
"name" : "elk-stack",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6KQhFjQcTC-zZmiWQCKtXw",
"version" : {
"number" : "7.17.7",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "78dcaaa8cee33438b91eca7f5c7f56a70fec9e80",
"build_date" : "2022-10-17T15:29:54.167373105Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
chan00@chan00-VB:~$
sudo apt install kibana
별 문제가 없다면, 정상적으로 설치될 것이다.
# Elasticsearch 실행
sudo systemctl start kibana
# 자동 실행 설정
sudo systemctl enable kibana
Synchronizing state of kibana.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable kibana
Created symlink /etc/systemd/system/multi-user.target.wants/kibana.service → /etc/systemd/system/kibana.service.
chan00@chan00-VB:~$
Nginx의 기본 사이트 설정 파일을 수정하여 외부에서 Kibana 접속이 가능하도록 한다.
sudo vi /etc/nginx/sites-available/default
server {
listen 80;
server_name _;
location / {
proxy_pass http://{사용자가 원하는 데로};
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;
}
}
작성자는 접속 환경 차이로 PortForwarding을 시도한 상태이므로 다를 수 있습니다.
sudo apt install logstash
별 문제가 없다면, 정상적으로 설치될 것이다.
설치 완료 시, Logstash Pipeline 설정을 해야한다.
자세한 구조는 공식문서에서 확인이 가능하다.
기본적으로
Filters 부분은 옵션
이고,Inputs와 Outputs는 필수
적으로 필요한 요소이다.
sudo vi /etc/logstash/conf.d/beats-input.conf
input { beats { port => 5044 } }
sudo vi /etc/logstash/conf.d/elasticsearch-output.conf
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}" } } }
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
오류가 없다면
Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
가 출력된다.
# Elasticsearch 실행
sudo systemctl start logstash
# 자동 실행 설정
sudo systemctl enable logstash