Kubernetes Elastic Stack 구성하기 (Elasticsearch, Kibana, Beats, Logstash 설치)
ELK Stack에 데이터 수집 플랫폼인 Beat가 추가되어 4개의 조합은 Elastic Stack으로 불린다.
일반적으로 Elasticsearch> Kibana> Logstash> Beats 순서로 구성하고, 모든 구성 요소는 버전을 고려하여 구성한다. (본문에서는 CentOS 8 기반으로 한다.)
ELK Stack은 https://github.com/elastic/helm-charts 참고하여 Helm으로 설치 가능하다. (또는 제공되는 Docker Image로 실행할 수 있다.)
1. Elasticsearch 설치
- Java와 SHASUM을 설치한다. (Java 경로 설정 필요)
sudo dnf install java-11-openjdk-devel.x86_64
yum install -y perl-Digest-SHA
- Elasticsearch v7.11.1 RPM을 설치한다.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-7.11.1-x86_64.rpm.sha512
sudo rpm --install elasticsearch-7.11.1-x86_64.rpm
- Elasticsearch는 설치 후 자동으로 실행되지 않는다. 부팅 시 자동 실행될 수 있도록 설정한다.
sudo chkconfig --add elasticsearch
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
- Elasticsearch 노드가 정상적으로 실행 중인지 확인한다.
curl -X GET "localhost:9200/_cat/health?v=true&pretty"
- Status는 green이고 노드가 1개 실행 중임을 확인할 수 있다.
2. Kibana 설치
- RPM을 이용하여 Kibana 7.11을 설치한다.
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.11.1-x86_64.rpm
shasum -a 512 kibana-7.11.1-x86_64.rpm
sudo rpm --install kibana-7.11.1-x86_64.rpm
- /etc/kibana/kibana.yml에서 아래 부분은 주석 제거 및 수정한다.(/etc/kibana/kibana.yml)
server.port: 5601
http.host: 0.0.0.0
elasticsearch.hosts: ["http://localhost:9200"]
- systemctl restart kibana를 통해 재실행하고, 브라우저에서 http://서버IP:5601로 접속하여 확인한다.
3. Logstash 설치
- RPM을 이용하여 Logstash 7.11을 설치한다.
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-7.11.1-x86_64.rpm
shasum logstash-7.11.1-x86_64.rpm
sudo rpm --install logstash-7.11.1-x86_64.rpm
- logstash-sample.conf에서 host => "0.0.0.0" 추가한다. (logstash-sample.conf)
input {
beats {
port => 5044
host => "0.0.0.0"
}
}
4. Filebeat 구성
- 로그 수집 대상 노드에 Filebeat를 설치한다.
sudo yum install -y perl-Digest-SHA
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.1-x86_64.rpm
shasum filebeat-7.11.1-x86_64.rpm
sudo rpm --install filebeat-7.11.1-x86_64.rpm
- filebeat modules list 통해 모듈을 확인한다. 테스트 용도로 filebeat modules enable apache를 통해 모듈 활성화한다. /etc/filebeat/modules.d/apache.yml에서 수집 정보를 설정한다.(/etc/filebeat/modules.d/apache.yml)
# Module: apache
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.11/filebeat-module-apache.html
- module: apache
# Access logs
access:
enabled: true
input:
fields:
server_name: test-web
log_type: apache_access
var.paths: ["/var/log/httpd/access_log"]
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
# Error logs
error:
enabled: true
input:
fields:
server_name: test-web
log_type: apache_error
var.paths: ["/var/log/httpd/error_log"]
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
- /etc/filebeat/filebeat.yml에서 전송할 로그 목적지를 설정한다. (ELK 구성되어 있는 노드 IP로 수정한다.) systemctl restart filebeat로 재실행한다.(/etc/filebeat/filebeat.yml)
# ------------------------------ Logstash Output -------------------------------
output.logstash:
# The Logstash hosts
hosts: ["50.0.0.10:5044"]
참고 Link
1. 서비스 확인 : https://www.elastic.co/guide/en/beats/libbeat/7.x/beats-reference.html#beats-reference
2. 버전 확인 : https://www.elastic.co/kr/support/matrix
3. ELK 설치 : https://www.elastic.co/guide/index.html, https://github.com/elastic/helm-charts/tree/master/elasticsearch