본문 바로가기
Data/Study

📊ELK Stack이란? Elastic Search, Logstash, Kibana

by 카프리썬 2021. 7. 5.
728x90

ELK를 왜 쓰는가? 로그분석이 왜 필요한가?

사실 내가 진행한 <뉴스레터 구독 서비스 토이프로젝트> 상에선 굳이 로그분석을 할 필요는 없다.

참고한 프로젝트의 키바나 대시보드가 부러웠기에 초기 기획단계에서부터 해보고 싶었던 부분이였다. 

뭔가 내가 말하고 상상하던걸 바로 이뤄내는 기분이라 왠지모를 성취감과 뿌듯함이 든다.

 

그렇다면 ELK를 사용해보고 싶어서 적용하는거긴한데, 

실무적으로 왜 로그분석이 필요하고 ELK를 사용해야하는지 먼저 알아보았다. 

 

일반적인 로그는 이렇게 TXT파일로 떨궈서 살펴보기도 한다. 

나는 람다를 자주 사용해서 그런지 lambda cloudwatch에 찍히는 로그를 살펴봤지 이렇게 text파일론 보지 못했다. 

그런데 이렇게 로그를 따로 관리하지 않고 이렇게 파일에 쌓아두게 되면 아래와 같은 문제점이 생긴다.

  • 로그레벨 파악어려움 - INFO, WARNING과 같은 log level을 일일이 찾아야함
  • 검색어 분석 어려움 - 예를 들어 한글이 퍼센트어로 되어있어서 검색어를 파악하기 힘들다
  • 날짜,시간에 따라 로그분석 어려움 
  • 과거 로그로 인해 디스크공간을 너무 많이 차지하게 된다.
    (모 기업이 웹로그 하도 관리를 안해서 6개월마다 메모리99퍼 알람이 왔던 기억이 있다..지워주는게 지원업무였다

이와 같은 문제점들을 해결하기 위해서는 ELK가 필요하다.

생성되는 로그들을 단순히 파일에 쌓이도록 방치하면 안 되고 로그를 관리해 줄 필요가 있습니다.

이는 로그 분석을 할 때에도 훨씬 효율적이다.

결국, 로그 관리 시스템을 구축하면 시스템을 보다 안정적으로 운용할 수 있습니다.

 

ELK

아래의 3개들의 앞글자만 단 단어로 로그데이터를 검색하고, 분석하는 도구로 쓰인다. 

계속해서 쌓이는 웹로그를 어떻게 저장하고, 어떻게 검색해서, 분석할지 고민이 된다면 써볼만하다! (나의 목적!)

엘라스틱서치, 로그스태시, 키바나

1) ElasticSearch

분산형 검색엔진.

Apache Lucene기반으로 구축되어 있어서 분산형 및 개방형이 특징.

Lucene이 JAVA로 만들어져있기 때문에 ElasticSearch도 JAVA로 개발되어 있다.

 

실시간 분석시스템

클러스터가 실행되고 있는 동안 계속해서 데이터가 입력되고, 그와동시에 실시간에 가까운 속도로 검색 및 집계 수행

역인덱스(Inverted File Index) 데이터구조를 사용하여 풀텍스트(Full Text)검색이 가능하기 때문.

반면에 하둡은 실시간이 아니라 배치기반으로 데이터수집->분석->결과도출 루틴으로 수행된다. 

 

데이터저장 역할

LogStash를 통해 수신된 데이터를 저장소에 저장하는 역할

데이터를 중심부에 저장하여 예상되는 항목을 검색하고, 예상치 못한 항목을 밝혀낼 수 있다.

정형,비정형,위치정보,매트릭 등 원하는 방법으로 다양한 유형의 검색 수행 및 결합이 가능하다.

표준 Restful API와 JSON을 사용한다. 

 

2) Logstash

데이터수집엔진

오픈소스 서버측 데이터처리 파이프라인

JRuby로 되어 있어 Ruby로 개발되어 JAVA Runtime 가상머신 위에서 돌아간다. 

출력API로 ElasticSearch를 지원하기 시작하면서 Logstash (입력) -> ElasticSearhc(출력) 보편화

 

데이터전송 역할

다양한 소스에서 동시에 데이터를 수집하고, 변환하여 stash보관소로 보낸다. 

수집할 로그를 선정해서 지정된 대상서버에 인덱싱하여(정규화하여) ElasticSearch 등의 목적지로 전송하는 역할

 

3) Kibana

웹 프론트엔드 서비스

데이터를 검색하고, 시각화하는 오픈소스 프론트엔드 서비스.

ElasticSearch로부터 집계결과를 가져와서 웹으로 시각화한다. 

시각화를 담당하는 HTML+JavaScript 엔진

 

데이터시각화 역할

