<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Umut Erol</title>
    <description>The latest articles on DEV Community by Umut Erol (@umuterol).</description>
    <link>https://dev.to/umuterol</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2604925%2F5602b659-1a95-4ca9-9307-405b15a0984b.jpeg</url>
      <title>DEV Community: Umut Erol</title>
      <link>https://dev.to/umuterol</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/umuterol"/>
    <language>en</language>
    <item>
      <title>Opentelemetry Collector'ü ayağa kaldırma</title>
      <dc:creator>Umut Erol</dc:creator>
      <pubDate>Mon, 23 Dec 2024 11:58:19 +0000</pubDate>
      <link>https://dev.to/umuterol/opentelemetry-collectoru-ayaga-kaldirma-3h38</link>
      <guid>https://dev.to/umuterol/opentelemetry-collectoru-ayaga-kaldirma-3h38</guid>
      <description>&lt;p&gt;Başlamadan önce; ubuntu makinenizde "go" ve "docker" kurulu olduğundan emin olunuz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clickhouse'u ayağa kaldırma&lt;/strong&gt;&lt;br&gt;
İlk olarak opontelemetry'den gelen trace datalarını tutmak için clickhouse'a ihtiyaç duyarız.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://clickhouse.com/docs/en/install#available-installation-options" rel="noopener noreferrer"&gt;https://clickhouse.com/docs/en/install#available-installation-options&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu bağlantıdaki adımları takip ederek clickhouse'u ayağa kaldırabilirsiniz.&lt;br&gt;
Kurulum sırasında &lt;strong&gt;&lt;em&gt;Default User&lt;/em&gt;&lt;/strong&gt; için bir şifre belirlenmesi gerektiğini unutmayınız.&lt;/p&gt;

&lt;p&gt;Kurulum tamamlandıktan sonra:&lt;br&gt;
&lt;code&gt;sudo nano /etc/clickhouse-server/config.xml&lt;/code&gt;&lt;br&gt;
komutu ile beraber &lt;strong&gt;&lt;em&gt;config.xml&lt;/em&gt;&lt;/strong&gt; dosyası içindeki &lt;strong&gt;&lt;em&gt;listen_host&lt;/em&gt;&lt;/strong&gt; kısmı aşağıdaki gibi düzenlenmelidir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Same for hosts without support for IPv6: --&amp;gt;
  &amp;lt;listen_host&amp;gt;0.0.0.0&amp;lt;/listen_host&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha sonra clickhouse-server servisi restart edilmeli ve &lt;strong&gt;&lt;em&gt;clickhouse-client&lt;/em&gt;&lt;/strong&gt; komutu ile cli'a girilerek &lt;strong&gt;&lt;em&gt;create database otel&lt;/em&gt;&lt;/strong&gt; ile "otel" adında bir veritabanı oluşturulur.&lt;br&gt;
Bu işlemler neticesinde (varsayılan olarak 9000 portunda) çalışmakta olan bir clickhouse service ortaya çıkmaktadır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opentelemetry Collector İmajının Ayağa Kaldırılması&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/fthrslntgy/opentelemetry-collector-contrib" rel="noopener noreferrer"&gt;https://github.com/fthrslntgy/opentelemetry-collector-contrib&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;bağlantısında bulunan repo yerele klonlanır.&lt;br&gt;
Ardından repo içerisinde bulunan &lt;em&gt;exporter/clickhouseexporter/example/otel-collector-config.yml&lt;/em&gt; dosyası editlenir.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bu aşamada authentication işlemleri için Keycloak kullanılacaksa ilgili bilgiler bu dosya için düzenlenmelidir. Ancak biz bu senaryoda keycloak'a ihtiyaç duymayacağız. Bu sebeple keycloak ile ilgili yerler yorum satırına alınmalıdır.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foamg11owdegtsiz549dc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foamg11owdegtsiz549dc.png" alt="Image description" width="570" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv6ouz3zpr1f9n7817k0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv6ouz3zpr1f9n7817k0.png" alt="Image description" width="411" height="149"&gt;&lt;/a&gt;&lt;br&gt;
! Keycloak'ı inaktif bırakmak için yorum satırına alınması gereken satırlar yukarıdaki gibidir.&lt;/p&gt;

