ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ELK Stack (Beats-Logstash-Elasticsearch-Kibana) 설치 및 구축 - 1. ELK Stack이란?
    DevOps/ELK 2022. 2. 7. 01:25

     

      ELK Stack은 로깅(logging) 구현에 효과적인 툴이다. 로깅이란 시스템의 작동 정보인 로그(log)를 기록하는 행위로, 머신 데이터의 증가와 함께 그 중요성이 커지고 있다. 로깅은 시스템 문제를 진단하고 해결하여 애플리케이션의 성능을 최적화하고, 로깅을 통해 얻은 결과는 비즈니스의 주요 지표 및 데이터로 활용되기도 한다. 

     

     

      ✔ 여기서 잠깐! 머신 데이터는 센서나 장비에서 발생하는 데이터를 의미한다. (cf. 휴먼 데이터: Email, SMS 등 의사소통 데이터, Facebook, Blog, Twitter 등 소셜미디어 데이터 등)
    기존 보안 장비, 웹 서버, 생산 설비에서 발생하는 로그 데이터, 스마트폰, 텔레매틱스, 건물 등에 장착된 센서 데이터, 웨어러블기기에서 얻을 수 있는 IoT 데이터 등이 해당된다. 머신데이터는 오른쪽 그림과 같이 센서와 디바이스의 급증으로 인해 폭발적으로 증가하는 추세이며, 대체로 실시간 처리 및 분석을 요한다. 

     

     

      ELK Stack의 전신은 Elasticsearch, Logstash, Kibana 세 가지 오픈소스로 구성된 ELK였으나, 2015년 Beats가 추가로 도입되면서 ELK Stack으로 불리게 된다. ELK Stack은 아래 그림과 같이 Beats로 수집한 데이터를 데이터처리 파이프라인 Logstash를 통해 Elasticsearh에 저장하고 Kibana로 가시화까지해준다. Beats로 수집한 데이터를 바로 Elasticsearch로 보낼 수도 있지만 데이터 구문 분석 및 변환, 비즈니스 가치 증대를 위해 Logstash를 경유하는 것이 효과적이다. Beats는 로깅을 위한 로그데이터 뿐만이 아니라 메트릭데이터, 네트워크 데이터 등 다양한 유형의 데이터 수집을 지원한다.(아래 그림 왼쪽에 구성된 AUDITBEAT, METRICBEAT, FILEBEAT 등이 Beats의 제품군들)

     

    출처: https://www.elastic.co/guide/en/beats/libbeat/current/beats-reference.html

     

      지금까지 ELK Stack을 사용하는 이유와 구조를 대략적으로 살펴보았으니 ELK Stack의 구성요소인 Elasticsearch, Logstash, Kibana, Beats 각각의 특징에 대해서 자세히 알아보자!

     

     

    1. Elasticsearch

     

      ELK Stack의 핵심 툴인 Elasticsearch의 특징은 다음과 같다. 

    ✐ 오픈소스(open source) 
    ✐ 실시간 분석(real-time)
    ✐ 전문(full text) 검색 엔진
    ✐ RESTful API
    ✐ multitenancy

     

    - 오픈 소스(open source): Elascticsearch의 핵심 기능들은 Apache 2.0 라이센스로 무료 배포되고 있고, x-pack 디렉토리 아래 있는 파일들만 Elastic라이센스를 따른다.

    - 실시간 분석(real-time): Elasticsearch 클러스터가 실행되고 있는 동안 계속해서 데이터가 입력되며, 동시에 실시간에 가까운 속도로 색인된 데이터의 검색 및 집계가 가능하다.

    - 전문(full text) 검색 엔진: Elasticsearch는 검색 엔진인 아파치 루씬(Apache Lucene)으로 구현한 RESTful API 기반의 검색 엔진이다. 그러므로 루씬은 Elasticsearch의 핵심 모듈이라고 할 수 있다. 루씬은 기본적으로 역색인(inverted index)이라는 구조로 데이터를 저장한다. 역색인이란 쉽게 말해 서적 맨 뒤에 있는 색인 키워드를 이용해 역으로 본문 내용을 찾는 방식이다. 루씬을 핵심 모듈로 사용하는 Elasticsearch 역시 Logstash로 가공한 데이터를 역색인 구조로 저장하여 검색한다. 이러한 특성을 전문(full text) 검색이라고 한다. 

    - RESTful API: RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹서비스를 나타내는 용어로, REST 원리를 따르는 시스템은 RESTful이라는 용어로 지칭된다. 즉, 'REST API'를 제공하는 웹서비스는 'RESTful'하다고 할 수 있다. 대부분의 대규모 시스템들은 마이크로 서비스 아키텍처(MSA)를 기반으로 설계되는데, 이러한 구조에 필수적인 것이 REST API와 같은 표준 인터페이스이다. RESTful API는 다양한 개념이 내포되어 있어서 이쯤에서 마무리하고 추후 따로 포스팅해야겠다 :)

    - 멀티테넌시(multitenancy): Elasticsearch의 데이터들은 인덱스라는 논리적인 단위로 구성되며 각각의 인덱스는 서로 다른 저장소에 분산 저장된다. 서로 다른 인덱스들은 별도의 커넥션 없이도 하나의 질의로 묶어서 검색하고, 검색 결과들을 하나의 출력으로 도출할 수 있는데, 이러한 특징을 멀티테넌시라고 한다(아래 그림은 Hadoop 등 대용량 데이터처리 기술에서 적용되는 멀티테넌시 도식이다). 

     

    출처: https://pasupuletipradeepkumar.wordpress.com/2015/01/15/multi-tenancy-and-hadoop/

     

     

     

    2. Logstash

     

      데이터 처리 파이프라인인 Logstash는 'stash'의 '넣어두다'라는 사전적 의미에서도 알 수 있듯이 다양한 소스에서 데이터를 수집하여 변환한 후 자주 사용하는 저장소로 전달한다. 원래는 Elasticsearch와 별개로 다양한 데이터 수집과 저장을 위해 개발된 프로젝트였는데, 데이터 색인 및 검색 기능만 제공하던 Elasticsearch에 합류하며 Elastic의 스택으로 기능하게 되었다. Logstash는 Elasticsearch와 마찬가지로 Apache 2.0 라이센스를 따르고 있어 무료로 사용이 가능하다. 

     

     

      Logstash는 데이터 처리를 위해 '입력(Input) → 필터링(Filter) → 출력(Output)'의 과정을 거친다. 데이터 저장소로부터 데이터를 입력받고 입력받은 데이터는 필터에서 확장, 변경, 삭제 등의 처리를 통해 가공한다. 필터링된 데이터는 출력 기능을 통해 데이터 저장소로 전송된다. ELK Stack의 구성요소인 Elasticsearch 데이터 저장소 외에도 아마존 AWS S3나 Kafka 등 다양한 경로의 출력이 가능하다.  

     

    Logstash의 conf파일 샘플(출처: https://discuss.elastic.co/t/logstash-is-not-parsing-simple-conf/65291)

     

     

     

    3. Kibana

     

      Kibana는 Elasticsearch에 저장된 데이터를 가장 쉽게 시각화 할 수 있는 오픈소스 프론트엔드 서비스이다. Elasticsearch로부터 document, aggregation의 집계 결과 등을 불러와 웹으로 시각화한다. Kibana는 Discover, Visualize, Dashboard 3개의 기본 메뉴와 다양한 Application들로 구성된다.

     

      Discover 메뉴에서는 Elasticsearch에 색인된 소스 데이터들의 검색을 할 수 있고, Visualize는 집계 기능을 통해 조회된 데이터의 통계를 영역차트, 바차트, 파이차트, 라인차트 등 다양한 차트로 시각화할 수 있는 메뉴이다. Dashboard는 Visualize 메뉴에서 만들어진 시각화 도구들을 조합하여 저장, 불러오기 등을 할 수 있는 메뉴이다. URL을 통해 다른 사람들과 Dashboard를 공유하거나 JSON 형식으로 내보내고 불러올 수도 있다. 

     

    Kibana의 Dashboard 화면(출처: https://esbook.kimjmin.net/01-overview/1.1-elastic-stack/1.1.3-kibana)

     

     

     

    4. Beats

     

      Beats는 데이터 수집을 위한 단일 목적의 무료 오픈 소스 플랫폼으로 Logstash나 Elasticsearch에 데이터를 전송한다. '데이터 수집'이라는 목적은 Logstash와 동일하지만 Logstash보다 프로그램 부피가 적고, 바이너리 실행파일로 변환되기 때문에 라이브러리 종속성도 적다. Elastic사의 Beats는 수집할 수 있는 데이터 종류에 따라 다음과 같이 분류되며, 전 세계 오픈소스 개발자들로부터 개발된 Beat들은 50여 가지에 달한다고 한다. 

    출처: https://www.elastic.co/kr/beats/

     

    - Filebeat는 Web log 또는 machine log 등이 저장되는 파일경로를 지정하기만 하면 해당 경로에 적재되는 파일을 읽어들이며 새로운 내용이 추가될 때마다 그 내용을 Elasticsearch로 색인한다. 

    - Metricbeat는 시스템에서 실행중인 프로세스들의 정보와 이 프로세스들이 소모 중인 CPU, Memory 등에 대한 상태들을 수집해서 Elasticsearch에 적재한다. Kibana Dashboard에서 손쉽게 모니터링할 수 있다. 

    - Packetbeat는 가장 최초의 Beat이다. 설치된 시스템에 유통되는 패킷(제어 정보+사용자 데이터)들을 스니핑 해서 Elasticsearch에 적재시킨다. 

    - Winlogbeat는 Microsoft Windows 기반 시스템에서 시스템 상에 적재되는 이벤트들을 수집해 Elasticsearch로 색인하여 모니터링할 수 있도록 한다. 

    - Auditbeat는 리눅스 시스템의 사용자 접속과 실행 이벤트 로그들과 같은 감사 데이터를 수집한다. 주로 시스템 보안 분석을 할 때 사용된다. 

    - Heartbeat는 타 프로세스들의 가동 시간 등을 모니터링한다. ICMP, TCP, HTTP 프로토콜 등을 통해 Ping 명령으로 원격의 프로세스 가동 여부를 확인한다. 단순한 동작으로 다양한 시스템을 동시에 모니터링할 수 있다.

    - Functionbeat는 마이크로 서비스 아키텍쳐(MSA) 와 같은 FaaS 클라우드 기반의 시스템에서 서버리스 프레임워크를 이용하여 클라우드 인프라를 모니터링한다. 다른 Beats들과 달리 수집을 위한 데이터가 있는 시스템에 설치되는 것이 아니라 Lamda와 같은 기능으로 배포된다.  

     

     

     

     

    출처:

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

     

    오픈 소스 검색: Elasticsearch, ELK Stack 및 Kibana 개발사 | Elastic

    우리는 Elastic (ELK) Stack -- Elasticsearch, Kibana, Beats 및 Logstash를 만든 개발사입니다. 클라우드 또는 온-프레미스에서 데이터를 안전하고 안정적으로 검색하고 분석하고 시각화하세요.

    www.elastic.co

    https://esbook.kimjmin.net/

     

    Elastic 가이드 북 - Elastic 가이드북

    7. 인덱스 설정과 매핑 - Settings & Mappings

    esbook.kimjmin.net

    https://ko.wikipedia.org/wiki/%EB%A1%9C%EA%B7%B8%ED%8C%8C%EC%9D%BC

     

    로그파일 - 위키백과, 우리 모두의 백과사전

    컴퓨팅에서 로그파일(logfile)은 운영 체제나 다른 소프트웨어가 실행 중에 발생하는 이벤트나 각기 다른 사용자의 통신 소프트웨어 간의 메시지를 기록한 파일이다. 로그를 기록하는 행위는 로

    ko.wikipedia.org

    https://www.slideshare.net/novathinker/ss-45784126

     

    실시간 빅데이터와 머신 데이터

    향후 빅데이터의 주된 소스는 머신데이터가 될 것이다. 머신데이터의 속성은 스트리밍, 실시간이라는 특징을 가진다. 향후 머신데이터는 실시간 빅데이터 솔루션을 통해 우리의 생활로 서서히

    www.slideshare.net

    https://www.microsiervos.com/archivo/internet/la-internet-de-las-cosas-en-cifras.html

     

    La «Internet de las cosas» en cifras

    Tal y como explican en The Connectivist en 1992 eran un millón pero para 2020 serán 50.000 millones de aparatos los que estarán conectados a Internet, desde teléfonos móviles a las ruedas de tu coche o las bombillas de casa. Básicamente...

    www.microsiervos.com

    https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

     

    [Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

    Step by step goes a long way.

    gmlwjd9405.github.io

    https://mangkyu.tistory.com/46

     

    [Server] Restful API란?

    최근에 진행중인 프로젝트에서 Google Drive API, Google App Script 등을 사용하고 있는데, 오늘은 이러한 것들을 사용하기 위해 요청을 보내는 방식인 Rest API에 대해 알아보도록 하겠습니다. 1. RESTful API

    mangkyu.tistory.com

     

    댓글

Designed by Tistory.