Opentelemetry C# (개발자를 위한 작동 방식)
OpenTelemetry는 애플리케이션에서 트레이스, 메트릭 및 로그와 같은 텔레메트리 데이터를 수집, 처리 및 내보내기 위해 함께 작동하는 도구, API 및 SDK 모음입니다. 이 튜토리얼은 확장 메서드를 사용하여 C# 애플리케이션에 OpenTelemetry를 통합하는 방법을 초보자들이 이해할 수 있도록 돕는 것을 목표로 하며, .NET 애플리케이션을 효과적으로 모니터링하기 위한 내장 메트릭 수집에 중점을 둡니다. C#에서의 PDF 생성용 IronPDF 라이브러리에 대해서도 배울 것입니다.
OpenTelemetry 소개

OpenTelemetry는 애플리케이션에서 모든 종류의 데이터를 수집하는 통일된 방법을 제공합니다. .NET 개발자에게 OpenTelemetry를 통합하는 것은 애플리케이션을 더 면밀히 모니터링하고 실시간으로 성능을 이해하며 문제를 신속하게 식별할 수 있음을 의미합니다. OpenTelemetry의 계측 라이브러리는 .NET 앱을 위한 트레이싱 및 메트릭 수집을 자동으로 활성화합니다.
OpenTelemetry 프레임워크로 수집한 메트릭을 통해 개발자는 .NET 런타임 환경에 대한 귀중한 통찰력을 얻게 됩니다. OpenTelemetry .NET 구현은 .NET Core 및 .NET Framework를 포함하는 .NET 런타임을 지원합니다. 표준화된 텔레메트리 데이터 수집을 위한 OpenTelemetry 프로토콜을 준수합니다.
환경 설정하기
시작하려면 컴퓨터에 .NET SDK가 설치되어 있어야 합니다. Visual Studio를 사용 중이라면 아마 .NET SDK가 함께 설치되었을 것입니다. 현재 .NET SDK 버전을 확인하려면 명령줄을 열고 다음을 실행하십시오:
dotnet --version
다음으로, 다음을 실행하여 새 .NET 웹 프로젝트를 생성하십시오:
dotnet new web -o MyTelemetryApp
cd MyTelemetryApp
dotnet new web -o MyTelemetryApp
cd MyTelemetryApp
이 명령은 MyTelemetryApp이라는 디렉토리에 새 ASP.NET Core 프로젝트를 생성합니다.
OpenTelemetry 통합하기
필요한 패키지 추가
먼저, 프로젝트에 필요한 OpenTelemetry 패키지를 추가하세요. 터미널을 열고 프로젝트 디렉터리로 이동합니다. 그런 다음, NuGet 패키지 관리자 CLI를 사용하여 다음 패키지들을 설치하세요:
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 구성하기
필요한 패키지를 추가한 후, 애플리케이션에서 OpenTelemetry를 구성해야 합니다. 이는 OpenTelemetry SDK를 설정하고 수집할 텔레메트리 데이터를 지정하는 것을 포함합니다. OpenTelemetry는 .NET 애플리케이션과 원활한 통합을 위한 기구 라이브러리를 제공합니다.
프로젝트 내 Startup.cs 파일을 열고 ConfigureServices 메서드를 수정하여 다음 코드 스니펫에 표시된 대로 OpenTelemetry를 포함시키세요:
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
이 코드 스니펫은 ASP.NET Core 애플리케이션 및 HTTP 클라이언트 호출로부터 텔레메트리 데이터를 수집하고, 이 데이터를 콘솔로 내보내는 방법을 보여줍니다. AddAspNetCoreInstrumentation 메서드는 ASP.NET Core 앱에 대한 들어오는 HTTP 요청에 대한 기구를 자동으로 활성화합니다.
메트릭 수집
메트릭을 수집하려면 추적보다는 메트릭에 초점을 맞추어 OpenTelemetry Metrics API를 구성해야 합니다.
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
이 설정은 ASP.NET Core 및 HTTP 클라이언트 기구에서 내장 메트릭을 수집하여 쉽게 볼 수 있도록 콘솔로 내보낼 수 있게 해줍니다.
사용자 지정 메트릭 만들기
OpenTelemetry는 많은 유용한 메트릭을 자동으로 수집하지만, 애플리케이션에 특정한 사용자 지정 메트릭을 수집하고자 할 수 있습니다. 기구 라이브러리에서 제공하는 확장 메서드를 사용하여 텔레메트리를 자동으로 수집할 뿐만 아니라 개발자가 더 세밀하게 제어할 수 있도록 합니다. 이는 사용자 지정 메트릭을 만들고 기록하기 위해 코드를 수동으로 기구화함으로써 달성할 수 있습니다.
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)
이 코드 스니펫은 애플리케이션에 대한 요청을 세고, 요청 경로를 각 메트릭에 태그로 추가하는 사용자 지정 메트릭을 만드는 방법을 보여줍니다. OpenTelemetry에서 제공하는 확장 메서드를 활용하여 개발자는 텔레메트리 데이터 수집 과정을 보다 세밀하게 제어할 수 있습니다.
통합 테스트
명령어 라인이나 Visual Studio를 사용하여 애플리케이션을 실행합니다. 애플리케이션의 URL로 웹 브라우저에서 접속하거나 curl 같은 도구를 사용하여 요청을 합니다. 콘솔 출력에 추적 및 메트릭을 포함한 텔레메트리 데이터가 출력되는 것을 확인할 수 있어야 합니다.
curl http://localhost:5000
curl http://localhost:5000
IronPDF 소개

