blog

๐Ÿ›  Sentry ์†Œ๊ฐœ ๋ฐ ์„ค์น˜ ๋ฐฉ๋ฒ•

๋‚ ์งœ: 2025-02-15

๋ชฉ๋ก์œผ๋กœ


๐Ÿ“Œ Sentry๋ž€?

Sentry๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฒ„๊ทธ ํŠธ๋ž˜ํ‚น์„ ์œ„ํ•œ ๋„๊ตฌ๋กœ, ์‹ค์‹œ๊ฐ„ ์˜ค๋ฅ˜ ๊ฐ์ง€, ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฐฐํฌ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Django, Flask, FastAPI, Node.js, React, iOS, Android ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋ฉฐ, ๋กœ๊ทธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠธ๋ ˆ์ด์Šค, ์„ฑ๋Šฅ, ๋ฐฐํฌ ์ •๋ณด๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿš€ 1. Sentry ์ฃผ์š” ๊ธฐ๋Šฅ

โœ… ์˜ค๋ฅ˜ ๊ฐ์ง€: ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ์—๋Ÿฌ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  Slack, ์ด๋ฉ”์ผ, Discord ๋“ฑ์œผ๋กœ ์•Œ๋ฆผ ์ „์†ก
โœ… ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง: API ์‘๋‹ต ์†๋„, ์ฟผ๋ฆฌ ์†๋„ ๋“ฑ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ถ„์„
โœ… ๋ฆด๋ฆฌ์ฆˆ ๋ฐ ๋ฐฐํฌ ์ถ”์ : ๋ฒ„์ „๋ณ„ ์—๋Ÿฌ ์ถ”์  ๋ฐ ๋ฐฐํฌ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง
โœ… ํŠธ๋ ˆ์ด์Šค ๊ธฐ๋Šฅ: ํŠน์ • ์š”์ฒญ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ์ถ”์  ๊ฐ€๋Šฅ (Django, FastAPI ์ง€์›)
โœ… ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ: ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋ชจ๋“  ์˜ค๋ฅ˜์™€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธ


โš™๏ธ 2. Sentry ์„ค์น˜ ๋ฐ ์—ฐ๋™ ๋ฐฉ๋ฒ• (Django ๊ธฐ์ค€)

โœ… 2.1 Sentry ๊ณ„์ • ์ƒ์„ฑ ๋ฐ ํ”„๋กœ์ ํŠธ ์„ค์ •

  1. Sentry ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์— ๊ฐ€์ž…
  2. Create Project ํด๋ฆญ
  3. ํ”Œ๋žซํผ ์„ ํƒ (Django ์„ ํƒ)
  4. ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ์—์„œ DSN(๋ฐ์ดํ„ฐ ์†Œ์Šค ๋„ค์ž„) ํ™•์ธ (API ํ‚ค ์—ญํ• )

โœ… 2.2 Django ํ”„๋กœ์ ํŠธ์— Sentry ์„ค์น˜

1๏ธโƒฃ Sentry SDK ์„ค์น˜

pip install --upgrade sentry-sdk

2๏ธโƒฃ settings.py์— Sentry ์„ค์ • ์ถ”๊ฐ€

import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration

sentry_sdk.init(
    dsn="https://your-dsn@sentry.io/project-id",  # Sentry์—์„œ ์ œ๊ณตํ•˜๋Š” DSN ์ž…๋ ฅ
    integrations=[DjangoIntegration()],
    traces_sample_rate=1.0,  # 0.0 ~ 1.0 (ํŠธ๋ ˆ์ด์Šค ์ƒ˜ํ”Œ๋ง ๋น„์œจ, 1.0์ด๋ฉด ๋ชจ๋“  ์š”์ฒญ ๊ธฐ๋ก)
    send_default_pii=True,  # ์‚ฌ์šฉ์ž ์ •๋ณด ์ˆ˜์ง‘ ํ—ˆ์šฉ (GDPR ์ค€์ˆ˜ ํ•„์š”)
)

3๏ธโƒฃ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ž๋™ ๊ฐ์ง€ ํ…Œ์ŠคํŠธ

from django.http import HttpResponse

def trigger_error(request):
    division_by_zero = 1 / 0  # ์—๋Ÿฌ ๋ฐœ์ƒ ์ฝ”๋“œ
    return HttpResponse("This won't be reached")

๐Ÿ”ฅ 3. Sentry ์ฃผ์š” ๊ธฐ๋Šฅ ํ™œ์šฉ

