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 aktarmak üzere birlikte çalışan bir dizi araç, API ve SDK'dır. Bu eğitici, yeni başlayanlara C# uygulamalarında OpenTelemetry entegrasyonunu anlamalarına yardımcı olmayı amaçlamakta, yerleşik metrikler toplama metoduna odaklanarak .NET uygulamalarını etkili bir şekilde izlemeyi hedeflemektedir. Ayrıca C#'ta PDF oluşturma için IronPDF kütüphanesini öğreneceğiz.

OpenTelemetry'ye Giriş

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

OpenTelemetry, uygulamalarınızdan her türlü veriyi toplamak için birleşik bir yol sağlar. .NET geliştiricileri için, OpenTelemetry entegrasyonu, uygulamalarınızı daha yakından izlemenizi, gerçek zamanlı olarak nasıl performans gösterdiğini anlamanızı ve sorunları hızlı bir şekilde tanımlamanızı sağlar. OpenTelemetry'nin enstrümantasyon kütüphanesi, .NET uygulamaları için izleme ve metrik toplamayı otomatik olarak etkinleştirir.

OpenTelemetry çerçevesi tarafından toplanan metriklerle, geliştiriciler .NET çalışma zamanı ortamı hakkında değerli içgörüler elde eder. OpenTelemetry .NET uygulaması, .NET runtime, .NET Core ve .NET Framework dahil olmak üzere destekler. Standardize edilmiş telemetri veri toplamayı sağlamak için OpenTelemetry protokolüne uyar.

Çevrenizi Kurma

Başlamak için, makinenizde .NET SDK'sının yüklü olması gerekir. Visual Studio kullanıyorsanız, muhtemelen .NET SDK ile gelmiştir. Şu anki .NET SDK sürümünüzü kontrol etmek için bir komut satırı açarak çalıştırabilirsiniz:

dotnet --version

Ardından, yeni bir .NET Web projesi oluşturun:

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'yi Entegre Etme

Gerekli Paketleri Ekleme

İlk olarak, projenize gerekli OpenTelemetry paketlerini ekleyin. Terminalinizi açın ve proje dizininize gidin. Sonra, aşağıdaki paketleri NuGet Paket Yöneticisi CLI kullanarak yükleyin:

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.

OpenTelemetry'yi Uygulamanızda Yapılandırma

Gerekli paketleri ekledikten sonra, OpenTelemetry'yi uygulamanızda yapılandırmanız gerekiyor. Bu, OpenTelemetry SDK'sını kurmayı ve hangi telemetri verisini toplayacağını belirtmeyi içerir. OpenTelemetry, .NET uygulamalarıyla sorunsuz bir entegrasyon için enstrümantasyon kütüphaneleri sunar.

Projenizde Startup.cs dosyanızı açın ve aşağıdaki kod parçacığında gösterildiği gibi ConfigureServices yöntemini OpenTelemetry'yi eklemek için 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çacığı, 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'yi nasıl yapılandıracağınızı gösterir. AddAspNetCoreInstrumentation yöntemi, ASP.NET Core uygulamalarına gelen HTTP istekleri için otomatik olarak enstrümantasyonu etkinleştirir.

Metrikleri Toplama

Metrik toplamak için ayrıca, izleme yerine metriklere odaklanarak OpenTelemetry Metrikler API'si yapılandırmanız gerekecek.

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 kurulum, ASP.NET Core ve HTTP istemci enstrümantasyonundan yapılan yerleşik metriklerin toplanmasını sağlamakta, kolay görüntüleme için bunları konsola aktarmaktadır.

Özel Metrikler Oluşturma

OpenTelemetry otomatik olarak birçok yararlı metrik toplarken, uygulamanıza özgü özel metrikler toplamak isteyebilirsiniz. Enstrümantasyon kütüphanesi tarafından sağlanan bir genişletme metodu kullanmak, telemetriyi otomatik olarak toplamakla kalmaz, aynı zamanda geliştiricilere yayılan metrikler üzerinde daha ayrıntılı kontrol sağlar. Bu, özel metrikler oluşturmak ve kaydetmek için kodunuzu manuel olarak enstrüman ederek başarılabilir.

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çacığı, uygulamanıza gönderilen istekleri sayan bir özel metriği nasıl oluşturacağınızı, her metriği istek yolu ile etiketleyerek gösterir. OpenTelemetry tarafından sağlanan genişletme metodları kullanarak, geliştiriciler telemetri veri toplama süreci üzerinde daha ayrıntılı kontrol sağlayabilirler.

Entegrasyonunuzu Test Etme

Uygulamanızı komut satırı veya Visual Studio kullanarak çalıştırın. Web tarayıcınızda URL'sine giderek veya curl gibi bir araç kullanarak uygulamanıza bazı istekler yapın. Telemetri verilerinin, izler ve metrikler dahil olmak üzere konsol çıktınıza yazdırıldığını görmelisiniz.

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

IronPDF 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üphanedir, .NET uygulamalarında doğrudan PDF belgeleri oluşturma, düzenleme ve render etme olanağı sağlar. Bu yetenek, özellikle HTML, servisler veya masaüstü uygulamaları kullanarak web uygulamalarından raporlar, faturalar veya herhangi bir belge tabanlı çıktı oluştur için yararlıdır. IronPDF'i OpenTelemetry ile birleştirmek, geliştiricilerin uygulamalarındaki PDF oluşturma süreçlerinin performansını ve güvenilirliğini izlemelerine olanak tanır, sorunsuz bir kullanıcı deneyimi sağlar.

