[오브젝트 스토리지 활용] 빅데이터 분석 - ELK Stack
ELK Stack이란 무엇인가?
ELK Stack은 Elasticsearch, Logstash 및 Kibana 세개의 오픈 프로젝트를 합친 ELK 솔루션에 Beats 를 추가한 솔루션입니다.
Elasticsearch 는 분석 및 저장 기능 , Logstash 는 수집 및 재가공 , Kibana는 시각화 탐색 및 실시간 분석을 담당하며 , 이를 통해 접근성과 편리성을 갖춘 데이터 분석을 제공합니다.
ELK Stack를 활용하여 로그를 효율적으로 관리하고 iwinv obejct를 백업 저장소로 사용하여 백업 , 복원등을 원할하게 할 수 있습니다 .
ELK Stack 설치하기
로그 생성 서버 ( Elasticsearch , Logstash , Kibana 설치 ) 1대 , 로그 수집 서버( File beat 설치) 1대로 구성하였으며 , 각 각 Ubuntu 18.04 , CentOS7 를 사용하였습니다.
* ELK를 한서버에 설치할 경우 메모리는 4GB이상을 권장합니다.
* ELK를 설치하려면 Java가 설치되어 있어야 합니다. ( 메뉴얼에서는 openJDK 8로 진행)
# 로그 생성 서버 #
Elasicsearch 설치
파일 다운로드
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.deb |
설치
sudo dpkg -i elasticsearch-6.6.2.deb |
환경설정
sudo vi /etc/elasticsearch/elasticsearch.yml |
network.host : 0.0.0.0 해당 줄 주석 해제 및 바인딩 할 ip 주소 설정 (모두 허용시 0.0.0.0 ) |
서비스 등록 및 시작
sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service |
확인
curl -X GET "localhost:9200/" |
{ |
Logstash 설치
파일 다운로드
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.2.deb |
설치
sudo dpkg -i logstash-6.6.2.deb |
환경설정
sudo vi /etc/logstash/conf.d/filebeat.conf ( 원하는 이름으로 config파일 생성) |
input { filter { output { |
서비스 등록 및 시작
|
Kibana 설치
파일 다운로드
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-amd64.deb |
설치
sudo dpkg -i kibana-6.6.2-amd64.deb |
환경설정
sudo vi /etc/kibana/kibana.yml |
server.host : "0.0.0.0" elasticsearch.url : "http://elasticsearch_server_address:9200" |
server.host - 바인딩할 ip주소를 설정합니다. elasticsearch를 설치한 서버 ip를 넣어줍니다. ( 기본포트 9200 ) |
서비스 등록 및 시작
|
확인
curl -v [로그 수집 서버 IP] :5601 |
* Rebuilt URL to: 127.0.0.1:5601/ * Trying 127.0.0.1... * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 5601 (#0) > GET / HTTP/1.1 > Host: 127.0.0.1:5601 > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 302 Found < location: /app/kibana < kbn-name: kibana < kbn-xpack-sig: 5c22340e091aef783cf686b3daaee8eb < content-type: text/html; charset=utf-8 < cache-control: no-cache < content-length: 0 < connection: close < Date: Tue, 15 Sep 2020 06:00:03 GMT < * Closing connection 0 |
# 로그 생성 서버 #
File Beat 설치
파일 다운로드
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.2-x86_64.rpm |
설치
sudo rpm -vi filebeat-6.6.2-x86_64.rpm |
환경설정
sudo vi /etc/filebeat/filebeat.yml |
#-------------------------- Elasticsearch output ------------------------------ #----------------------------- Logstash output -------------------------------- |
output.elasticserch 는 주석처리 output.logstash 주석해제 기본포트 5044 |
서비스 등록 및 시작
sudo systemctl enable filebeat.service
|
모듈 설치 및 설정 (apache 모듈 활성화)
모듈 목록 확인
filebeat module list |
filebeat modules list Disabled: |
apache 모듈 활성화하기
filebeat modules enable apache |
모듈 목록 재확인 하기
filebeat module list |
filebeat modules list Disabled: |
모듈 설정파일 수정
sudo vi /etc/filebeat/modules.d/apache.yml |
- module: apache # Set custom paths for the log files. If left empty, # Error logs # Set custom paths for the log files. If left empty, |
ELK Stack 사용하기
Kibana 웹 접속하기
http:// [로그 수집 서버]:5601 로 접속
|
index pattrn 설정
management 메뉴 클릭 후 Create index pattren 클릭 logtash* 입력 후 next step 클릭
time filter 에서 @timestamp를 선택 후 , Create Index Pattern 클릭
|
로그확인
Logs 메뉴 선택시 수집 된 로그를 확인할 수 있습니다.
discover 메뉴를 통해 filter별 데이터 검색할수 있습니다.
|
백업 및 복원하기 ( iwinv 오브젝트 스토리지 활용)
먼저 , iwinv 오브젝트 스토리지에서 ELK Stack의 백업저장소로 사용할 버킷을 생성합니다.
ELK stack의 스냅샷 기능을 통해 백업파일을 해당 버킷에 저장하고, 해당 백업파일을 이용해 복원이 가능합니다.
# 백업 #
스냅샷 저장소 생성
curl -X PUT "localhost:9200/_snapshot/REPOSITORY_NAME?pretty" -H 'Content-Type: application/json' -d' |
REPOSITORY_NAME = 생성할 저장소 이름 Bucket_Name = 저장소로 사용할 버킷명 Endpoint -> 오브젝트 스토리지 -> 스토리지 관리 -> 인증키 관리 -> API {IDC} Endpoint Access_Key : console.iwinv.kr -> 오브젝트 스토리지 -> 스토리지 관리 -> 인증키 관리 -> Access Key ID Secret_Key : console.iwinv.kr -> 오브젝트 스토리지 -> 스토리지 관리 -> 인증키 관리 -> Secret Key ID
|
스냅샷 찍기
curl -X PUT "localhost:9200/_snapshot/my-snapshot-repo/SNAPSHOT-NAME?wait_for_completion=true&pretty" -H 'Content-Type:application/json' -d' { "indices": "Index_Name", "ignore_unavailable": true, "include_global_state": false } |
SNAPSHOT-NAME = 생성할 스냅샷 이름 Index_Name = 스냅샷을 생성할 인덱스 지정 ( 여러개 입력 가능) |
백업 확인
저장소로 지정한 버킷에 백업 파일 및 indicys 디렉토리가 생성됬는지 확인합니다.
|
# 복원 #
인덱스 목록 확인
curl -XGET 'localhost:9200/_cat/indices?pretty' |
green open .kibana_1 --mUQ4qxQF2NbQgZJB0rEA 1 0 3 0 20.3kb 20.3kb yellow open logstash-2020.09.16 1azEZGPsRkqYmd8axjvXCw 5 1 580 0 1.4mb 1.4mb |
인덱스 닫기
curl -X POST "http://localhost:9200/Index_Name/_close?pretty" |
해당 인덱스를 닫은 후 인덱스 목록을 재확인하면 해당 인덱스가 사라진것을 확인 할 수 있습니다. |
kibana 웹으로 확인시에도 Log 및 Index-pattern이 사라진것을 확인 할 수 있습니다.
|
복구하기
curl -XPOST 'localhost:9200/_snapshot/REPOSITORY_NAME/SNAPSHOT-NAME/_restore' |
인덱스 및 Log 확인
복구 후 인덱스 목록을 확인하면 닫았던 인덱스 목록이 다시 나타나며 , Kibana 확인시 로그 및 인덱스 패턴이 다시 복구 된것을 확인 할 수 있습니다.
|