본문 바로가기
[AWS]/ELK

[AWS] ELK Stack 정의 및 구현

by METAVERSE STORY 2022. 8. 3.
반응형
728x170

 

ELK 스택의 정의

 

ELK 스택이란 무엇인가?

ELK 스택은 Elasticsearch, Logstash, Kibana의 세 가지 인기 있는 프로젝트로 구성된 스택을 의미하는 약어입니다. 오픈 소스에서 Stack이라는 표현은 개별적으로 역할을 하는 기능을 모아서 연결하여 더 유연하고 강력한 기능을 제공하는 기술 단위를 나타냅니다. ELK Stack 뿐만 아니라 MEAN Stack, LAMP Stack등이 존재합니다.

Elasticsearch

Elasticsearch는 Apache Lucene에 구축되어 배포된 검색 및 분석 엔진입니다. 다양한 언어를 지원하고 고성능에 스키마가 없는 JSON 문서로 Elasticsearch는 다양한 로그 분석과 검색 사용 사례에 유용합니다. 2010년에 릴리스되기 시작한 이후로 Elasticsearch는 빠르게 인기 검색 엔진이 되었으며 로그 분석, 전체 텍스트 검색, 보안 인텔리전스, 비즈니스 분석 및 운영 인텔리전스 사용 사례에 일반적으로 사용되었습니다.

Logstash

Logstash는 다양한 소스로부터 데이터를 수집하고 곧바로 전환하여 원하는 대상에 전송할 수 있도록 하는 경량의 오픈 소스 서버측 데이터 처리 파이프라인입니다. 오픈 소스 분석 및 검색 엔진인 Elasticsearch의 데이터 파이프라인으로 자주 사용됩니다. Elasticsearch와의 긴밀한 통합, 강력한 로그 처리 능력, 사전 구축된 200개 이상의 오픈 소스 플러그인을 통해 데이터 인덱싱을 돕는 Logstash는 Elasticsearch에 데이터를 로드할 때 가장 많이 사용됩니다.

Kibana

Kibana는 로그와 시계열 분석, 애플리케이션 모니터링, 운영 인텔리전스사용 사례에 사용되는 데이터 시각화 및 탐색 도구입니다. 히스토그램, 선형 그래프, 원형 차트, 열 지도, 내장 지리 공간적 지원과 같은 강력하고 사용하기 쉬운 기능을 제공합니다. 또한 유명 분석 및 검색 엔진인 Elasticsearch와 긴밀하게 통합되어 Kibana는 Elasticsearch에 저장된 데이터를 기각화 할 때 기본 선택 사항이 되어있습니다. 

 

 

 

 

1. Elasticsearch 다운로드 및 설치

 

 

먼저 Elasticsearch는 JVM 위에서 돌아가기 때문에 운영체제 위에서 JDK를 꼭 다운로드 해야 한다. 자신의 OS에 맞게 설치를 진행하면 된다. 

 

 

 

그 후 Elasticsearch를 자신의 OS에 맞게 설치를 해 줘야 한다.  

 

 

 

그 후 다운받은 파일을 압축을 풀어준 다음 bin으로 들어가준다.

 

 

 

그 후 elasticsearch.bat 즉 윈도우 배치파일을 클릭해준다. 

 

 

 

그러면 배치파일이 돌면서 cmd.exe가 생성된다. 이 프로그램을 종료하면 안된다.

그 후 127.0.0.1:9200을 인터넷 창에 입력한다. 하지만 

윈도우 환경에서 ElasticSearch를 설치하고 localhost:9200으로 열어보았을때,

received plaintext http traffic on an https channel, closing connection

라는 오류가 발생하고 연결이 되지 않는 이슈가 있었습니다.

 

 

 

내가 다운로드 받은 elasticsearch의 config에 들어가 elasticsearch.yml 파일을 클릭하여 열어준다.

 

 

 

 

- xpack.security.enabled: false

- xpack.security.enrollment.enabled: false

- xpack.security.http.ssl:
  enabled: false

- xpack.security.transport.ssl:
  enabled: false

 

그 후 이 값들이 원래는 true인데 위 사진처럼 모두 false로 변환해 준다. 

elasticsearch를 사용할 때 https를 통해서 ssl 인증서가 필요한데 이러한 작업이 선행되지 않으며 발생한 오류이다.

local에서 테스트 할때는 이를 false로 바꿔준 후 작업하면 되지만 실제 운영을 한다고 가정할 때에는 ssl을 적용하는 방향을 통해서 해결해야 한다. 

 

 

 

그 후 127.0.0.1:9200을 입력하면 위 사진처럼 Elasticsearch가 실행되고 있다는 사실을 알 수 있다. Elasticsearch는 Restful API 기반이므로 json 형태로 나타나는 모습을 볼 수 있다. 

 

 

 

2. Kibana 다운로드 및 설치

 

Kibana를 자신의 OS에 맞게 설치를 진행한다.

 

 

 