&lt;p&gt;Bu dosyada clickhouse bilgileri doğru bir şekilde editlenmelidir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;endpoint: tcp://ip_address:port #(e.g:tcp://localhost:9000)
database: otel  #(db_name)
username: default
password: "password"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ardından &lt;em&gt;exporter/clickhouseexporter&lt;/em&gt; path'ine gelerek &lt;strong&gt;make run&lt;/strong&gt; komutu ile docker konteyneri ayağa kaldırılır.Build sonrası terminalde &lt;strong&gt;docker ps -a ** komutunu çalıştırarak collector status değerinin "up" olduğunu görüntülemelisiniz. **&lt;em&gt;docker logs  -f&lt;/em&gt;&lt;/strong&gt; ile hatalar kontrol edilerek veri akışı izlenebilir.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tüm bu bilgiler neticesinde exporter olarak 9000 portunda çalışan clickhouse belirlenmiştir. Trace verileri bu yol ile clickhouse'a gönderilecektir.  Receiver olarak da 0.0.0.0:4318 belirlenmiştir. Bu da demek oluyor ki, bir servisin database ile olan trafiğini opentelemetry ile izlemek istersek servis için opentelemetry entegrasyonu sırasında exporter'ı &lt;em&gt;&lt;a href="http://otel_ip_address:4318" rel="noopener noreferrer"&gt;http://otel_ip_address:4318&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
olarak belirlememiz gerekmektedir. &lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>IIS ile Çalışan Asp.Net Web Form App (4.8) Opentelemetry Entegrasyonu</title>
      <dc:creator>Umut Erol</dc:creator>
      <pubDate>Mon, 23 Dec 2024 11:12:25 +0000</pubDate>
      <link>https://dev.to/umuterol/iis-ile-calisan-aspnet-web-form-app-48-opentelemetry-entegrasyonu-eof</link>
      <guid>https://dev.to/umuterol/iis-ile-calisan-aspnet-web-form-app-48-opentelemetry-entegrasyonu-eof</guid>
      <description>&lt;p&gt;&lt;strong&gt;PowerShell Modülünü Kullanarak Otomatik Enstrümantasyon Kurulumu&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Başlat menüsüne tıklayın veya Windows tuşuna basın.&lt;br&gt;
Arama sonuçlarında Windows PowerShell uygulamasını göreceksiniz.&lt;br&gt;
Windows PowerShell uygulamasına sağ tıklayın.&lt;br&gt;
Açılan menüden Yönetici Olarak Çalıştır seçeneğini seçin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Modülü İçe Aktar

# Download the module
$module_url = "https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/OpenTelemetry.DotNet.Auto.psm1"

$download_path = Join-Path $env:temp "OpenTelemetry.DotNet.Auto.psm1"

Invoke-WebRequest -Uri $module_url -OutFile $download_path -UseBasicParsing

# Import the module 
Import-Module $download_path

# Install core files
Install-OpenTelemetryCore

# IIS Entegrasyonu
Register-OpenTelemetryForIIS

# IIS'i Yeniden Başlat
iisreset

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PowerShell'de yaptığınız bu işlemler sonrasında Visual Code 2022'ye gelin ve &lt;strong&gt;Manage NuGet Package&lt;/strong&gt; sayfasına gelerek aşağıda yer alan paketleri install edin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Package OpenTelemetry
Install-Package OpenTelemetry.Api

Install-Package OpenTelemetry.Api.ProviderBuilderExtensions
Install-Package OpenTelemetry.Exporter.OpenTelemetryProtocol
Install-Package OpenTelemetry.Extensions.Hosting
Install-Package OpenTelemetry.Instrumentation.AspNet

Install-Package OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule

Install-Package OpenTelemetry.Instrumentation.Http

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;--&amp;gt; Burada halihazırda install edilmiş halde bulunan paketler için bir işlem yapmanıza gerek görülmemektedir.&lt;/p&gt;

&lt;p&gt;--&amp;gt; Paketlerin versiyonu bu noktada önem taşımaktadır. Bir hata ile karşılaşırsanız (OpenTelemetry.Instrumentation.AspNet.TelemetryHttp,Microsoft.Extensions.Primitives gibi paketlerde... ) hata loglarını takip ederek gerekli versiyon güncellemelerini yapabilirsiniz. Sorunun düzelmemesi durumunda &lt;strong&gt;Web.config&lt;/strong&gt; dosyasına geliniz ve paket versiyonunuzu kontrol ediniz.&lt;/p&gt;

