๋ ์ง: 2025-02-15
Sentry๋ ์ ํ๋ฆฌ์ผ์ด์
๋ชจ๋ํฐ๋ง ๋ฐ ๋ฒ๊ทธ ํธ๋ํน์ ์ํ ๋๊ตฌ๋ก, ์ค์๊ฐ ์ค๋ฅ ๊ฐ์ง, ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ฐฐํฌ ์ถ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
Django, Flask, FastAPI, Node.js, React, iOS, Android ๋ฑ ๋ค์ํ ํ๋ซํผ์ ์ง์ํ๋ฉฐ, ๋ก๊ทธ๋ฟ๋ง ์๋๋ผ ํธ๋ ์ด์ค, ์ฑ๋ฅ, ๋ฐฐํฌ ์ ๋ณด๊น์ง ํ ๋ฒ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
โ
์ค๋ฅ ๊ฐ์ง: ์์ธ ๋ฐ์ ์ ์๋์ผ๋ก ์๋ฌ๋ฅผ ์์งํ๊ณ Slack, ์ด๋ฉ์ผ, Discord ๋ฑ์ผ๋ก ์๋ฆผ ์ ์ก
โ
์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: API ์๋ต ์๋, ์ฟผ๋ฆฌ ์๋ ๋ฑ ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ถ์
โ
๋ฆด๋ฆฌ์ฆ ๋ฐ ๋ฐฐํฌ ์ถ์ : ๋ฒ์ ๋ณ ์๋ฌ ์ถ์ ๋ฐ ๋ฐฐํฌ ์ํ ๋ชจ๋ํฐ๋ง
โ
ํธ๋ ์ด์ค ๊ธฐ๋ฅ: ํน์ ์์ฒญ์ ์คํ ํ๋ฆ์ ์ถ์ ๊ฐ๋ฅ (Django, FastAPI ์ง์)
โ
์ธ์ฌ์ดํธ ๋์๋ณด๋: ๋์๋ณด๋์์ ๋ชจ๋ ์ค๋ฅ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํ๋์ ํ์ธ
Create Project
ํด๋ฆญDjango
์ ํ)DSN(๋ฐ์ดํฐ ์์ค ๋ค์)
ํ์ธ (API ํค ์ญํ )pip install --upgrade sentry-sdk
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 ์ค์ ํ์)
)
from django.http import HttpResponse
def trigger_error(request):
division_by_zero = 1 / 0 # ์๋ฌ ๋ฐ์ ์ฝ๋
return HttpResponse("This won't be reached")
/trigger-error/
์์ฒญ ์ Sentry์ ์๋ฌ๊ฐ ์๋ ๋ณด๊ณ ๋จSettings
โ Integrations
โ Slack ์ ํ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")
๋ก๊ทธ์์ ๋ถํ์ํ ์ค๋ฅ๋ฅผ ์ ์ธํ๋ ค๋ฉด ignore_errors
์ค์ ์ฌ์ฉ:
sentry_sdk.init(
dsn="https://your-dsn@sentry.io/project-id",
integrations=[DjangoIntegration()],
ignore_errors=[ZeroDivisionError, KeyError], # ํน์ ์์ธ ๋ฌด์
)
๋ก๊ทธ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด:
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์์ ์ฌ์ฉ์๋ณ ์ค๋ฅ ๋ถ์ ๊ฐ๋ฅ
Sentry๋ ๊ธฐ๋ณธ์ ์ผ๋ก SaaS (Cloud) ์๋น์ค์ด์ง๋ง, On-Premise
์ค์น๋ ๊ฐ๋ฅ
git clone https://github.com/getsentry/self-hosted.git sentry
cd sentry
./install.sh # ์ค์น ์์
docker compose up -d # ์คํ
http://localhost:9000
โ๏ธ Django, FastAPI, Flask, Node.js ๋ฑ ๋ค์ํ ํ๋ซํผ์์ ํ์ฉ ๊ฐ๋ฅ
โ๏ธ ์ค์๊ฐ ์๋ฌ ๊ฐ์ง & ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ
โ๏ธ Slack, Email ์ฐ๋์ ํตํด ๋น ๋ฅธ ์ฅ์ ๋์ ๊ฐ๋ฅ
โ๏ธ ๋ฐฐํฌ ํธ๋ํน ๊ธฐ๋ฅ์ผ๋ก ํน์ ๋ฒ์ ์์ ๋ฐ์ํ ๋ฌธ์ ์ถ์ ๊ฐ๋ฅ
โ๏ธ SaaS(ํด๋ผ์ฐ๋) & ์์ฒด ํธ์คํ
(On-Premise) ๋ชจ๋ ์ง์
๋๊ท๋ชจ ์๋น์ค์์ ์ฅ์ ๊ฐ์ง ๋ฐ ๋ชจ๋ํฐ๋ง์ ์๋ํํ๊ณ ์ถ๋ค๋ฉด Sentry๋ ํ์ ๋๊ตฌ์ ๋๋ค! ๐