그 후 압축을 풀어준 후 bin을 클릭한다.

 

 

 

그 후 kibana.bat 배치 파일을 클릭한다.

 

 

 

그럼 elasticsearch 처럼 cmd.exe 창이 뜨고 인스톨을 시작한다.

 

 

 

그 이후 웹 창에127.0.0.1:5601을 입력하면 Kibana 화면이 웹에 뜨게 된다. 

 

 

 

3. Logstash 다운로드 및 설치

 

logstash 역시 자신의 OS에 맞게 다운로드를 받아준다.

 

 

그 후 환경 변수 편집을 클릭한다.

 

 

 

그 이후 logstash/bin 위치를 환경 변수에 넣어준다. 

 

 

 

그 후 logstash.conf 라는 파일을 아무 위치에나 만들어 준 후 위와 같은 명령어를 사용한다.

input {
	stdin {}
}

output {
	elasticsearch {
		hosts => ["localhost:9200"]
		index => "indexforlogstash"
	}
}

 

 

 

 

그 후 CMD를 킨 후 내가 만든 logstash.bat 파일이 위치한 폴더로 이동해 준다.

그 이후 logstash.bat -f .\config\logstash.conf를 입력해준다.

logstash.bat -f .\config\logstash.conf

 

 

 

 

 

이 화면이 나오면 성공한 것이다. 

 

 

4. Logstash를 통해서 csv 파일을 Elasticsearch와 연동시키기

이후 아까 작성했던 logstash.conf 파일을 다음과 같이 수정하였다. 

input {
	file{
     path => ["C:/ELK/logstash-8.3.3-windows-x86_64/logstash-8.3.3/data/accd.csv"]
	 sincedb_path => "nul"
     start_position => "beginning"
	 codec => plain{ charset => "UTF-8" }
	 
  }
}

filter {


  csv {
      columns => ["가해자연령층","발생월","사고건수","사고건수","중상자수","중상자수","경상자수","부상신고자수"]
	  separator => ","
  }
}


output {
	elasticsearch {
		hosts => ["localhost:9200"]
		index => "ageacc"
	}
	stdout{}
}

위에서부터 path는 내가 적용시키려는 파일의 절대 경로를 입력해야 한다. 

 sincedb_path는  LogStash를 다시 시작해도 읽을 수 있는지에 대한 설정을 정하는 것이다. 

그 다음 start_position은 중요하면서도 헷갈리는 내용이다.

LogStash를 시작할 때 file의 어디부터 읽을 지 결정하며 2가지를 지원한다.

 

  1.  beginning
  2. end (default)

이것은 파일을 최초로 읽을 때만 적용된다.

그 다음은 UTF-8 을 적용시켜 인코딩 한다는 의미이다.

 

두번째는 filter로 우리는 csv 파일을 읽을 것이기 때문에 filter 안에다 csv로 지정해준다. 그 다음 columns를 통해서 열 이름을 배열로 작성한 후 

separator 즉 구분자는 쉼표(,)로 지정한다. CSV는 쉼표(,)로 구분된 정형화된 데이터이기 때문이다. 

 

마지막으로 output에는 elasticsearch와 연동시켜주기 위해서 hosts를 elastisearch의 주소로 입력하고 그 후 index는 자신이 원하는 이름으로 설정해준다.

stdout{}을 설정하면 내 CMD 창에서도 데이터를 확인할 수 있다. 

 

 

그 후 각각 elasticsearch 화면과 logstah.bat을 실행시킨 CMD창을 확인해보면 JSON 형태로 데이터를 확인할 수 있다. 

 

 

 

4. Kibana로 시각화 시키기

그 다음 127.0.0.1:5601을 입력해 Kibana로 들어간 후 Management의 Stack Management를 클릭한다. 

 

 

 

그 후 Kibana 하위의 DataViews를 클릭한 다음

Create data view를 클릭한다. 

 

 

 

그 다음 내가 설정한 index 이름을 누른 후 생성을 한다.

 

 

 

 

그러면 이러한 화면이 나온다. 그 이후 Analytics의 Dashboard를 클릭한다.

 

 

 

 

그 다음 Create visualization을 클릭한다.

 

 

 

 

그럼 이런식으로 Available fields라고 시각화 가능한 필드들이 존재하는 것을 확인할 수 있다. 이 중 하나의 열을 선택한 후 플러스 버튼을 클릭한다. 

 

 

 

그렇다면 이와같이 그래프로 나타난다. 이러한 Bar 형태 뿐만 아니라 도넛 형태, 테이블  등등 다양하게 시각화가 가능하다. 

 

 

 

그 후 저장을 누르면 이와같이 시각화 된 데이터의 모습을 확인할 수 있다. 

 

 

 

출처

Install ElasticSearch Logstash and Kibana on Windows 10 (ELK Stack) (Elastic Stack) - YouTube

 

반응형
그리드형

댓글