728x90
반응형

[ELK] Logstash

작성일자 : 2019년 01월 28일




1. Logstash란?


Logstash는 실시간 파이프라인 기능을 가진 오픈소스 데이터 수집 엔진입니다. Logstash는 서로 다른 소스의 데이터를 탄력적으로 통합하고 사용자가 선택한 목적지로 데이터를 정규화할 수 있습니다. 다양한 고급 다운스트림 분석 및 시각화 활용 사례를 위해 모든 데이터를 정리하고 대중화합니다.


logstash는 아래와 같은 아키텍처를 가지고 있습니다.



Input을 받아 커스텀 가능한 Filters로 가공하여 Output으로 내보내는 역할을 수행합니다.  Logstash는 Elasticsearch와 연동하여 많이 사용되며 이 경우 Logstash의 Output이 Elasticsearch의 Input이 되어 동작합니다.



Filters


필터는 아래와 같은 config 형식을 사용하여 커스텀이 가능합니다. 


input {

...

}


filter {

...

}


output {

...

}




2. 설치 및 실행


환경 : Windows 7, logstash 6.5.4, JDK 1.8


https://www.elastic.co/kr/downloads/logstash



ZIP 파일 다운로드 후 압축 해제로 간단하게 설치되며, 아래와 같은 디렉터리 구조 확인 가능



압축 해제한 폴더의 bin 아래의 logstash 실행파일을 CLI로 config 설정과 함께 실행


실행 명령어

$LOGSTASH_HOME ./bin/logstash.bat -e "input { stdin { } } output { stdout { } }"  


-e 옵션을 통해 config 설정을 명령어 라인으로 직접 입력할 수 있습니다.



Successfully started 문구가 보이면 실행 성공!




3. 기본 동작


Input Text(stdin) 입력 > Filter > Output Text(stdout)



현재 Filter를 따로 두지 않아 input이 자체 폼으로 변형 후 그대로 output으로 출력되는 모습을 확인할 수 있습니다.



  • config 파일 생성하기


-e 옵션을 통해 위와 같이 커맨드로 config 설정을 할 수 있지만, 매번 사용하기에는 번거로우니 config파일을 만들어서 적용시킬 수 있습니다.

-f 옵션을 통해 미리 만들어 놓은 config 파일을 사용할 수 있습니다.


logstash.conf Example

input{

 stdin{ }

}

filter{


}

output{

 stdout{ }

}


실행 명령어

$LOGSTASH_HOME ./bin/logstash.bat -f %CONFIG_HOME%/%CONFIG_FILE%





4. Logstash - Elasticsearch 연동


환경 : Windows 7, JDK 1.8, logstash 6.5.4, Elasticsearch 6.5.4

시나리오 : 동일 서버(localhost)에 있는 logstash와 Elasticsearch를 연동하여 logstash에 넣은 input을 가공하여 Elasticsearch에 저장 


4.1 Logstash config 설정


input {

  stdin {

  }

}

filter {

}