โœ… 3.1 Slack & Email ์•Œ๋ฆผ ์„ค์ •

  1. Sentry โ†’ Settings โ†’ Integrations โ†’ Slack ์„ ํƒ
  2. ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ฑ„๋„ ์„ ํƒ ํ›„ ์—ฐ๊ฒฐ
  3. ์ด๋ฉ”์ผ ์•Œ๋ฆผ๋„ ๊ฐ™์€ ๋ฉ”๋‰ด์—์„œ ์„ค์ • ๊ฐ€๋Šฅ

โœ… 3.2 ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ •

Sentry๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Django, FastAPI, Flask์˜ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
๋ณ„๋„ ์„ค์ • ์—†์ด API ์‘๋‹ต ์‹œ๊ฐ„, ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ, ์ˆ˜๋™์œผ๋กœ ํŠน์ • ๋ธ”๋ก์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋ ค๋ฉด:

from sentry_sdk import start_transaction

def my_view(request):
    with start_transaction(op="task", name="my_slow_function"):
        slow_function()
    return HttpResponse("Done")

โœ… 3.3 ํŠน์ • ์˜ˆ์™ธ ๋ฌด์‹œํ•˜๊ธฐ

๋กœ๊ทธ์—์„œ ๋ถˆํ•„์š”ํ•œ ์˜ค๋ฅ˜๋ฅผ ์ œ์™ธํ•˜๋ ค๋ฉด ignore_errors ์„ค์ • ์‚ฌ์šฉ:

sentry_sdk.init(
    dsn="https://your-dsn@sentry.io/project-id",
    integrations=[DjangoIntegration()],
    ignore_errors=[ZeroDivisionError, KeyError],  # ํŠน์ • ์˜ˆ์™ธ ๋ฌด์‹œ
)

โœ… 3.4 ์‚ฌ์šฉ์ž ์ •๋ณด ๋กœ๊ทธ ์ถ”๊ฐ€

๋กœ๊ทธ์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด:

from sentry_sdk import configure_scope

def my_view(request):
    with configure_scope() as scope:
        scope.set_user({"id": request.user.id, "email": request.user.email})
    raise Exception("์‚ฌ์šฉ์ž ๊ด€๋ จ ์—๋Ÿฌ ๋ฐœ์ƒ")

Sentry์—์„œ ์‚ฌ์šฉ์ž๋ณ„ ์˜ค๋ฅ˜ ๋ถ„์„ ๊ฐ€๋Šฅ


๐Ÿ›  4. Self-Hosting ๋ฐฉ์‹ (On-Premise)

๐Ÿ“Œ ํด๋ผ์šฐ๋“œ๊ฐ€ ์•„๋‹Œ ์ž์ฒด ์„œ๋ฒ„์—์„œ Sentry ์šด์˜ํ•˜๊ธฐ

Sentry๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ SaaS (Cloud) ์„œ๋น„์Šค์ด์ง€๋งŒ, On-Premise ์„ค์น˜๋„ ๊ฐ€๋Šฅ

โœ… 4.1 Docker๋ฅผ ์ด์šฉํ•œ ์„ค์น˜

git clone https://github.com/getsentry/self-hosted.git sentry
cd sentry
./install.sh  # ์„ค์น˜ ์‹œ์ž‘
docker compose up -d  # ์‹คํ–‰

โœ… 4.2 ์‹คํ–‰ ํ›„ ์›นํŽ˜์ด์ง€ ์ ‘์†

http://localhost:9000

๐Ÿ”ฅ 5. ๊ฒฐ๋ก 

โœ”๏ธ Django, FastAPI, Flask, Node.js ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅ
โœ”๏ธ ์‹ค์‹œ๊ฐ„ ์—๋Ÿฌ ๊ฐ์ง€ & ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
โœ”๏ธ Slack, Email ์—ฐ๋™์„ ํ†ตํ•ด ๋น ๋ฅธ ์žฅ์•  ๋Œ€์‘ ๊ฐ€๋Šฅ
โœ”๏ธ ๋ฐฐํฌ ํŠธ๋ž˜ํ‚น ๊ธฐ๋Šฅ์œผ๋กœ ํŠน์ • ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ ์ถ”์  ๊ฐ€๋Šฅ
โœ”๏ธ SaaS(ํด๋ผ์šฐ๋“œ) & ์ž์ฒด ํ˜ธ์ŠคํŒ…(On-Premise) ๋ชจ๋‘ ์ง€์›

๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ ์žฅ์•  ๊ฐ์ง€ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ž๋™ํ™”ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Sentry๋Š” ํ•„์ˆ˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค! ๐Ÿš€


๋ชฉ๋ก์œผ๋กœ