PowerShell Modülünü Kullanarak Otomatik Enstrümantasyon Kurulumu
Başlat menüsüne tıklayın veya Windows tuşuna basın.
Arama sonuçlarında Windows PowerShell uygulamasını göreceksiniz.
Windows PowerShell uygulamasına sağ tıklayın.
Açılan menüden Yönetici Olarak Çalıştır seçeneğini seçin.
# Modülü İçe Aktar
Import-Module "OpenTelemetry.DotNet.Auto.psm1"
# Çekirdek Dosyaları Yükle
Install-OpenTelemetryCore
# IIS Enstrümantasyonunu Ayarla
Register-OpenTelemetryForIIS
# IIS'i Yeniden Başlat
iisreset
Visual Code 2022 ile oluşturmuş olduğunuz Asp.Net Web Form Uygulamasını açın. "Solution Explorer" kısmından Web.config dosyasını açın ve aşağıdaki gibi gerekli ayarları yapın:
<configuration>
<appSettings>
<add key="OTEL_SERVICE_NAME" value="asp-net-otel-app" />
<add key="OTEL_EXPORTER_OTLP_TRACES_ENDPOINT" value="http://ip-address/v1/traces" />
<add key="OTEL_EXPORTER_OTLP_METRICS_ENDPOINT" value="http://ip-address/v1/metrics" />
<add key="OTEL_RESOURCE_ATTRIBUTES" value="service.name=asp-net-otel-app,environment=production" />
<add key="OTEL_LOG_LEVEL" value="debug" />
</appSettings>
<system.web>
<!-- Diğer ayarlar burada yer alacak -->
</system.web>
</configuration>
Burada OpenTelemetry Collector'ü ayağa kaldırmış olduğunuz makinenin ip adresini ve collector'ün çalıştığı portu girmeniz gerekmektedir.
Eğer halihazırda ayağa kaldırılmış bir opentelemetry collector'e sahip değilseniz aşağıdaki bağlantıdan bu adımı gerçekleştirebilirsiniz:
https://dev.to/umuterol/opentelemetry-collectoru-ayaga-kaldirma-3h38
PowerShell'e iisreset komutunu girerek IIS'i yeniden başlatın.
OpenTelemetryHttpModule middleware oluşturma
Visual Studio 2022'de projeniniz üzerine gelin ve sağ tık yapın.
-> Add -> New Item -> Class seçeneklerini seçerek bir class yapısı oluşturun. (Örneğin isim olarak OpenTelemetryHttpModule.cs tercih edebilirsiniz)
Oluşturulan dosyaya aşağıdaki kodu ekleyin.
using System;
using System.Web;
using OpenTelemetry;
using OpenTelemetry.Trace;
namespace app_name
{
public class OpenTelemetryHttpModule : IHttpModule
{
private static TracerProvider tracerProvider;
public void Init(HttpApplication context)
{
// Tracer Provider başlatılır
tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAspNetInstrumentation() // ASP.NET isteklerini izler
.AddConsoleExporter() // Konsola export eder
.Build();
context.BeginRequest += OnBeginRequest;
context.EndRequest += OnEndRequest;
}
private void OnBeginRequest(object sender, EventArgs e)
{
// İsteğin başlangıcında yapılacak işlemler
var context = ((HttpApplication)sender).Context;
context.Items["startTime"] = DateTime.UtcNow;
}
private void OnEndRequest(object sender, EventArgs e)
{
// İsteğin bitişinde yapılacak işlemler
var context = ((HttpApplication)sender).Context;
if (context.Items["startTime"] is DateTime startTime)
{
var duration = DateTime.UtcNow - startTime;
Console.WriteLine($"Request Duration: {duration.TotalMilliseconds} ms");
}
}
public void Dispose()
{
tracerProvider?.Dispose();
}
}
}
Web.config ayarı
OpenTelemetryHttpModule'ı kullanmak için Web.config dosyasına gidin ve aşağıdakini ilgili yere ekleyin.
web.config
<configuration>
<system.webServer>
<modules>
<add name="OpenTelemetryHttpModule" type="Namespace.OpenTelemetryHttpModule" />
</modules>
</system.webServer>
</configuration>
Projenizi çalıştırın. Denemek için opentelemetry entegresi yaptığınız servis ile bir takım post ve get gibi istekler yaparak opentelemetry collector'ün exporter'ı olan clickhouse'dan trace verilerini görüntüleyebilirsiniz.
IIS bağlantısı ile projenizi çalıştırırken bir sorun yaşıyorsanız projeniz üzerine sağ tık yaparak properties seçeneğini seçin. Web sekmesine gelin ve Local IIS seçeneğini seçerek projenizi bir kez daha çalıştırmayı deneyin.
Top comments (0)