
OpenTelemetry C# (Geliştiriciler iç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:
Ardından, yeni bir .NET Web projesi oluşturun:
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>
<version> 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 Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddControllers()
services.AddOpenTelemetryTracing(Sub(builder)
builder.AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddConsoleExporter()
End Sub)
End SubBu 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 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 SubBu 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();
});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
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");
}
}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 ClassIronPDF 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
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;
}
}
}Imports IronPdf
Imports OpenTelemetry.Trace
Public Class PdfService
Private ReadOnly _tracer As Tracer
Public Sub New(tracer As Tracer)
_tracer = tracer
End Sub
Public Sub GeneratePdf()
' Create a new activity for this operation
Using 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
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
activity?.SetTag("pdf.status", "Success")
activity?.SetTag("pdf.outputPath", outputPath)
Catch ex As Exception
' Log any exceptions that occur during PDF generation
activity?.SetTag("pdf.status", "Error")
activity?.SetTag("pdf.error", ex.Message)
Throw
End Try
End Using
End Sub
End ClassBu ö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.

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 ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


