기술이야기
Elasticsearch + Logstash + Kibana 구축하기 (1) - ELK 설치
투자 엔지니어
2020. 11. 16. 16:23
ELK 스택 알아보기
- ELK는 Elastic사에서 제공하는 Elasticsearch, Logstash 및 Kibana 세 가지 오픈소스 프로젝트의 약자
- Elasticsearch
- 검색 및 분석 엔진으로 Logstash로부터 수집된 로그 데이터를 저장하고, 최소/최댓값, 평균 등의 분석 API를 제공한다.
- 관계형 데이터베이스와 달리 데이터를 해시테이블과 같이 저장
- 따라서 검색 시 시간복잡도는 O(1)
- index(database), type(table), document(row), field(column), mapping(schema)로 구성, Elasticsearch(관계형 데이터베이스)
- GET, POST, PUT, DELETE의 Rest API 제공
- Logstash
- 여러 소스에서 동시에 데이터를 수집하여 변환 후 Elasticsearch에 전송
- input, filter, output으로 구성된 데이터 처리 파이프라인.
- input: 파일을 읽거나 port를 개방하여 데이터를 스트리밍 방식으로 받아들일 수 있음.
- filter: output으로 이동하는 과정에서 구문을 분석하거나 변환 e.g. elasticsearch에서 정의한 mapping(DB의 schema) 정보로 데이터를 변환
- output: 원하는 곳으로 데이터를 전송. 대게 elasticsearch 서버를 명시한다. 여러 저장소로 전송 가능
- Kibana
- elasticsearch에 저장된 데이터를 손쉽게 시각화해주는 인터페이스
- 히스토그램, 선 그래프, 원형 차트, 선버스트 등 제공
ELK 설치
- Elasticsearch
# 설치
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.deb
sudo dpkg -i elasticsearch-6.5.1.deb
sudo systemctl enable elasticsearch.service
sudo service elasticsearch start
# 설치 확인
curl -XGET localhost:9200
# 아래와 같이 출력되면 성공적으로 설치
{
"name" : "hc3j7wz",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "lwaQI5LHSJOUdzX2EwbX9Q",
"version" : {
"number" : "6.5.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "8c58350",
"build_date" : "2018-11-16T02:22:42.182257Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
- Kibana
# 설치
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.0-amd64.deb
sudo dpkg -i kibana-5.4.0-amd64.deb # localhost:5601
# /etc/kibana/kibana.yml 설정
server.name: kibana
server.host: 0.0.0.0
elasticsearch.hosts: [ "http://localhost:9200" ]
- Logstash
# 설치
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.0.2.deb
sudo dpkg -i logstash-5.0.2.deb
# 파이프라인 설정 파일 추가
# /etc/logstash/conf.d/ 아래에 추가
# input, filter, output, elasticsearch server 설정
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
참고자료