Django 프로젝트에 Sentry 연동하기: 에러 모니터링 쉽게 하기

2
post-thumbnail

안녕하세요 여러분! 오늘은 Django 프로젝트에 Sentry를 어떻게 설정하고 활용할 수 있는지 알아보려고 합니다. 최근 프로젝트에서 발생한 몇 가지 이슈와 그것을 해결하기 위해 Sentry를 적용한 경험을 바탕으로 설명드리겠습니다. 😊

Sentry란 무엇인가요?

먼저 Sentry가 무엇인지 간단히 알아볼까요? Sentry는 애플리케이션에서 발생하는 오류와 성능 문제를 모니터링하고 추적할 수 있는 도구입니다. 이 도구는 오류가 발생했을 때 알림을 보내 주며, 오류의 원인을 파악할 수 있는 다양한 정보를 제공합니다. 이를 통해 개발자는 문제를 신속하게 해결할 수 있습니다.

Sentry 설정하기

본격적으로 들어가기 앞서서 Sentry 설정을 모두 마치고 dsn 까지 받은 상황이라고 가정하겠습니다!
이제 Django 프로젝트에 Sentry를 설정하는 방법을 살펴보겠습니다. 먼저, pyproject.toml 파일에 Sentry SDK를 추가해야 합니다.
저는 poetry로 python 가상환경을 관리하고 있으니 아래와 같은 명령어로 설치해줄게요!

poetry add sentry_sdk

다음으로, .env 파일에 Sentry DSN(Data Source Name)을 추가합니다. Sentry DSN은 Sentry 프로젝트 설정 페이지에서 확인할 수 있습니다.

SENTRY_DSN=https://examplePublicKey@o0.ingest.sentry.io/0

이제 Django 설정 파일을 수정하여 Sentry를 프로젝트에 통합해 봅시다. 먼저 settings.py 파일을 열고, 관련 모듈을 가져옵니다.

import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
from sentry_sdk.integrations.logging import LoggingIntegration
from sentry_sdk.integrations.celery import CeleryIntegration

그 다음, Sentry를 초기화합니다.

sentry_sdk.init(
    dsn=settings.SENTRY_DSN,
    integrations=[
        DjangoIntegration(),
        LoggingIntegration(level=logging.WARNING, event_level=logging.WARNING),
        CeleryIntegration(propagate_traces=False),
    ],
    environment=settings.APP_ENV,
)

여기서 settings.SENTRY_DSN은 앞서 .env 파일에 설정한 DSN을 가리키고, integrations는 Django와 Celery, Logging 통합 설정을 의미합니다.
참고로 밑에 environment key를 이용해서 저는 dev서버와 prod 서버의 slack alert를 각각 다른 채널에 보내게 sentry에서 설정했습니다.

Sentry 적용 후 경험

Sentry를 적용한 후, 우리는 몇 가지 중요한 장점을 경험했습니다.

  1. 실시간 오류 알림: 에러가 발생할 때마다 즉시 알림을 받을 수 있어, 문제를 신속히 파악하고 대응할 수 있었습니다.
  2. 상세한 오류 정보: 오류가 발생한 위치, 스택 트레이스, 사용자 환경 등 다양한 정보를 제공하여 문제 해결에 큰 도움이 되었습니다.
  3. 성능 모니터링: 애플리케이션의 성능 문제도 함께 모니터링할 수 있어, 보다 안정적인 서비스를 제공할 수 있었습니다.
  4. 중복 알림 제거: 어쩔 수 없이 중복되는 에러나 경고가 발생할 시 매번 보내는 형식이 아닌, 특정 시간동안은 중복된 알림이 안오게 설정할 수 있습니다.

예를 들어, 특정 뷰에서 예상하지 못한 에러가 발생했을 때, Sentry를 통해 즉시 알림을 받을 수 있었으며, 상세한 로그와 함께 문제의 원인을 빠르게 찾아낼 수 있었습니다.

결론

Sentry를 Django 프로젝트에 적용함으로써 우리는 보다 효율적으로 오류를 관리하고, 문제를 신속히 해결할 수 있게 되었습니다. 여러분도 Sentry를 통해 프로젝트의 안정성을 높여 보세요! 다음에 더 유익한 정보로 찾아뵙겠습니다. 감사합니다. 😊


이렇게 Sentry를 통합하고 활용하는 방법을 알아보았습니다. 도움이 되셨다면 좋겠네요. 그럼 다음에 또 만나요!

🔥 해당 포스팅은 Dev.POST 도움을 받아 작성되었습니다.

profile
🔥 코드 과정 중 자연스레 쌓인 경험과 지식을 기술 블로그로 작성해줍니다.

0개의 댓글