다양한 로그 수집 서비스 비교 분석 (ELK, Fluentd, Datadog, Rollbar, Sentry)

thankspotato·2022년 11월 23일
2

지난 글에서 이번 주 스프린트 주제와 목적을 다뤘다.
이번 글에서는 로깅 시스템에 도입할 솔루션을 탐색하는 과정에서 수집한 자료를 정리했다.



오늘은 로깅 시스템에 도입할 데이터(로그) 수집기 및 분석 툴을 찾기 위해 여러 솔루션을 탐색해보았다.

여러 솔루션들을 비교하기 위해서는 먼저 우리 서비스의 특징을 이해하고 정리하는 것이 필요했다.

우리 서비스는 ...

  • 모놀리틱Monolithic 구조이다.
  • 규모가 작고, 트래픽도 많이 발생하지 않는다.
  • Cloud Native 서비스다. (AWS EC2, Docker)

총 5개 서비스가 후보에 올랐는데 (ELK, fluentd, Datadog, Rollbar, Sentry)
각각의 장단점을 분석하여 다음과 같이 요약해볼 수 있었다.


각 솔루션의 장단점 비교

1. ELK stack

로그 수집(logstash), 검색(elasticsearch), 데이터 시각화(kibana)를 통합한 서비스

장점

  • 오픈소스 보편적으로 사용되며 레퍼런스가 많다.
  • 모니터링 시스템까지 갖출 수 있다.
  • logstash 외에 다른 tool을 사용하여 데이터 수집 기능을 대체할 수 있다.
    (순수 데이터 수집만을 목적으로 경량화된 모듈 beats를 제공한다)
  • 수집된 데이터(로그) 검색 기능
  • Kibana를 연결하여 실시간으로 로그를 분석하고 시각화할 수 있다.

단점

  • 설정이 복잡하다.
  • 완전히 실시간으로 동작하지는 않는다.
  • 관리할 로그의 규모에 비해 투자되는 리소스가 많아보인다.(인적, 시간적 리소스)
  • elasticsearch와 함께 설치되는 X-Pack 플러그인을 무료로 사용할 수 있었는데, ver6.3을 기점으로 라이센스가 변경됨에 따라 Alert을 비롯한 대부분의 쓸만한 기능은 라이센스 비용을 지불해야 한다.

2. fluentd

다양한 소스에서 로그를 수집하고 이를 중앙화하는 오픈소스 데이터 수집기

장점

  • 오픈소스
  • 데이터 수집, 파싱, 포워딩을 fluentd 하나로 해결할 수 있다. 즉 시스템마다 각각의 로깅 툴을 사용하지 않아도 된다.
  • 제공하는 플러그인이 많아 다양한 시스템의 로그를 파싱할 수 있다. python 로그도 바로 저장할 수 있다.
  • 리소스가 적게 든다.
  • 로그 분석 시 다양한 플러그인을 사용해도 복잡하지 않다.

단점

  • 로그 분석에 있어 logstash처럼 if문 분기를 이용한 상세한 분석은 할 수 없다.

3. Datadog

클라우드 서비스 이용 환경 및 상황을 실시간으로 관찰한 테이터를 수집하고 분석하는 서비스

장점

  • 무제한적인 로깅이 컨셉
  • 데이터베이스, 메모리스토어, 애플리케이션 등 상세하게 모니터링할 수 있다. 외부 API 연동을 통해 다른 서비스 모니터링도 가능하다. (AWS)
  • 그 외에도 다양한 기능이 계속해서 추가되고 있다. 데이터독 하나 잘 구축해놓으면 서비스 규모가 커지고 고도화됨에 따라 활용할 수 있는 기능이 많을 것 같다고 생각했다. 하지만 '지금' 우리 서비스에 도입하는 것이 최선인지는 글쎄

단점

  • 무료 요금제도 있긴 하다만...
  • 로그를 저장하는 인제스트에 대하여 기가 바이트당 비용을 청구한다.
  • 로그 검색이 기본적으로 불가능하고, 검색하고 싶으면 인덱싱을 해야한다. 인덱싱을 활용하면 추가적인 비용이 발생한다.

4. Rollbar

애플리케이션의 에러를 실시간으로 확인하고 추적해 볼 수 있는 서비스
https://rollbar.com/

