본문 바로가기

기술이야기

Elasticsearch + Logstash + Kibana 구축하기 (1) - ELK 설치

 

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"

  }

}

 

 

 

 

 

 

참고자료

1. https://www.inflearn.com/course/elk-%EC%8A%A4%ED%83%9D-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D