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, 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
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>
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
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
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)
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
IronPDF'nin Tanıtımı

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
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
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
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ç

.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.