장점

  • real-time으로 에러를 확인할 수 있다.
  • 서버 사이드, 클라이언트 사이드 에러 핸들링 모두 가능하다.
  • 무료 버전에서 데이터 리텐션을 30일이나 제공한다. (데이터독은 1일)
  • 데이터 쿼리를 제공하여 원하는 로그를 검색할 수 있다.
  • 에러를 해결하는데 필요한 code-context와 contextual metadata 제공
  • Remote debug를 대체할 만한 기능!? 런타임에 발생하는 http 요청 파라미터와 local variable values를 확인할 수 있다.
  • 다양한 알림 연동을 지원한다.

단점

  • 무료 버전은 알림 갯수를 5000개로 제한
  • 데이터 관리는 별도로 필요해보임

5. Sentry

애플리케이션의 에러를 실시간으로 확인하고 추적해 볼 수 있는 서비스
https://sentry.io/

장점

  • 에러 분석에 특화되어있다.
  • 연관된 에러들을 묶어서 하나로 보여주고, 이를 이용하여 사용자에게 보내는 알림을 세세한 레벨로 조정할 수 있다.
  • 간단한 에러 트래킹이나 모니터링 용도로 사용할 때에는 무료 요금제인 Developer Plan을 사용할 수 있다.
  • 서버 사이드, 클라이언트 사이드 에러 핸들링 모두 가능하다. 단, 별도의 프로젝트로 각 에러를 관리해야 한다.
  • 다양한 알림 연동을 지원한다. (슬랙 알림도 포함되어있다.)
    • Azure DevOps, Bitbucket, GitHub, GitHub Enterprise, GitLab, JIRA, JIRA Server, PagerDuty, Slack
    • Amixr, ClickUp, Clubhouse, Rookout, Split
    • Amazon SQS, Asana, Campfire, Flowdock, GitLab, Heroku, HipChat, Lighthouse, OpsGenie, PagerDuty, Phabricator, Pivotal Tracker, Pushover, Redmine, Splunk, Taiga, Teamwork, Trello*, Twilio

단점

  • 유료 요금제로 전환하고자 한다면 비용이 꽤 비싸다. (business 기준 80불)
  • 무료 버전은 리포팅이 한달에 5000개로 제한
  • rollbar와 마찬가지로 수집된 로그 관리는 추가적으로 고민해야할듯.

감상

ELK와 Datadog이 많은 기업에서 활용하고 있어, 이를 우리 플랫폼 인프라에 도입하는 것이 좋은 경험이 될 것으로 기대했다.
하지만 Datadog의 경우 현재 우리 서비스에는 적합하지 않은 것 같다는 판단을 내리게 되었다.
데이터독의 많은 기능을 활용해볼 만큼 우리 서비스가 크고 복잡하지 않으며, 무제한으로 로그를 적재할 수 있지만 이에 따르는 비용적 부담이 너무 크다고 생각했다. 비용 대비 효용이 떨어지는 느낌...
Sentry와 rollbar는 기능적으로 거의 유사한데, Client side error까지 함께 관리할 수 있다는 장점이 돋보였다. 그 덕분에 사용자 버그 리포트에 대한 문제 상황 파악에 유리할 수 있겠다고 생각했다.
물론 프론트엔드 에러 로깅을 위한 별도의 프로젝트를 구축해야 가능하겠지만, 추후에 프론트엔드 로그도 함께 핸들링할 여지를 둘 수 있어 좋은 선택지로 보인다.
다만 이거 하나로 모든 것을 해결할 수는 없고 전체 로그를 관리할 서비스를 추가적으로 도입하는게 좋을 것 같다.

결론

  • fluentd에서 nginx, gunicorn, django 로그를 중앙화하여 관리하고
  • 특히 에러 상황에 대응하기 위해 sentry 또는 rollbar 셋업
  • 추후 로그 데이터 분석을 본격적으로 하고자 하면 EFK 스택(ELK에서 logstash 대신 fluentd)을 도입하면 어떨까

이렇게 시스템 아키텍처를 대략적으로 디자인해보았다.

profile
What you do today can improve all your tomorrows.

1개의 댓글

comment-user-thumbnail
2023년 7월 2일

이후 진행과정에 대해 궁금합니다! 대략 8개월이 지난 지금 허술했던 로깅 시스템이 많이 보완 되었을까요?

답글 달기