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

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




