Altbilgi içeriğine atla
.NET YARDıM

Opentelemetry C# (Geliştiriciler İçin Nasıl Çalışır)

OpenTelemetry, izler, metrikler ve loglar gibi telemetri verilerini toplamak, işlemek ve ihraç etmek için birlikte çalışan bir dizi araç, API ve SDK'dır. Bu kılavuz, C# uygulamalarında OpenTelemetry'yi entegre etmenin nasıl yapılacağını anlamalarına yardımcı olmayı amaçlar ve .NET uygulamalarının etkin bir şekilde izlenmesi için yerleşik metriklerin toplanmasına odaklanır. Ayrıca C#'ta PDF oluşturma için IronPDF kütüphanesi hakkında da bilgi edineceğiz.

OpenTelemetry'ye Giriş

OpenTelemetry C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - OpenTelemetry

OpenTelemetry, uygulamalarınızdan her türlü veriyi toplamanın birleşik bir yolunu sağlar. .NET geliştiricileri için OpenTelemetry'yi entegre etmek, uygulamalarını daha yakından izleyebilmeleri, gerçek zamanlı olarak nasıl performans gösterdiklerini anlamaları ve sorunları hızlı bir şekilde tanımlayabilmeleri anlamına gelir. OpenTelemetry'nin enstrümantasyon kütüphanesi, .NET uygulamaları için otomatik olarak izleme ve metrik toplama yeteneklerini etkinleştirir.

OpenTelemetry çerçevesi tarafından toplanan metriklerle, geliştiriciler .NET çalışma zamanı ortamı hakkında değerli bilgiler elde eder. OpenTelemetry .NET uygulaması, .NET Core ve .NET Framework de dahil olmak üzere .NET çalışma zamanını destekler. Standart telemetri veri toplama için OpenTelemetry protokolüne uyar.

Ortamınızı Ayarlama

Başlamak için makinenizde .NET SDK yüklü olmalıdır. Visual Studio'yu kullanıyorsanız, muhtemelen .NET SDK ile beraber gelmiştir. Geçerli .NET SDK sürümünüzü komut satırını açarak ve çalıştırarak kontrol edebilirsiniz:

dotnet --version

Sonra, yeni bir .NET Web projesi oluşturmak için çalıştırın:

dotnet new web -o MyTelemetryApp
cd MyTelemetryApp
dotnet new web -o MyTelemetryApp
cd MyTelemetryApp
SHELL

Bu komut, MyTelemetryApp adlı bir dizinde yeni bir ASP.NET Core projesi oluşturur.

OpenTelemetry Entegrasyonu

Gerekli Paketlerin Eklenmesi

Öncelikle, gerekli OpenTelemetry paketlerini projenize ekleyin. Terminalinizi açın ve proje dizininize gidin. Ardından, NuGet Paket Yöneticisi CLI'sini kullanarak aşağıdaki paketleri kurun:

dotnet add package OpenTelemetry -Version <version>
dotnet add package OpenTelemetry.Extensions.Hosting -Version <version>
dotnet add package OpenTelemetry.Instrumentation.AspNetCore -Version <version>
dotnet add package OpenTelemetry.Exporter.Console -Version <version>
dotnet add package OpenTelemetry -Version <version>
dotnet add package OpenTelemetry.Extensions.Hosting -Version <version>
dotnet add package OpenTelemetry.Instrumentation.AspNetCore -Version <version>
dotnet add package OpenTelemetry.Exporter.Console -Version <version>
SHELL

ile her paketin en son sürümünü değiştirin.

Uygulamanızda OpenTelemetry'nin Yapılandırılması

Gerekli paketleri ekledikten sonra, uygulamanızda OpenTelemetry'yi yapılandırmanız gerekecek. Bu, OpenTelemetry SDK'sını ayarlamayı ve toplanacak telemetri verilerini belirtmeyi içerir. OpenTelemetry, .NET uygulamaları ile sorunsuz entegrasyon için enstrümantasyon kütüphaneleri sunar.

