DEV Community

Cover image for Laravel'de Sentry Kullanımı: Hata İzleme ve Performans Monitörü için Kapsamlı Rehber
arasosman
arasosman

Posted on

Laravel'de Sentry Kullanımı: Hata İzleme ve Performans Monitörü için Kapsamlı Rehber

Giriş

Modern web uygulamalarında hata izleme ve performans monitörü, kullanıcı deneyimini korumak ve uygulamanın güvenilirliğini sağlamak için kritik önem taşır. Laravel uygulamalarınızda bu işlemleri kolaylaştıran en popüler araçlardan biri Sentry'dir. Bu rehberde, Laravel projelerinize Sentry'yi nasıl entegre edeceğinizi, yapılandıracağınızı ve en verimli şekilde kullanacağınızı öğreneceksiniz.

Sentry Nedir?

Sentry, Laravel uygulamaları için dünya çapında önde gelen bir hata izleme ve performans monitörü platformudur. Fortune 500 şirketleri tarafından güvenilen bu platform, geliştiricilere gerçek zamanlı kod görünürlüğü ve hata ayıklama yetenekleri sunar.

Sentry'nin Temel Özellikleri:

  • Gerçek Zamanlı Hata İzleme: Uygulamanızda oluşan hataları anında yakalar ve bildirir
  • Performans Monitörü: Yavaş sorguları, N+1 problemlerini ve performans darboğazlarını tespit eder
  • Release Tracking: Hangi sürümde hangi hatanın oluştuğunu izleyebilirsiniz
  • Team Collaboration: Hataları takım üyelerine atayabilir ve çözüm sürecini takip edebilirsiniz
  • Intelligent Alerting: E-posta, Slack, PagerDuty gibi platformlar üzerinden akıllı bildirimler

Laravel Projesi Oluşturma

Öncelikle yeni bir Laravel projesi oluşturalım:

# Laravel Installer ile
composer global require laravel/installer
laravel new laravel-sentry

# veya Composer ile
composer create-project laravel/laravel laravel-sentry
Enter fullscreen mode Exit fullscreen mode

Sentry Hesabı Oluşturma ve Proje Kurulumu

  1. Sentry.io'ya giderek ücretsiz hesap oluşturun
  2. Dashboard'da "Create Project" butonuna tıklayın
  3. Platform olarak Laravel seçin
  4. Projenize bir isim verin
  5. Proje oluşturulduktan sonra DSN (Data Source Name) anahtarını kopyalayın

Sentry-Laravel Paketi Kurulumu

Laravel için resmi Sentry SDK'sını Composer ile kurun:

composer require sentry/sentry-laravel
Enter fullscreen mode Exit fullscreen mode

Laravel 11.x ve 12.x için yapılandırma dosyanızı (bootstrap/app.php) güncelleyin:

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Sentry\Laravel\Integration;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        Integration::handles($exceptions);
    })
    ->create();
Enter fullscreen mode Exit fullscreen mode

Konfigürasyon

1. DSN Yapılandırması

Sentry yapılandırma dosyasını oluşturmak ve DSN'yi .env dosyanıza eklemek için şu komutu çalıştırın:

php artisan sentry:publish --dsn=YOUR_DSN_HERE
Enter fullscreen mode Exit fullscreen mode

Bu komut otomatik olarak:

  • config/sentry.php yapılandırma dosyası oluşturur
  • .env dosyanıza SENTRY_LARAVEL_DSN anahtarını ekler

2. .env Dosyası Ayarları

.env dosyanızı aşağıdaki gibi güncelleyin:

SENTRY_LARAVEL_DSN=https://your-public-key@o0.ingest.sentry.io/0
SENTRY_TRACES_SAMPLE_RATE=1.0
Enter fullscreen mode Exit fullscreen mode

3. Performans İzleme Etkinleştirme

Performans izlemeyi etkinleştirmek için config/sentry.php dosyasında örnekleme oranını ayarlayın:

'traces_sample_rate' => 0.2, // %20 işlem örneklemesi

// veya dinamik örnekleme için:
'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
    // 0 ile 1 arasında bir değer döndürün
    return 0.5;
},
Enter fullscreen mode Exit fullscreen mode

Test Etme

1. Artisan Komutu ile Test

Sentry entegrasyonunuzu test etmek için sağlanan artisan komutunu kullanın:

php artisan sentry:test
Enter fullscreen mode Exit fullscreen mode

2. Özel Test Route'u Oluşturma

routes/web.php dosyasına bir test route'u ekleyin:

Route::get('/sentry-test', function () {
    throw new Exception('Sentry test hatası!');
});
Enter fullscreen mode Exit fullscreen mode

http://your-app.test/sentry-test adresini ziyaret ettiğinizde, Sentry dashboard'unda hatayı görebilirsiniz.

Gelişmiş Kullanım Özellikleri

1. Manuel Hata Yakalama

use function Sentry\captureException;

try {
    $this->riskyOperation();
} catch (\Throwable $exception) {
    captureException($exception);
}
Enter fullscreen mode Exit fullscreen mode

2. Özel Bağlam Ekleme

use function Sentry\configureScope;

configureScope(function (\Sentry\State\Scope $scope): void {
    $scope->setTag('feature', 'payment');
    $scope->setUser([
        'id' => auth()->id(),
        'email' => auth()->user()->email,
    ]);
    $scope->setContext('payment_data', [
        'amount' => $amount,
        'currency' => 'TRY',
    ]);
});
Enter fullscreen mode Exit fullscreen mode

3. Laravel Log Channel Olarak Kullanım

config/logging.php dosyasına Sentry kanalını ekleyin:

'channels' => [
    'sentry' => [
        'driver' => 'sentry',
        'level' => 'error',
        'bubble' => true,
    ],

    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily', 'sentry'],
    ],
],
Enter fullscreen mode Exit fullscreen mode

4. Performance Monitoring

Sentry'nin Laravel Insights özelliği ile yavaş sorgular, job'lar ve route'ları izleyebilirsiniz:

// Özel span oluşturma
$span = \Sentry\startTransaction(['name' => 'expensive-operation']);
\Sentry\SentrySdk::getCurrentHub()->setSpan($span);

try {
    // Pahalı işlem
    $result = $this->expensiveOperation();
} finally {
    $span->finish();
}
Enter fullscreen mode Exit fullscreen mode

Laravel Forge ve Vapor Entegrasyonu

Laravel Forge veya Vapor kullanıyorsanız, Sentry entegrasyonu daha da kolaydır:

Forge için:

  1. Forge dashboard'unda "User Profile" bölümüne gidin
  2. Sentry entegrasyon seçeneğini bulun
  3. "Connect with Sentry" butonuna tıklayın
  4. Site'nizin Sentry panelinden projeyi oluşturun

Vapor için:

  1. Vapor'da "Team Settings" bölümüne gidin (takım sahibi olarak)
  2. Sentry entegrasyon seçeneğini bulun
  3. Bağlantıyı kurun ve proje oluşturun

Best Practices ve İpuçları

1. Geliştirme Ortamında Devre Dışı Bırakma

Geliştirme ve test ortamlarında Sentry'yi devre dışı bırakmak için:

# .env.local veya test ortamında
SENTRY_LARAVEL_DSN=null
Enter fullscreen mode Exit fullscreen mode

2. Rate Limiting

Üretim ortamında örnekleme oranını düşürün:

'traces_sample_rate' => 0.1, // %10 örnekleme
Enter fullscreen mode Exit fullscreen mode

3. Sensitive Data Scrubbing

Hassas verileri temizlemek için:

'before_send' => function (\Sentry\Event $event): ?\Sentry\Event {
    // Hassas verileri temizle
    $event->setTag('environment', app()->environment());
    return $event;
},
Enter fullscreen mode Exit fullscreen mode

4. Release Tracking

'release' => config('app.version', 'unknown'),
Enter fullscreen mode Exit fullscreen mode

Sentry Dashboard'unda İzleme

Sentry dashboard'unda şunları izleyebilirsiniz:

  • Issues: Gruplandırılmış hatalar ve çözüm durumları
  • Performance: Transaction'lar ve yavaş operasyonlar
  • Releases: Sürüm bazında hata dağılımı
  • Discover: Özel sorgular ve analizler

Troubleshooting

Yaygın Sorunlar ve Çözümleri:

  1. Hatalar görünmüyor: DSN doğruluğunu kontrol edin
  2. Çok fazla spam: Örnekleme oranını ayarlayın
  3. Performance verisi yok: traces_sample_rate ayarını kontrol edin

Sonuç

Sentry, Laravel uygulamalarınızda proaktif hata izleme ve performans optimizasyonu için güçlü bir araçtır. Sağlam özellikleri ve sezgisel dashboard'u ile geliştiriciler uygulamalarını proaktif olarak izleyebilir, hata trendlerine dair içgörüler elde edebilir ve sorunsuz işleyiş sağlayabilir.

Bu rehberi takip ederek Laravel uygulamanızda Sentry'yi başarıyla kurabilir, yapılandırabilir ve etkili bir şekilde kullanabilirsiniz. Sentry'nin sunduğu gelişmiş özellikler sayesinde uygulamanızın kalitesini artırabilir ve kullanıcı deneyimini iyileştirebilirsiniz.

Kaynaklar


Bu makale, Laravel geliştiricilerinin Sentry'yi etkili bir şekilde kullanabilmeleri için kapsamlı bir rehber olarak hazırlanmıştır. Sorularınız için lütfen yorum bırakın!

Top comments (0)