본문 바로가기
Observability/Logs

[ELK/EFK] 로그 수집 - Filebeat / Logstash / Fluentd / Fluent-bit

by dev_ss 2024. 3. 20.

 

 

 

최근에는 많은 기업들이 Elastic 재단의 ELK stack(또는 EFK stack)을 활용하여 로그를 수집하고 이를 시각화하여 운영 상 발생하는 이슈를 잡아내고 비즈니스 의사결정에 참고를 한다.

 

저번의 글에서는 데이터 저장소의 역할을 하는 Elasticsearch와 데이터를 확인할 수 있는 대시보드인 Kibana를 쿠버네티스 환경에서 간단하게 생성하고 연동해 보았다.

 

 

[ELK] Kubernetes 환경에서 Elasticsearch / Kibana 설치

최근에는 많은 회사들이 ELK(EFK) Stack으로 데이터 파이프라인을 구축하여 다양한 분야에서 활용한다. https://ssnotebook.tistory.com/entry/ELK-Elasticsearch [ELK] Elasticsearch 1. 엘라스틱 서치(Elasticsearch) : 아파

ssnotebook.tistory.com

 

이번 글에서는 애플리케이션에서 발생하는 데이터를 수집하고,

목적에 맞게 변환하여, 구축한 저장소로 전달하는 데이터 파이프라인의 과정

그중에서 로그 수집기로 많이 사용되는 플랫폼에 관하여 알아볼 것이다.

 


데이터 파이프라인

먼저 로그 수집기의 데이터 파이프라인에 관하여 알아볼 것이다.

 

3단계의 과정으로 이루어져 있다.

 

 

1. 데이터를 입력(수집)

2. 목적에 맞게 데이터를 변환(필터)

3. 목적지로 출력(송신)

 

1) 입력(수집) - Input

[출처 : https://www.elastic.co/kr/logstash]

 

Filebeat, S3, Database 및 Kafka 등에 수집 또는 저장된 원천 데이터를 스트리밍 방식으로 수집한다.

 

 

2) 필터(변환) - Filter

[출처 : https://www.elastic.co/kr/logstash]

 

수집된 데이터는 다른 서비스에서 이용되기 위하여 변환되어야 하고, 해당 형태에 맞도록 변환한다.

 

3) 출력(송신) - Output

 