Discover,Visualize,Dashboard 메뉴와 다양한 App으로 구성되어 있으며 플러그인으로 확장가능

Discover : ElasticSearch로부터 인덱싱된 소스데이터 검색메뉴

Visualize : 시각화도구(차트,그래프,매트릭,검색 및 지도 등)들을 조합하여 단일페이지에 모아놓고 인사이트 제공

대체 가능한 소프트웨어로 그라파나(Grafana)

 

 

ELK Stack

기존엔 위와 같은 3가지를 통합해서 ELK Stack이라 불렸지만, 2015년이후부터 추가적으로 Beats까지 도입되었다. 

Beats

서버에 설치하는 에이전트.

다양한 유형의 데이터를 ElasticSearch 또는 Logstash에 전송할 수 있는 오픈소스 데이터발송지

전체적인 flow 

우선 로그를 수집하고자 하는 서버에 beats 에이전트를 심어둔다. 

Beats가 설치된 서버의 데이터를 Logstash 또는 ElasticSearch로 전송한다. 

Logstash에는 다양한 소스에서 데이터를 수집하고, 가공 및 변환하여 ElasticSearch에 인덱싱하여 전송한다.

ElasticSearch는 수신된 데이터를 저장소에 저장하고, 검색한다. 

Kibana가 ElasticSearch에 저장된 데이터를 시각화하여 사용자에게 보여준다.

그럼 사용자는 웹로그에 대한 실시간분석 등을 할 수 있게 된다.

 

ELK Stack 장점

강력한 유연성과 호환성
ElasticSearch, Logstash,Kibana가 각각 용도별로 분리하여 발전하는 솔루션
발전하는 솔류션이라 안정성은 물론이고 다른 시스템과도 유연한 호환성


자유스키마
JSON방식의 KEY-VALEU형식으로 데이터사용 형식에 자유롭다.
인덱스 와일드 카드(*)를 지원해서 인덱스의 조인가능
*인덱스 : RDB에서 테이블과 같은개념


확장가능 데이터베이스 : 여러대의 서버를 엮어서 성능향상을 기대할 수 있는 클러스터방식


데이터처리절차 개별설정
만약 데이터처리를 프로그래밍을 이용한 코딩으로 수행했따면 향후 유지보수가 불편하고 종속성이 높아짐.
하지만 로그스태시 덕분에 이런 단점을 극복가능하고, 유연성 확보가능


사전에 준비된 시각화도구
키바나 덕분에 데이터를 시각화하여 보여주기 위한 별도의 사용자인터페이스가 불필요.


실시간데이터처 : 메세지 큐와 결합하면 강력한 실시간 데이터수집 및 처리시스템이 된다.

 

ELK Stack 단

초기데이터 구성 및 이관문제

기존에 보유한 데이터를 엘라스틱 서치로 이관하는 경우 심각한 성능저하 문제 발생

예를 들어, 메세지큐를 사용하면 안정성과 속도에서선 감점이 있으나
100GB이상의 RDB의 데이터를 그대로 이관하면 상당한 성능저하 우려가 있다. 

지나친 메모리 누수 문제로 인해 많은 양의 데이터 이관용도로는 사용이 불가능하다.  

 

커널변수의 불필요한사용 

커널의 cgroup에 해당하는 변수를 참조하는 내용 때문에 해당 변수가 없는 커널일 경우 오류가 발생할 수 도 있다.

커널 컴파일 설정환경에 따라 불필요한 커널변수로 인해 프로그램이 중단되는 문제가 생길 수도 있다. 

 

시간대 일관성이 꺠지는 문제

3개의 스택(로그스태시->엘라스틱서치->키바나)로 데이터가 넘어가는 과정에서 시간대(Timezone) 일관성이 깨진다.

'Asia/Seoul'같은 명시를 하여도, 시간을 두번 바꿔야하는 번거로움이 발생한다. 

하지만 3개의 스택모두 기본시간대는 UTC라는 점

 

 

출처

ELK 필요성 https://blog.nerdfactory.ai/2019/06/19/ELK-log-management-system.html

ELK 정의 https://suyeon96.tistory.com/38

ELK 장단점 https://velog.io/@courage331/ELK

 

 

같이 보면 좋을 강의자료를 발견했다! 인프런엔 역신 좋은 무료강의가 많다! 참고하길! 

 

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/#reviews

 

[무료] ELK 스택 (ElasticSearch, Logstash, Kibana) 으로 데이터 분석 - 인프런 | 강의

ElasticSearch, LogStash, Kibana 기초부터 설명합니다. 최종단계로 ELK 스택을 활용하여, 세계 인구 분석, 주식 분석을 하시는 본인의 모습을 발견하실 수 있습니다., [임베딩 영상] 1. ELK 스택 강좌 소개

www.inflearn.com

 

반응형