안녕하세요. 원래 오늘은 ElasticSearch를 실제로 적용시켜보는 과정을 포스팅하려고 했습니다. 하지만 아키텍처를 그리기 전에 한번 비교하고 넘어가고 싶어서 이렇게 번외로 비교를 한번 진행하려고 합니다.
원래 ELK Stack에서 L인 Logstash는 ElasticSearch로 data shipper 역할을 하고 있었습니다. 어플리케이션에서 생산되는 log 등에 대해서 분석 및 수집 도구인 ElasticSearch로 전송의 역할도 담당했습니다. 하지만 2015년 더 경량의 data shipper인 filebeat가 나왔습니다. 이 둘의 공통점은 무엇이고 차이점은 무엇인지, 그리고 filebeat는 어디에 쓰면 좋고 logstash는 어디에서 사용하면 좋을지 한번 알아보도록 하겠습니다.
이 글은 logstash와 filebeat 및 elasticsearch에 대한 개념을 알고 계신다는 것을 전재하에 서술하고 있습니다. 개념이 생소하신 분들은 [MSA] Elastic Stack을 이용한 중앙 집중형 로깅_1편을 보고와주시면 감사하겠습니다.
Logstash vs Filebeat
Logstash와 Filebeat의 최대 다른점은 가지고 있는 기능입니다. Logstash는 Filebeat에 비해 훨씬 풍부한 기능을 가지고 있습니다. 반면에 Filebeat의 최대 장점은 Resource(CPU와 RAM)을 상당히 적게 소모한다는 점입니다.
Filebeat Advantages
Filebeat의 가장 큰 장점은 Resource(CPU와 RAM)을 상당히 적게 소모한다는 점입니다. 그리고 특정한 로그타입에 대해서 모듈을 제공합니다. 그리고 간단한 filter도 제공할 수 있습니다.
Filebeat Disadvantages
Filebeat는 input과 output이 상당히 제한적이라는 단점을 가지고 있습니다. 점점 많아지고 있긴 하지만 input의 경우는 대부분 file의 변경을 읽는 정도이며 output은 logstash, elasticsearch 그리고 kafka와 redis 정도입니다. 또한 Logstash는 grok 등을 통해 남다른 filter가 가능하지만 이러한 기능또한 filebeat는 제한적입니다.
Filebeat Typical use-cases
filebeat를 사용하면 좋을 경우 !
-
elasticsearch로 직접 전달
- 별도의 분석 없이 로그를 직접 전달해도 되는 경우나 log자체가 json으로 남는경우라면 직접 elasticsearch로 전달해도 충분합니다.
-
Logstash 또는 kafka, redis로 전달
- 로그를 redis나 kafka또는 Logstash로 전달하고자 할때 사용할 수 있습니다.
Filebeat to Kafka
운영 상 로그를 남길 때 만약 elasticsearch가 꺼져있다면 어떨까요? 그러면 우리는 상당히 곤란해 집니다. 왜냐하면 elasticsearch가 꺼져있을 때 로그가 전달 되지 않기 때문이죠. 따라서 전달되지 못한 로그를 buffer에 가지고 있어야 할 경우가 있습니다. filebeat도 그역할을 할 수 있지만 부족한게 현실입니다. 그래서 Logstash를 사용합니다. 하지만 Logstash도 부족하다고 느껴질 때가 있습니다. 왜냐하면 Logstash는 sharding과 replication 등을 지원하지 않기 때문입니다. 그래서 kafka를 사용하기도 합니다. 아래와 같이 말이죠.
정리
요소 | Logstash | Filebeat |
자원 사용 | 무거움 | 가벼움 |
Input Option | 많음 | files, TCP/UDP, stdin |
Output Option | 많음 | ElasticSearch, Logstash, file, kafka, redis etc |
Buffering | disk, 많은 메모리 | 적은 메모리 |
마무리
오늘은 이렇게 Filebeat와 Logstash를 비교해보았습니다. 쓰다보니 중복되는 내용도 많았고 횡설수설한 부분도 있었다고 생각합니다. 궁금한점 있으시면 덧글 남겨주시고 답변드리도록 하겠습니다.
감사합니다.
참조
https://dzone.com/articles/filebeat-vs-logstash-the-evolution-of-a-log-shippe
'infra > 로깅과 트레이싱' 카테고리의 다른 글
[MSA] Elastic Stack을 이용한 중앙 집중형 로깅_실제 운영 환경 (0) | 2019.12.18 |
---|---|
[MSA] Elastic Stack을 이용한 중앙 집중형 로깅_1 (0) | 2019.12.09 |
[MSA] Spring Cloud Sleuth와 Zipkin을 이용한 분산 시스템 Tracing_2 (0) | 2019.12.07 |
[MSA] Spring Cloud Sleuth와 Zipkin을 이용한 분산 시스템 Tracing_1 (0) | 2019.12.05 |
[MSA] MSA의 로깅과 트레이싱 (2) | 2019.12.04 |
댓글