IronPDF는 C# 개발자를 위한 강력한 라이브러리로, .NET 애플리케이션 내에서 PDF 문서를 생성하고 조작하며 렌더링할 수 있게 합니다. 이 기능은 특히 보고서, 청구서 또는 HTML, 서비스, 데스크톱 앱을 사용한 문서 기반 출력을 생성하는 데 유용합니다. OpenTelemetry와 IronPDF를 결합하여 개발자는 애플리케이션 내에서 PDF 생성 프로세스의 성능과 신뢰성을 모니터링하여 원활한 사용자 경험을 보장할 수 있습니다.
IronPDF는 원래 레이아웃과 스타일을 정확히 보존하여 HTML을 PDF로 변환하는 데 탁월합니다. 보고서, 송장 및 설명서와 같은 웹 기반 콘텐츠에서 PDF를 생성하는 데 완벽합니다. HTML 파일, URL 및 원시 HTML 문자열에 대한 지원으로 IronPDF는 고품질의 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");
}
}
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 설정하기
먼저 IronPDF를 .NET 프로젝트에 추가해야 합니다. NuGet 패키지 관리자를 사용하여 이 작업을 수행할 수 있습니다. 터미널을 열고 프로젝트 디렉터리로 이동합니다. 그런 다음, 다음 명령어를 실행하여 IronPDF를 설치합니다:
dotnet add package IronPDF
dotnet add package IronPDF
IronPDF로 PDF 생성 및 OpenTelemetry로 모니터링하기
아래는 간단한 PDF 문서를 생성하고 OpenTelemetry를 사용하여 작업을 모니터링하는 방법에 대한 예제입니다. 다음 예제는 앞서 설명한 대로 애플리케이션에서 OpenTelemetry를 이미 구성했다고 가정합니다.
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
이 예제에서는 PDF 문서를 생성할 수 있는 PdfService라는 새로운 서비스 클래스와 GeneratePdf라는 메서드를 포함합니다. IronPDF의 ChromePdfRenderer 클래스를 사용하여 HTML을 PDF 문서로 렌더링합니다. OpenTelemetry로 "PDF 생성"이라는 새로운 활동을 시작하여 이 작업을 모니터합니다. PDF 생성 과정에 대한 추가적인 정보를 제공하기 위해 활동에 사용자 지정 태그를 추가합니다. 여기에는 PDF의 크기, 콘텐츠 타입, 출력 경로 등이 포함됩니다. 또한 동일한 활동 내에서 적절하게 오류를 기록할 수 있도록 예외를 포착합니다.
결론