&lt;p&gt;--&amp;gt; Manage NuGet Packages'da Browse kısmında yukarıdaki paketlerden herhangi birini bulamamanız durumunda &lt;strong&gt;Include Prerelease&lt;/strong&gt; seçeneğini seçerek tekrar göz atabilirsiniz.&lt;/p&gt;

&lt;p&gt;Visual Code 2022 ile oluşturmuş olduğunuz Asp.Net Web Form Uygulamasını açın. "Solution Explorer" kısmından &lt;strong&gt;Web.config&lt;/strong&gt; dosyasını açın ve aşağıdaki gibi gerekli ayarları yapın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;
    &amp;lt;appSettings&amp;gt;
        &amp;lt;add key="OTEL_SERVICE_NAME" value="service-name" /&amp;gt;
        &amp;lt;add key="OTEL_EXPORTER_OTLP_TRACES_ENDPOINT" value="http://ip-address:port/v1/traces" /&amp;gt;
        &amp;lt;add key="OTEL_EXPORTER_OTLP_METRICS_ENDPOINT" value="http://ip-address:port/v1/metrics" /&amp;gt;
        &amp;lt;add key="OTEL_RESOURCE_ATTRIBUTES" value="service.name=service-name,environment=production" /&amp;gt;
        &amp;lt;add key="OTEL_LOG_LEVEL" value="debug" /&amp;gt;
    &amp;lt;/appSettings&amp;gt;
    &amp;lt;system.web&amp;gt;
    &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Burada OpenTelemetry Collector'ü ayağa kaldırmış olduğunuz makinenin ip adresini ve collector'ün çalıştığı portu girmeniz gerekmektedir.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://dev.to/umuterol/opentelemetry-collectoru-ayaga-kaldirma-3h38"&gt;https://dev.to/umuterol/opentelemetry-collectoru-ayaga-kaldirma-3h38&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenTelemetryHttpModule middleware oluşturma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visual Studio 2022'de projeniniz üzerine gelin ve sağ tık yapın. &lt;br&gt;
-&amp;gt; Add -&amp;gt; New Item -&amp;gt; Class seçeneklerini seçerek bir class yapısı oluşturun. (Örneğin isim olarak OpenTelemetryHttpModule.cs tercih edebilirsiniz)&lt;br&gt;
Oluşturulan dosyaya aşağıdaki kodu ekleyin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using System;
using System.Web;
using OpenTelemetry;
using OpenTelemetry.Trace;
namespace Namespace.Modul
{
    public class OpenTelemetryHttpModule : IHttpModule
    {
        private static TracerProvider tracerProvider;

        public void Init(HttpApplication context)
        {
            // Tracer Provider start
            tracerProvider = Sdk.CreateTracerProviderBuilder()
                .AddAspNetInstrumentation() // ASP.NET isteklerini izler
                .Build();


        }
        public void Dispose()
        {
            tracerProvider?.Dispose();
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Web.config ayarı&lt;/strong&gt;&lt;br&gt;
OpenTelemetryHttpModule'ı kullanmak için &lt;strong&gt;Web.config&lt;/strong&gt; dosyasına gidin ve aşağıdakini ilgili yere ekleyin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;web.config
&amp;lt;configuration&amp;gt;
  &amp;lt;system.webServer&amp;gt;
    &amp;lt;modules&amp;gt;
      &amp;lt;add name="OpenTelemetryHttpModule" type="Namespace.Modul.OpenTelemetryHttpModule" /&amp;gt;
    &amp;lt;/modules&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;--&amp;gt; OpenTelemetryHttpModule.cs dosyanızdaki &lt;strong&gt;&lt;em&gt;namespace&lt;/em&gt;&lt;/strong&gt; bölümünde de Web.config dosyasındaki modul adı ile aynı isme sahip bir değer girdiğinizden emin olunuz. (örn: namespace Namespace.Modul )&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;IIS bağlantısı ile projenizi çalıştırırken bir sorun yaşıyorsanız projeniz üzerine sağ tık yaparak &lt;strong&gt;properties&lt;/strong&gt; seçeneğini seçin. &lt;strong&gt;Web&lt;/strong&gt; sekmesine gelin ve &lt;strong&gt;&lt;em&gt;Local IIS&lt;/em&gt;&lt;/strong&gt; seçeneğini seçerek projenizi bir kez daha çalıştırmayı deneyin.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
  </channel>
</rss>