[출처 : https://www.elastic.co/kr/logstash]

 

필터를 통하여 변환된 데이터를 목적지로 전송한다.

 


로그 수집기

 

마이크로 서비스 아키텍처에서는 수많은 컨테이너에서 로그가 발생하고, 이를 일일이 확인하는 것은 쉽지 않다.

그렇기 때문에 별도로 로그를 수집하여 집계하는 오픈소스들이 존재한다.

 

그중에서 대표적으로 많이 쓰이는 4가지를 알아볼 것이다.

 

 

1. Filebeat

 

Filebeat은 Elastic사에서 개발한 경량형 로그 데이터 수집기이다.

 

로그 파일을 읽어서 엘라스틱서치 또는 로그스태시로 전송하는 역할을 한다.

 

Filebeat은 모듈화 된 구조를 가지고 있어 다양한 데이터 소스와 통합이 쉽고, 리소스 사용이 효율적이며 설정이 간단하다.

 

[출처 : https://www.elastic.co/kr/beats/filebeat]

 


2. Logstash

 

아래는 엘라스틱 재단에서 소개하는 로그 스태시의 내용이다.

 

 

 

Logstash: 로그 수집, 구문 분석, 변환 | Elastic

Logstash(Elastic Stack의 일부)는 이 유연한 오픈 소스 콜렉션, 구문 분석 및 강화 파이프라인으로 모든 소스, 모든 형식의 데이터를 손쉽게 통합합니다. 무료 다운로드....

www.elastic.co

 

Logstash는 Elastic사에서 개발한 데이터 파이프라인 플랫폼이며, 다양한 플러그인을 지원하기에 유연하고 확장성이 높다.

 

Java 기반으로 제작되었으며, 타 오픈소스에 비해 무겁고 설정이 복잡하다.

 

 


3. Fluentd

 

CNCF의 프로젝트C와 Ruby를 이용하여 제작된 Fluentd는 다양한 로그 소스를 수집하여 변환하고 목적지로 전송하는 로그 수집기이다.

[출처 : https://www.fluentd.org/architecture]

 

 

천 개가 넘는 플러그인을 지원하기 때문에 애플리케이션, 인프라 및 메시지 큐 등의 다양한 플랫폼에서 데이터를 수월하게 수집할 수 있다.

 

 

지원하는 플러그인은 아래 사이트에서 확인할 수 있다.

 

List of Plugins By Category | Fluentd

Amazon Web Services /  Big Data /  Filter /  Google Cloud Platform /  Internet of Things /  Monitoring /  Notifications /  NoSQL /  Online Processing /  RDBMS /  Search /  AMAZON WEB SERVICES Certified Download Name Author About Versi

www.fluentd.org

 

 

Fluentd는 Apache 2.0이라는 비교적 자유로운 라이선스를 가지고 있다.

(로그스태시 : Elastic License)

 

 


4. Fluent-bit

 

 

CNCF 프로젝트 Fluentd의 산하 프로젝트Fluent-bit은 성능에 중점을 두고 C언어로 개발된 로그 및 지표 수집기이다.

성능에 중점을 두고 개발되었기 때문에 매우 가볍고 빠르다는 특징을 가지고 있다.

 

아래는 Fluentd와 Fluent-bit의 비교를 표로 나타낸 것이다.

- 2024-03-12 기준(표는 수시로 업데이트가 된다)

[출처 : https://docs.fluentbit.io/manual/about/fluentd-and-fluent-bit]

 

이용하는 메모리만 봐도 Fluentd는 최소 60MB 이상을 요구하지만 Fluent-bit은 최대 1MB의 자원을 이용하는 것을 보여준다.

 

Fluent-bit도 Fluentd와 같이 Apache 2.0이라는 라이선스를 가지고 있다.

 


마무리

 

 

순서대로 Filebeat, Logstash, Fluentd, Fluent-bit이라는 오픈소스들에 대하여 알아보았다.

 

모든 로그 수집기는 입력/변환/출력을 이용할 수 있으나, 각 장점에 맞춰서 아키텍처를 구축한 사례들이 있었다.

 

그중에서는 Elastic사의 Filebeat과 Logstash를 통합하여 운영한 사례가 있었다.

 

경량형인 Filebeat은 주로 수집을 하는 역할로 사용하고,  Logstash는 Filebeat에서 수집한 데이터를 플러그인을 활용하여 데이터를 변환하고 변환한 데이터를 목적지로 송신하는 흐름이었다.

 

아래와 같이 구축된 사례이다.

 

[출처 : https://is-rajapaksha.medium.com/lets-learn-elastic-stack-part-5-filebeat-architecture-4578f4b20d24]

 

 

Filebeat에서 Elasticsearch로 직접 송신도 가능하고 Logstash로 경유하여 송신하여 구축할 수 있다는 것이다.

 

더군다나 같은 재단에서 개발된 서비스기에 서비스 간의 레퍼런스나 플러그인을 매우 구현하기 쉽게 찾아볼 수 있을 것이다.

 

 

 

 

 

Fluentd, Fluent-bit도 위 사례와 같이 두 서비스를 통합하여 사용하는 사례가 많이 있었다.

 

[출처 : https://aws.amazon.com/ko/blogs/containers/fluentd-considerations-and-actions-required-at-scale-in-amazon-eks/]

 

 

데이터 수집하는 부분과 집계하여 처리하고 송신하는 부분을 분리하여 구축한 사례인 것이다.

 

분리하여 구축하게 된다면 비용은 올라가지만 안정성을 높이고 결합도를 낮출 수 있다는 장점이 있으나,

그에 따라 비용이 많이 늘어난다는 단점이 있다.

 

 

 

로그 수집기의 특성과 여러 아키텍처의 사례들을 보면서 가장 중요하다고 생각되는 점은,

각 로그 수집기의 특성과 비용에 관하여 이해하고 어떤 아키텍처가 가장 적합한지 고심하는 것이라고 생각된다.

 

 

 

반응형