پرش به مطلب اصلی

نصب SDK جاوا در Spring Boot

سنتریخواندن 3 دقیقه

Spring Boot محیطی است که کیت توسعه نرم‌افزار (SDK) Java بیشترین کارایی را در آن دارد. استارتر اختصاصی Sentry، این سرویس را به بستر برنامه متصل می‌کند، کنترلرها، وظایف @Scheduled و فراخوانی‌های RestTemplate/WebClient را پایش می‌کند و امکان پیکربندی بیشتر قابلیت‌ها را از طریق application.properties فراهم می‌سازد؛ بنابراین به کلاس پیکربندی Java نیازی ندارید.

امکانات

  • ثبت خودکار استثناهای مدیریت‌نشده در کنترلرها، فیلترها و وظایف زمان‌بندی‌شده، همراه با رد پشته (Stack Trace).
  • ایجاد ردیابی عملکرد (Performance Trace) برای درخواست‌های HTTP و فراخوانی‌های بعدی HTTP یا پایگاه داده، همراه با یک اسپن (Span) برای هر درخواست که به @RequestMapping مربوط نگاشت می‌شود.
  • ثبت نسخه انتشار و محیط اجرا در تمام رویدادها، مستقیماً از طریق پیکربندی.
  • یکپارچه‌سازی با لاگ‌ها: امکان ارسال لاگ‌های ERROR و WARN از Logback به‌عنوان رویدادهای Sentry.

نصب با Maven

<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-spring-boot-starter-jakarta</artifactId>
<version>7.8.0</version>
</dependency>

برای Spring Boot 3.x که از Jakarta EE استفاده می‌کند، استارتر -jakarta را به کار ببرید. برای Spring Boot 2.x از sentry-spring-boot-starter، یعنی نسخه مبتنی بر javax، و نسخه 6.x کیت توسعه نرم‌افزار استفاده کنید.

نصب با Gradle

implementation 'io.sentry:sentry-spring-boot-starter-jakarta:7.8.0'

پیکربندی

فایل src/main/resources/application.properties را به‌شکل زیر تنظیم کنید:

sentry.dsn=https://examplePublicKey@o0.ingest.sentry.io/0
# 0..1.0 — fraction of transactions sampled for performance.
sentry.traces-sample-rate=1.0
sentry.send-default-pii=true
sentry.release=my-app@1.4.2
sentry.environment=production

# Optional: forward Logback ERROR logs as Sentry events.
sentry.logging.minimum-event-level=ERROR
sentry.logging.minimum-breadcrumb-level=INFO

پیکربندی موردنیاز به همین موارد محدود است. هنگام راه‌اندازی برنامه، استارتر به‌صورت خودکار SentryExceptionResolver و فیلتر ردیابی درخواست را در Spring ثبت می‌کند. در نتیجه، استثناهای ایجادشده در هر کنترلر همراه با اطلاعات درخواست ثبت می‌شوند و هر درخواست نیز به یک تراکنش (Transaction) تبدیل می‌شود.

ثبت دستی رویدادها

import io.sentry.Sentry;

try {
riskyThing();
} catch (Exception e) {
Sentry.captureException(e);
throw e;
}

// a plain message
Sentry.captureMessage("Order queue backed up", SentryLevel.WARNING);

تنظیم کاربر

import io.sentry.Sentry;

Sentry.configureScope(scope -> {
scope.setUser(new User()
.setId(String.valueOf(user.getId()))
.setEmail(user.getEmail())
.setUsername(user.getName()));
});

افزودن اسپن سفارشی

import io.sentry.ITransaction;
import io.sentry.Sentry;

ITransaction tx = Sentry.startTransaction("process-order", "task");
try {
// nested span
ISpan span = tx.startChild("db.query", "SELECT orders");
// ...run query...
span.finish();
} finally {
tx.finish();
}

برای اطلاعات بیشتر، به اسپن‌های سفارشی برای کسب‌وکار مراجعه کنید.

کاربردها

  • بدون تغییر کد، مسیر کنترلری را که با خطا مواجه شده و پروفایل Spring یا همان محیط اجرای آن را مشاهده کنید.
  • وظایف زمان‌بندی‌شده @Scheduled را مانند سایر موجودیت‌های Sentry پایش کنید. این وظایف تراکنش‌های مستقل دارند و با استفاده از پایش Cron و صف، بررسی‌های وضعیت مستقل نیز برای آن‌ها ثبت می‌شود.
  • خطوط لاگ را به‌عنوان بردکرامب (Breadcrumb) ارسال کنید تا هر خطا شامل سابقه لاگ‌های پیش از وقوع آن باشد.
  • نسخه انتشار را در تمام رویدادها ثبت کنید تا بتوانید مشخص کنید آیا آخرین استقرار باعث بروز خطا شده است یا خیر.

بررسی نصب

@RestController
public class BoomController {
@GetMapping("/boom")
public void boom() {
throw new RuntimeException("Sentry Spring test");
}
}

مسیر /boom را فراخوانی و سپس صفحه Issues را بررسی کنید. اگر رویدادی ثبت نشد، به عیب‌یابی نمایش‌داده‌نشدن رویدادها مراجعه کنید.

راهنمایی‌های مرتبط

این راهنمایی کاربردی بود؟

با ثبت بازخوردتان در بهبود کیفیت مستندات مشارکت داشته باشید.