Projenizdeki Startup.cs dosyasını açın ve OpenTelemetry'yi dahil etmek için ConfigureServices yöntemini aşağıdaki kod parçasında gösterildiği gibi değiştirin:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddOpenTelemetryTracing(builder =>
    {
        builder.AddAspNetCoreInstrumentation()
               .AddHttpClientInstrumentation()
               .AddConsoleExporter();
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddOpenTelemetryTracing(builder =>
    {
        builder.AddAspNetCoreInstrumentation()
               .AddHttpClientInstrumentation()
               .AddConsoleExporter();
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddControllers()
	services.AddOpenTelemetryTracing(Sub(builder)
		builder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddConsoleExporter()
	End Sub)
End Sub
$vbLabelText   $csharpLabel

Bu kod parçası, ASP.NET Core uygulamalarından ve HTTP istemci çağrılarından telemetri verilerini toplamak ve ardından bu verileri konsola aktarmak için OpenTelemetry'nin nasıl yapılandırılacağını gösterir. AddAspNetCoreInstrumentation yöntemi, ASP.NET Core uygulamalarına gelen HTTP istekleri için otomatik olarak enstrümantasyon sağlar.

Metrik Toplama

Metrik toplamak için ayrıca, izlemeye göre metriklere odaklanarak OpenTelemetry Metrik API'sini yapılandırmanız gerekecektir.

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddOpenTelemetryMetrics(builder =>
    {
        builder.AddAspNetCoreInstrumentation()
               .AddHttpClientInstrumentation()
               .AddConsoleExporter(options => options.Targets = ConsoleExporterOutputTargets.Console);
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddOpenTelemetryMetrics(builder =>
    {
        builder.AddAspNetCoreInstrumentation()
               .AddHttpClientInstrumentation()
               .AddConsoleExporter(options => options.Targets = ConsoleExporterOutputTargets.Console);
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddControllers()
	services.AddOpenTelemetryMetrics(Sub(builder)
		builder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddConsoleExporter(Sub(options) options.Targets = ConsoleExporterOutputTargets.Console)
	End Sub)
End Sub
$vbLabelText   $csharpLabel

Bu yapılandırma, yerleşik metriklerin ASP.NET Core ve HTTP istemci enstrümantasyonundan toplanmasına ve kolayca görüntülenebilmeleri için konsola aktarılmasını sağlayacaktır.

Özel Metrikler Oluşturma

OpenTelemetry birçok yararlı metriği otomatik olarak toplasa da, uygulamanıza özel metrikler toplamak isteyebilirsiniz. Enstrümantasyon kütüphanesi tarafından sağlanan bir uzantı yönteminin kullanılması sadece telemetriyi otomatik olarak toplamakla kalmaz, ayrıca geliştiricilere yayımlanan metrikler üzerinde daha ince kontrol sağlar. Bu, özel metrikler oluşturmak ve kaydetmek için kodunuzu manuel olarak enstrümante ederek gerçekleştirilebilir.

var meter = new Meter("MyCustomMetrics", "1.0");
var counter = meter.CreateCounter<int>("custom_request_count", description: "Counts custom requests");
app.Use((context, next) =>
{
    counter.Add(1, new KeyValuePair<string, object>("path", context.Request.Path));
    return next();
});
var meter = new Meter("MyCustomMetrics", "1.0");
var counter = meter.CreateCounter<int>("custom_request_count", description: "Counts custom requests");
app.Use((context, next) =>
{
    counter.Add(1, new KeyValuePair<string, object>("path", context.Request.Path));
    return next();
});
Dim meter As New Meter("MyCustomMetrics", "1.0")
Dim counter = meter.CreateCounter(Of Integer)("custom_request_count", description:= "Counts custom requests")
app.Use(Function(context, [next])
	counter.Add(1, New KeyValuePair(Of String, Object)("path", context.Request.Path))
	Return [next]()
End Function)
$vbLabelText   $csharpLabel

Bu kod parçası, uygulamanıza yapılan istekleri sayan ve her metriği istek yolu ile etiketleyen özel bir metriğin nasıl oluşturulacağını göstermektedir. OpenTelemetry tarafından sağlanan uzatma yöntemlerinden faydalanarak, geliştiriciler telemetri veri toplama süreci üzerinde daha ince kontrol sağlayabilir.

Entegrasyonunuzu Test Etme

Uygulamanızı komut satırı veya Visual Studio kullanarak çalıştırın. Uygulamanıza bazı istekler yapın, ya bir web tarayıcısında URL'sine giderek ya da curl gibi bir araç kullanarak. Konsol çıktınıza izler ve metrikler dahil telemetri verilerinin yazdırıldığını görmelisiniz.

curl http://localhost:5000
curl http://localhost:5000
SHELL

IronPDF'nin Tanıtımı

OpenTelemetry C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF

IronPDF, C# geliştiricileri için güçlü bir kütüphane olup, .NET uygulamaları içinde doğrudan PDF belgelerinin oluşturulmasını, manipüle edilmesini ve render edilmesini sağlar. Bu yetenek, HTML kullanan web uygulamalarından, hizmetlerden veya masaüstü uygulamalardan belge tabanlı çıktılar üretmek için özellikle faydalıdır. IronPDF'yi OpenTelemetry ile birleştirmek, geliştiricilerin uygulamalarındaki PDF oluşturma süreçlerinin performansını ve güvenilirliğini izlemelerine olanak tanır ve sorunsuz bir kullanıcı deneyimini garanti eder.

HTML'den PDF'ye dönüştürmede IronPDF, özgün düzenlerin ve tarzların hassas korunmasını sağlamakta üstünlük sağlar. Web tabanlı içeriklerden, örneğin raporlar, faturalar ve belgeler gibi PDF'ler oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri desteği ile IronPDF kolaylıkla yüksek kaliteli PDF belgeler üretir.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Kurulumu

Öncelikle IronPDF'yi .NET projenize eklemeniz gerekiyor. Bunu NuGet Paket Yöneticisi'ni kullanarak yapabilirsiniz. Terminalinizi açın ve proje dizininize gidin. Daha sonra, IronPDF'yi kurmak için aşağıdaki komutu çalıştırın:

dotnet add package IronPDF
dotnet add package IronPDF
SHELL

IronPDF ve OpenTelemetry ile PDF Oluşturma

Aşağıda, basit bir PDF belgesi oluşturma ve OpenTelemetry'yi kullanarak işlemi izleme örneği verilmiştir. Aşağıdaki örnek, daha önce gösterildiği gibi OpenTelemetry'nin uygulamanızda zaten yapılandırıldığını varsayar.

using IronPdf;
using OpenTelemetry.Trace;

public class PdfService
{
    private readonly Tracer _tracer;

    public PdfService(Tracer tracer)
    {
        _tracer = tracer;
    }

    public void GeneratePdf()
    {
        // Create a new activity for this operation
        using var activity = _tracer.StartActivity("Generate PDF");

        // Simulate adding some attributes related to the operation
        activity?.SetTag("pdf.size", "A4");
        activity?.SetTag("pdf.content", "Hello World");

        try
        {
            // Initialize the PDF generator
            var renderer = new ChromePdfRenderer();

            // Generate a PDF from HTML
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

            // Save the PDF to a file
            var outputPath = "output.pdf";
            pdf.SaveAs(outputPath);

            // Log success
            activity?.SetTag("pdf.status", "Success");
            activity?.SetTag("pdf.outputPath", outputPath);
        }
        catch (Exception ex)
        {
            // Log any exceptions that occur during PDF generation
            activity?.SetTag("pdf.status", "Error");
            activity?.SetTag("pdf.error", ex.Message);
            throw;
        }
    }
}
using IronPdf;
using OpenTelemetry.Trace;

public class PdfService
{
    private readonly Tracer _tracer;

    public PdfService(Tracer tracer)
    {
        _tracer = tracer;
    }

    public void GeneratePdf()
    {
        // Create a new activity for this operation
        using var activity = _tracer.StartActivity("Generate PDF");

        // Simulate adding some attributes related to the operation
        activity?.SetTag("pdf.size", "A4");
        activity?.SetTag("pdf.content", "Hello World");

        try
        {
            // Initialize the PDF generator
            var renderer = new ChromePdfRenderer();

            // Generate a PDF from HTML
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

            // Save the PDF to a file
            var outputPath = "output.pdf";
            pdf.SaveAs(outputPath);

            // Log success
            activity?.SetTag("pdf.status", "Success");
            activity?.SetTag("pdf.outputPath", outputPath);
        }
        catch (Exception ex)
        {
            // Log any exceptions that occur during PDF generation
            activity?.SetTag("pdf.status", "Error");
            activity?.SetTag("pdf.error", ex.Message);
            throw;
        }
    }
}
Imports IronPdf
Imports OpenTelemetry.Trace

Public Class PdfService
	Private ReadOnly _tracer As Tracer

	Public Sub New(ByVal tracer As Tracer)
		_tracer = tracer
	End Sub

	Public Sub GeneratePdf()
		' Create a new activity for this operation
		Dim activity = _tracer.StartActivity("Generate PDF")

		' Simulate adding some attributes related to the operation
		If activity IsNot Nothing Then
			activity.SetTag("pdf.size", "A4")
		End If
		If activity IsNot Nothing Then
			activity.SetTag("pdf.content", "Hello World")
		End If

		Try
			' Initialize the PDF generator
			Dim renderer = New ChromePdfRenderer()

			' Generate a PDF from HTML
			Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

			' Save the PDF to a file
			Dim outputPath = "output.pdf"
			pdf.SaveAs(outputPath)

			' Log success
			If activity IsNot Nothing Then
				activity.SetTag("pdf.status", "Success")
			End If
			If activity IsNot Nothing Then
				activity.SetTag("pdf.outputPath", outputPath)
			End If
		Catch ex As Exception
			' Log any exceptions that occur during PDF generation
			If activity IsNot Nothing Then
				activity.SetTag("pdf.status", "Error")
			End If
			If activity IsNot Nothing Then
				activity.SetTag("pdf.error", ex.Message)
			End If
			Throw
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnekle, PDF belgesi oluşturmaya yönelik bir yöntem GeneratePdf içeren yeni bir hizmet sınıfı PdfService oluşturuyoruz. IronPDF'nin ChromePdfRenderer sınıfını, HTML'yi PDF belgesi olarak işlemek için kullanıyoruz. OpenTelemetry ile bu işlemi izlemek için 'Generate PDF' adında yeni bir etkinlik başlatıyoruz. PDF oluşturma süreci hakkında ek bağlam sağlamak için etkinliğe özel etiketler ekliyoruz, örneğin PDF'nin boyutu, içerik türü ve çıktı yolu gibi. Ayrıca, aynı etkinlik içinde hataları uygun şekilde kaydetmek için herhangi bir istisnayı yakalıyoruz.

Sonuç

OpenTelemetry C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Lisanslama

.NET uygulamalarınıza OpenTelemetry entegrasyonu yaparak değerli telemetri verileri toplayabilir, uygulamanızın performansı ve davranışı hakkında içgörüler edinebilirsiniz. Bu öğreticide belirtilen adımları izleyerek, bir .NET web uygulaması için temel izleme ve metrik toplama işlemlerini kurdunuz. Telemetri verilerini harici izleme araçlarına aktarmak veya izler ve metriklerle birlikte günlükleri toplamak gibi daha gelişmiş OpenTelemetry özelliklerini keşfederek daha fazla deney yapın.

IronPDF'nin tam yeteneklerini test etmek için, üretimde IronPDF'nin ücretsiz denemesini sunuyor. Lisanslar, 399 $'dan başlayan fiyatlarla başlıyor.

Sıkça Sorulan Sorular

C# geliştirmede OpenTelemetry'nin amacı nedir?

OpenTelemetry, geliştiricilerin uygulama performansını gerçek zamanlı izlemelerini ve anlamalarını sağlamak için izler, ölçümler ve günlükler gibi telemetri verilerini toplama, işleme ve dışa aktarma işlemleri için birleşik bir yaklaşım sunar.

C# uygulamama OpenTelemetry'yi nasıl entegre edebilirim?

Başlangıç olarak, gerekli OpenTelemetry paketlerini NuGet üzerinden yükleyin, ardından uygulamanızı, 'Startup.cs' dosyasındaki 'ConfigureServices' yöntemini OpenTelemetry izleme ve ölçümlerini dahil edecek şekilde değiştirerek yapılandırın.

C# için OpenTelemetry ortamını kurmak için hangi adımlar gereklidir?

.NET SDK'sının makinenizde kurulu olduğundan emin olun. Kurulumu doğrulamak için komut satırında dotnet --version çalıştırabilirsiniz.

HTML içeriğini kullanarak C#'ta nasıl PDF oluşturabilirim?

IronPDF kütüphanesinin ChromePdfRenderer sınıfını HTML'yi PDF belgesi olarak işlemek için kullanabilir, ardından üretilen PDF'i kaydetmek için SaveAs yöntemini kullanabilirsiniz.

C# uygulamasında PDF oluşturma sürecini nasıl izleyebilirim?

OpenTelemetry'nin Tracer aracını kullanarak PDF oluşturma için bir etkinlik oluşturun, izleme amaçları için sürece ilişkin önemli bilgileri günlüğe eklemek üzere özel etiketler ekleyin.

Özel ölçümler nelerdir ve C# ile OpenTelemetry'de nasıl kullanılabilirler?

Özel ölçümler, OpenTelemetry'nin Meter ve Counter sınıflarıyla kodunuzu manuel olarak enstrümante ederek toplayabileceğiniz uygulamaya özgü veri noktalarıdır.

C#'ta güvenilir PDF oluşturma nasıl sağlanabilir?

PDF belgelerini güvenilir bir şekilde oluşturmak, işlemek ve işlemek için IronPDF kütüphanesini kullanın. IronPDF, uygulamalarınızda yüksek kaliteli PDF çıktıları sağlamak için sağlam özellikler sunar.

C#'ta PDF oluşturmaya yardımcı olan kütüphaneler için herhangi bir lisans seçeneği mevcut mu?

IronPDF, geliştirmeler için lisanslar $399'den başlayan fiyatlarla olmak üzere, üretim testi için ücretsiz deneme sunar.

C# uygulamasında OpenTelemetry entegrasyonunu nasıl teste tabi tutabilirim?

Uygulamanızı çalıştırın ve tarayıcı veya curl gibi araçları kullanarak istek gönderin, ardından izler ve ölçümler gibi telemetri verilerini konsola çıktılanmış olarak gözlemleyin.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara