C# MİMARİSİ #23: Serilog, Structured Logging ve OpenTelemetry ile Dağıtık İzleme

Serilog, Structured Logging ve OpenTelemetry ile Dağıtık İzleme

Serilog, Structured Logging ve OpenTelemetry ile Dağıtık İzleme

1. Konunun Mimari Önemi ve Temel Çalışma Prensipleri

Dağıtık sistemlerde izleme ve günlük kaydı, sistemlerin güvenilirliğini ve performansını optimize etmek için kritik öneme sahiptir. Structured Logging ile, günlük mesajları standartlaştırılmış bir formatta tutulur, böylece otomasyon ve analiz araçları tarafından daha kolay işlenir. OpenTelemetry ise, dağıtılmış sistemlerde izleme verilerini toplamak ve analiz etmek için açık standartlar sağlar. Serilog, yüksek performanslı ve esnek bir günlük kaydı kütüphanesidir, hangi yapılandırılmaya ve genişletilemeye açıktır.

2. Kurumsal Projelerde Dikkat Edilmesi Gereken En İyi Pratikler (Best Practices)

  • Standartlaştırma: Günlük mesajlarının standart bir formatta olması, analiz araçlarının daha kolay işlenmesini sağlar.
  • Performans Optimizasyonu: Günlük kaydı işlemleri performansını etkileyebilir, bu nedenle asenkron ve düşük gecikme süren yöntemler kullanılmalıdır.
  • Veri Gizliliği:

4. Performans Optimizasyonu ve Olası Darboğazlar

Günlük kaydı işlemleri, özellikle yüksek yük altında sistemlerde performansı etkileyebilir. Aşağıda bazı performans optimizasyonu stratejileri ve olası darboğazları bulunmaktadır:

  • Asenkron Günlük Kaydı: Günlük kaydı işlemleri, özellikle disk g/ç ve ağ gecikmeleri nedeniyle performansı etkileyebilir. Asenkron günlük kaydı, bu işlemleri arka planda gerçekleştirmeyi sağlar.
  • Batch Günlük Kaydı: Çok sayıda küçük günlük mesajı, performansı etkileyebilir. Batch günlük kaydı, mesajları toplu olarak toplar ve tek bir işlemde kaydeder.
  • Günlük Düzeyi Filtreleme: Günlük düzeyini (örneğin, Info, Debug, Error) göre filtreleme, gereksiz günlük mesajlarını gidererek performansı artırır.

5. Gerçek Dünya Senaryolarına Uygun Kod Bloğu Örneği


using Serilog;
using Serilog.Configuration;
using Serilog.Core;
using Serilog.Events;
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using OpenTelemetry.Logs;

class Program
{
    static void Main(string[] args)
    {
        // Serilog yapılandırması
        Log.Logger = new LoggerConfiguration()
            .Enrich.FromLogContext()
            .MinimumLevel.Debug()
            .WriteTo.Console()
            .CreateLogger();

        // OpenTelemetry yapılandırması
        var builder = Sdk.CreateTracerProviderBuilder()
            .AddAspNetCoreInstrumentation()
            .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyService"))
            .Build();

        Log.Information("Uygulama başlatılıyor...");

        // OpenTelemetry ile izleme
        using (var scope = TracerProvider.Default.Tracer.WithSpan("MySpan"))
        {
            Log.Debug("İzleme işlemi başladı.");
            // İşlemler burada gerçekleştirilir
            Log.Debug("İzleme işlemi tamamlandı.");
        }

        Log.Information("Uygulama durduruluyor...");
    }
}
    

Yazılım Mimarı ve IT Lideri: Nasuh AKAY – Data Architecture Solutions

NasuhAkay
NasuhAkay

Nasuh Akay, 20 yılı aşkın IT deneyimine sahip; kurumsal teknoloji çözümleri, ERP sistemleri, yazılım geliştirme, veri yönetimi ve dijital dönüşüm alanlarında çalışmalar yürüten bir teknoloji profesyonelidir.

Kariyeri boyunca farklı sektörlerde edindiği deneyimlerini; teknoloji, yazılım, veri mimarisi ve iş süreçlerinin geliştirilmesi üzerine yoğunlaştırmıştır.

Bu blogda ERP çözümleri, SQL Server, yazılım geliştirme, yapay zekâ, dijital dönüşüm ve teknoloji dünyasındaki gelişmeler üzerine bilgi, deneyim ve teknik paylaşımlarını okuyucularla buluşturmaktadır.

Amacı, karmaşık teknik konuları anlaşılır bir dille ele almak, gerçek hayatta karşılaşılan problemlere yönelik uygulanabilir çözümler sunmak ve teknoloji alanındaki bilgi birikimini paylaşmaktır.

Articles: 1062

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir