From 016c540945fdab3ae87cae70e77fd7b1c90c3657 Mon Sep 17 00:00:00 2001 From: furkanyigit34 <134547018+furkanyigit34@users.noreply.github.com> Date: Mon, 10 Aug 2026 00:31:40 +0300 Subject: [PATCH] feat(sentry): CiroMarket backend'ine hata izleme eklendi Ne yaptik: - requirements.txt'e sentry-sdk[fastapi]==2.66.1 eklendi. - main.py'de FastAPI uygulamasi olusturulmadan once sentry_sdk.init() cagriliyor. - DSN os.getenv("SENTRY_DSN", "") ile okunuyor, ortam degiskeni yoksa bos string. - send_default_pii=False, traces_sample_rate=0.0. Neden yaptik: - CiroMarket hicbir hata izleme sistemine bagli degildi. Backend cokerse ya da bir endpoint 500 donerse bunu ancak kullanici sikayet edince ogreniyorduk. SellerX'in kendi backend'i ve frontend'i Sentry'ye bagliydi, CiroMarket kor nokta olarak kalmisti. - DSN bos oldugunda sentry_sdk hicbir sey gondermez, yani local calistirmada ve DSN set edilmemis ortamlarda tamamen no-op. Bu davranis SellerX backend'iyle ayni (application.yaml: dsn ${SENTRY_DSN_BACKEND:}). - send_default_pii bilerek kapali: istek header'lari, cerezler ve IP adresi gonderilmiyor. CiroMarket satici verisi isliyor, KVKK acisindan varsayilan olarak acmak dogru degil. Sentry org'unda ayrica data scrubber ve IP maskeleme acik. - traces_sample_rate=0.0 cunku su an sadece hata izleme istiyoruz; tracing ucretsiz kotayi hizla tuketiyor. Ihtiyac olursa sonra acilir. - Sentry projesi: cironet org'unda ciromarket-api (EU region, sadece Error Monitoring urunu acik). SENTRY_DSN K8s'te ciromarket-backend-secrets secret'ina eklendi. --- backend/main.py | 25 +++++++++++++++++++++++++ backend/requirements.txt | 1 + 2 files changed, 26 insertions(+) diff --git a/backend/main.py b/backend/main.py index b4d7484..d69bf51 100644 --- a/backend/main.py +++ b/backend/main.py @@ -274,6 +274,31 @@ def get_country_from_barcode(barcode: str) -> str: prefix = barcode[:3] return BARCODE_PREFIX_TO_COUNTRY.get(prefix, "Bilinmeyen") +# ============================================================================ +# SENTRY — hata izleme +# ---------------------------------------------------------------------------- +# DSN bos ise sentry_sdk hicbir sey gondermez, yani local calistirmada ve +# DSN set edilmemis ortamlarda tamamen no-op olur. Bu, SellerX backend'indeki +# davranisla ayni (application.yaml: dsn ${SENTRY_DSN_BACKEND:}). +# +# send_default_pii bilerek False: istek header'lari, cerezler ve IP adresi +# Sentry'ye gitmez. CiroMarket satici verisi isliyor, KVKK acisindan varsayilan +# olarak acmak dogru degil. +# +# FastAPI entegrasyonu sentry-sdk tarafindan otomatik algilanir (fastapi paketi +# yuklu oldugu icin), ayrica bir sey yapmaya gerek yok. Init, uygulama +# olusturulmadan ONCE cagrilmali. +# ============================================================================ +import sentry_sdk + +sentry_sdk.init( + dsn=os.getenv("SENTRY_DSN", ""), + environment=os.getenv("SENTRY_ENVIRONMENT", "production"), + send_default_pii=False, + # Sadece hata izleme. Tracing kotayi hizla yiyor, ihtiyac olursa acilir. + traces_sample_rate=0.0, +) + app = FastAPI( title="Trendyol Admin API", version="1.0.0", diff --git a/backend/requirements.txt b/backend/requirements.txt index e074216..f86e988 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -6,3 +6,4 @@ psycopg2-binary>=2.9.9 requests==2.31.0 python-multipart==0.0.6 pytrends==4.9.2 +sentry-sdk[fastapi]==2.66.1