.NET 애플리케이션에 OpenTelemetry를 통합하면 애플리케이션의 성능과 동작에 대한 통찰력을 제공하는 귀중한 텔레메트리 데이터를 수집할 수 있습니다. 이 튜토리얼에서 설명된 단계를 따르면 .NET 웹 애플리케이션에 대한 기본적인 추적 및 메트릭 수집이 설정됩니다. 더 고급 OpenTelemetry 기능을 탐색하려면, 텔레메트리 데이터를 외부 모니터링 도구로 내보내거나 로그를 추적 및 메트릭과 함께 수집하는 방법을 실험하세요.
IronPDF는 생산에 대한 IronPDF의 무료 체험을 제공하여 그 모든 기능을 시험해 볼 수 있습니다. 라이센스는 $399부터 시작합니다.
자주 묻는 질문
C# 개발에서 OpenTelemetry의 목적은 무엇입니까?
OpenTelemetry는 추적, 메트릭, 로그와 같은 텔레메트리 데이터를 수집, 처리 및 내보내는 통합 접근 방식을 제공하여 개발자가 애플리케이션 성능을 실시간으로 모니터링하고 이해할 수 있도록 합니다.
C# 애플리케이션에 OpenTelemetry를 통합하는 것을 어떻게 시작할 수 있습니까?
NuGet을 통해 필요한 OpenTelemetry 패키지를 설치하고, 'Startup.cs' 파일의 'ConfigureServices' 메서드를 수정하여 OpenTelemetry 추적 및 메트릭을 포함하도록 애플리케이션을 구성합니다.
C#에서 OpenTelemetry 환경을 설정하는데 필요한 단계는 무엇입니까?
.NET SDK가 머신에 설치되어 있는지 확인하세요. 명령줄에서 dotnet --version을 실행하여 설치 여부를 확인할 수 있습니다.
HTML 콘텐츠를 사용하여 C#에서 PDF를 생성하는 방법은 무엇입니까?
IronPDF 라이브러리의 ChromePdfRenderer 클래스를 사용하여 HTML을 PDF 문서로 렌더링한 후, SaveAs 메서드를 사용하여 생성된 PDF를 저장할 수 있습니다.
C# 애플리케이션에서 PDF 생성 프로세스를 모니터링하는 방법은 무엇입니까?
OpenTelemetry의 Tracer를 사용하여 PDF 생성을 위한 활동을 만들고, 모니터링 목적을 위해 프로세스에 대한 관련 정보를 기록하는 사용자 정의 태그를 추가합니다.
사용자 정의 메트릭이란 무엇이며 C#에서 OpenTelemetry와 함께 어떻게 사용할 수 있습니까?
사용자 정의 메트릭은 OpenTelemetry의 Meter 및 Counter 클래스를 사용하여 코드를 수동으로 계측하여 수집할 수 있는 애플리케이션별 데이터 포인트입니다.
C#에서 신뢰할 수 있는 PDF 생성 보장을 어떻게 할 수 있습니까?
IronPDF 라이브러리를 사용하여 PDF 문서를 생성, 조작 및 렌더링하여 신뢰성을 보장합니다. IronPDF는 애플리케이션에서 고품질 PDF 출력을 보장하는 강력한 기능을 제공합니다.
C#에서 PDF 생성을 지원하는 라이브러리에 대한 라이센스 옵션이 있습니까?
IronPDF는 생산 테스트를 위한 무료 체험판을 제공하며, 라이센스는 $399부터 시작하여 개발자가 그 기능을 충분히 탐구할 수 있게 합니다.
C# 애플리케이션에서 OpenTelemetry 통합을 어떻게 테스트할 수 있습니까?
웹 브라우저나 curl과 같은 도구를 사용하여 애플리케이션을 실행하고 요청을 보낸 후, 콘솔에 출력되는 추적 및 메트릭과 같은 텔레메트리 데이터를 관찰합니다.