IronPDF, HTML'den PDF'ye dönüşümde mükemmeldir, özgün düzenler ve stillerin hassas bir şekilde korunmasını sağlar. Raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri için destekle, IronPDF yüksek kaliteli PDF belgelerini kolayca ü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

İlk olarak, .NET projenize IronPDF'i eklemeniz gerekmektedir. Bunu NuGet Paket Yöneticisini kullanarak yapabilirsiniz. Terminalinizi açın ve proje dizininize gidin. Ardından, IronPDF'i yüklemek için aşağıdaki komutu çalıştırın:

dotnet add package IronPDF
dotnet add package IronPDF
SHELL

IronPDF ile PDF Oluşturma ve OpenTelemetry ile İzleme

Aşağıda, basit bir PDF belgesi oluşturmanın ve OpenTelemetry kullanarak işlemin nasıl izleneceğinin bir örneği vardır. Aşağıdaki örnek, uygulamanızda OpenTelemetry'yi daha önce gösterildiği şekilde yapılandırdığınızı varsaymaktadır.

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 örnekte, bir PdfService adlı yeni bir servis sınıfı oluşturuyoruz ve PDF belgesi oluşturmak için bir GeneratePdf yöntemi içerir. HTML'i bir PDF belgesi olarak işlemek için IronPDF'nin ChromePdfRenderer sınıfını kullanıyoruz. OpenTelemetry ile bu işlemi izlemek için 'Generate PDF' adında yeni bir etkinlik başlatıyoruz. PDF oluşturma sürecine ilişkin ek bağlam sağlamak için etkinliğe PDF boyutu, içerik türü ve çıktı yolu gibi özel etiketler ekliyoruz. Ayrıca, aynı etkinlik içinde hataları doğru bir şekilde kaydetmek için herhangi bir istisnayı yakalıyoruz.

Sonuç

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

OpenTelemetry'yi .NET uygulamalarınıza entegre etmek, uygulamanızın performansı ve davranışı hakkında içgörüler sunan değerli telemetri verilerini toplamanıza olanak tanır. Bu öğreticideki adımları takip ederek, bir .NET web uygulaması için temel izleme ve metrik toplama ayarladınız. Telemetri verilerini dış izleme araçlarına aktarma veya izler ve metriklerle birlikte log toplama gibi daha gelişmiş OpenTelemetry özelliklerini keşfederek daha fazla deney yapın.

IronPDF'nin ücretsiz deneme lisansı ile üretimde tam kapasitesini test edebilirsiniz. Lisanslar $399 gibi düşük bir fiyatla başlar.

Sıkça Sorulan Sorular

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

OpenTelemetry, uygulama performansını gerçek zamanlı olarak izlemenizi ve anlamanızı sağlamak için izler, metrikler ve günlükler gibi telemetri verilerini toplamak, işlemek ve dışa aktarmak için birleşik bir yaklaşım sunar.

C# uygulamama OpenTelemetry entegrasyonuna nasıl başlayabilirim?

NuGet üzerinden gereken OpenTelemetry paketlerini yükleyerek başlayın, ardından 'Startup.cs' içerisindeki 'ConfigureServices' metodunu değiştirerek OpenTelemetry izleme ve metriklerinin dahil edilmesi için uygulamanızı yapılandırın.

C# ortamında OpenTelemetry kurmak için gereken adımlar nelerdir?

.NET SDK'nın makinenize kurulu olduğundan emin olun. Yüklemeyi, komut satırınızda dotnet --version çalıştırarak doğrulayabilirsiniz.

HTML içeriğini kullanarak C#'ta PDF nasıl üretilir?

IronPDF kütüphanesinin ChromePdfRenderer sınıfını kullanarak HTML'yi PDF belgesi olarak render edebilir, ardından SaveAs metodunu kullanarak üretilen PDF'yi kaydedebilirsiniz.

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

OpenTelemetry'nin Tracerını kullanarak PDF oluşturma için bir etkinlik oluşturun ve bu süreç hakkında ilgili bilgileri izleme amacıyla kaydetmek için özel etiketler ekleyin.

Özel metrikler nedir ve C# ile OpenTelemetry'de nasıl kullanılabilirler?

Özel metrikler, kodunuzu OpenTelemetry'nin Meter ve Counter sınıfları ile manuel olarak aletleyerek toplayabileceğiniz uygulamaya özgü veri noktalarıdır.

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

IronPDF kütüphanesini kullanarak PDF belgelerini güvenilir bir şekilde üretebilir, manipüle edebilir ve render edebilirsiniz. IronPDF, uygulamalarınızda yüksek kaliteli PDF çıktıları sağlamak için sağlam özellikler sunar.

C#'ta PDF üretimine yardımcı olan kütüphaneler için lisans seçenekleri var mı?

IronPDF, 399 $'dan başlayan ve üretim testi için ücretsiz bir deneme sunarak, geliştiricilerin tüm yeteneklerini keşfetmelerine olanak tanır.

C# uygulamamda OpenTelemetry entegrasyonunu nasıl test edebilirim?

Uygulamanızı çalıştırın ve bir web tarayıcı veya curl gibi araçları kullanarak isteklerde bulunun, ardından izler ve metrikler gibi konsola çıktılan telemetri verilerini gözlemleyin.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

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