output {

  elasticsearch {

    hosts => ["localhost:9200"]

    index => "database"

    document_type => "table"

    document_id => "row"

  }

  stdout {

  }


- input text(stdin)을 입력 받아 필터링 없이 Elasticsearch에 저장 후 Output(stdout)을 출력

- 단순 Test를 위해 document_id를 고정

- Elasticsearch Default Port : 9200


4.2 확인


  • Logstash


"connectinTest" 직접 입력  >  Elasticsearch에 저장(로그 X)  >  stdout에 저장 내용 출력



message => connectingTest 확인 성공!!



  • Elasticsearch


Logstash에서 text 입력 후 conf 파일에 설정한 내용을 토대로 조회



message : connectingTest 확인 성공!!




5. Reference


본 과정은 필터가 없는 Input > Output의 시나리오로 진행 하였습니다.

보다 자세한 filter 사용법은 아래 User Guide를 참고하시기 바랍니다.


Logstash User Guide : https://www.elastic.co/guide/en/logstash/6.5/index.html

728x90
반응형

'도구, 툴' 카테고리의 다른 글

[Spring boot] Logback 설정  (0) 2019.07.14
[ELK] Kibana  (1) 2019.01.29
[ELK] Elasticsearch  (0) 2019.01.24
[ELK] ELK 개요  (0) 2019.01.23
R 설치  (0) 2019.01.07
728x90
반응형

[ELK] Elasticsearch


작성일자 : 2019년 01월 28일


1. Elasticsearch란?


Elasticsearch는 Elastic에서 제공하는 확장성이 뛰어난 오픈 소스 텍스트 검색 및 분석 엔진입니다. 대량의 데이터를 신속하고 거의 실시간으로 저장, 검색 및 분석 할 수 있습니다. 일반적으로 복잡한 검색 기능과 요구 사항이 있는 응용 프로그램을 구동하는 기본 엔진 / 기술로 사용됩니다.



2. 기본 개념


DB와 컨셉은 유사하고 DB와 비교하여 이해하면 이해하기 용이하다.


ElasticSearch 

DB 

Index

Database 

Type 

Table 

Document 

Row 

Field 

Column 

Mapping 

Schema 


다만 저장 방식은 DB와 차이를 보인다.

RDB의 경우 document=Item로 저장되어, 특정 Item을 검색하기 위해서는 모든 document를 조회하며 조건에 맞는 Item을 검색하는 반면,

Elasticsearch의 경우 Item=document의 방식으로 저장되어, 특정 Item을 가지는 document가 이미 저장 되어있어 검색시 매우 빠른 속도를 가진다. 

 

또한 Elasticsearch는 REST API를 기본으로 동작한다.



3. 설치 및 실행


환경 : Windows 7, Elasticsearch 6.5.4, JDK 1.8


3.1 설치파일 다운로드 


https://www.elastic.co/downloads/elasticsearch




3.2 알집 해제




3.3 elasticsearch.bat 실행




started 문구가 보이면 실행 성공!


3.4 확인


브라우저 접속 후 localhost:9200 접근 ( Elasticsearch Default port : 9200 )


4. 기본 동작


curl을 사용하여 CRUD 기본동작을 검증 ( Window에선 curl 사용을 위해선 추가 설치가 필요하며 본 과정에서는 Git Bash를 활용 )


  • Create (==Insert)


-XPOST localhost:9200/index/type/document -d "{"Item":"test"}" -H 'Content-Type: application/json'

( == INSERT INTO type (Item) VALUES ("test"); ) 

 


id가 "document"인 document에 { Item=test } JSON 형태의 값을 삽입 


  • Read (==Select)

-XGET localhost:9200/index/type/document

( == SELECT * FROM type WHERE id = "document"; ) 



id가 "document"인 document를 검색 -> Item=test 데이터 조회 성공


  • Update

-XPUT localhost:9200/index/type/document -d "{"Item":"ModTest"}" -H 'Content-Type: application/json'

( == UPDATE type set Item="ModTest" WHERE id = "document"; )



id가 "document"인 document의 Item의 값을 "ModTest"로 수정



  • Read (==Select)

-XGET localhost:9200/index/type/document

( == SELECT * FROM type WHERE id = "document"; ) 



id가 "document"인 document를 검색 -> Item=ModTest 수정된 데이터 조회 성공


  • Delete

-XDELETE localhost:9200/index/type/document

( == DELETE from type WHERE id="document"; ) 



id가 "document"인 document를 삭제 


  • Read (==Select)

-XGET localhost:9200/index/type/document

( == SELECT * FROM type WHERE id = "document"; ) 



id가 "document"인 document를 검색 -> 삭제 된 데이터의 조회 실패 ( 삭제 성공 )

728x90
반응형

'도구, 툴' 카테고리의 다른 글

[ELK] Kibana  (1) 2019.01.29
[ELK] Logstash  (0) 2019.01.28
[ELK] ELK 개요  (0) 2019.01.23
R 설치  (0) 2019.01.07
SVN 권한 설정  (1) 2018.02.10
728x90
반응형

[ELK] ELK 개요

작성일자 : 2019년 01월 30일



1. ELK란? 

ELK( ELK Stack )는 Elastic사 에서 제공하는 Elasticsearch, Logstash, Kibana의 세 가지 오픈 소스 프로젝트의 약자입니다. 

각 제품이 연동되어 데이터 수집 및 분석 툴로서 동작합니다. Elastic이라는 기업명에 걸맞게 높은 확장성과 뛰어난 이식성을 가지고 있어 다른 여러가지 툴과도 연동이 가능합니다.





Elasticsearch는 검색 및 분석 엔진입니다. RDB와 비슷하나 검색 및 분석 성능은 훨씬 뛰어납니다.




Logstash는 여러 소스의 데이터를 동시에 가져 와서 변환 한 다음 Elasticsearch와 같은 stash로 보내는 서버 측 데이터 처리 파이프 라인입니다. 




Kibana를 사용하면 Elasticsearch에서 차트와 그래프로 데이터를 시각화 할 수 있습니다.




+ Beats란?

단일 목적의 데이터 수집기 플랫폼인 Beats는 수백 수천 개의 장비와 시스템으로부터 Logstash나 Elasticsearch에 데이터를 전송합니다.



2. Architecture

1. 1개 이상의 Client( 수집할 Data 발생 서버 )에서 beats가 특정 트리거에 의해 logstash로 Data를 전송합니다. (각 Client마다 Beats 존재)

2. logstash로 전달 된 Data를 커스터마이징이 가능한 필터를 통해 가공하여 Elasticsearch로 전달 합니다.

3, Elasticsearch로 전달 받은 데이터를 서버(Elasticsearch)에 저장합니다.

4. kibana에서 연동되있는 Elasticsearch에 저장된 데이터 셋을 토대로 시각화를 제공 합니다.




3. Reference

주로 많이 함께 사용하는 제품들을 묶어 ELK( ELK Stack)이라 부르고 있으나, 앞서 말했듯이 각 제품은 확장성이 뛰어나기 때문에 모든 제품을 같이 사용할 필요는 없습니다. 적용할 상황에 따라 다른 제품으로 대체할 수도 있고 특정 제품은 제외시킬 수도 있습니다. 


Elastic ELK : https://www.elastic.co/kr/elk-stack

728x90
반응형

'도구, 툴' 카테고리의 다른 글

[ELK] Logstash  (0) 2019.01.28
[ELK] Elasticsearch  (0) 2019.01.24
R 설치  (0) 2019.01.07
SVN 권한 설정  (1) 2018.02.10
Eclipse/SVN 연동  (0) 2018.02.10

+ Recent posts