대용량 서비스에서 각 장비에서 발생하는 로그를 한 장소에 모으고 해당 정보를 통합 모니터링 할 수 있는 시스템은 반드시 필요합니다. 장비가 몇 대 안될 경우 직접 장비에 접근하여 파일 로그를 살펴보며 이슈 대응이 가능하지만, 물리 장비가 수백, 수천대 일 경우는 참 난감한 상황입니다.

이러한 상황을 해결하기 위한 로그 분석 모니터링 서비스를 구축 할 때 ElasticSearch + ( LogStash or FluentD ) + Kibana를 조합하여 많이 사용합니다.

구 조

structure

각 장비에서 발생하는 로그를 LogStash or FluentD를 이용하여 ElasticSearch에 전송하고, Kibana를 통해 웹브라우저에서 모니터링 할 수 있습니다.

LogStash

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

  • logstash는 다양한 곳에서 Input을 받아 사용자가 가공하여 다양한 곳으로 출력 및 저장 할 수 있습니다.

    데이터가 소스에서 저장소로 이동할 때 logstash필터에서 미리 정의한 이벤트 및 구조를 정의 할 수 있고, 사용할 수 있는 라이브러리는 다양합니다.

    정리
    - input : 데이터를 받는다.
    - filter : 데이터를 가공한다.
    - output : 데이터를 출력한다.
    

FluentD

  • Fluentd는 로그(데이터) collector입니다. 보통 로그를 수집하는 데 사용하지만, 다양한 데이터 소스(HTTP, TCP 등)로부터 데이터를 받아올 수 있습니다.
  • Fluentd로 전달된 데이터는 tag, time, record(JSON) 로 구성된 이벤트로 처리되며, 원하는 형태로 가공되어 다양한 목적지(Elasticsearch, S3, HDFS 등)로 전달될 수 있습니다.
  • Fluentd는 C와 Ruby로 개발되었다. 더 적은 메모리를 사용해야 하는 환경에서는 Fluentd forwarder의 경량화 버전인 Fluentd-Bit 와 함께 사용할 수 있습니다.
  • Distributed , RESTful search and analytics.(데이터 검색, 분석 및 저장)
  • Elastic Search는 Apache Lucene을 기반으로 개발한 분산 검색엔진으로 비정형 데이터를 쉽게 저장하고 처리할 수 있으며, 실시간 검색과 플러그인을 이용한 확장을 지원하는 장점을 가지고 있습니다. 인덱스 갱신 주기도 빠른 편이며, 운영중인 스키마 변경이 가능합니다.

Kibana

  • Kibana는 데이터를 시각화하고, Elastic Stack의 모든 기능을 구성 및 관리할수 있는 확장 가능한 UI 도구입니다.

LogStash와 FluentD 비교

vs