> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Trace

> API Proxy'lerde gelen isteklerin nasıl işlendiğini adım adım izleyebilirsiniz. Trace başlatabilirsiniz, politika bazlı execution izleyebilirsiniz, istek/yanıt incelemesi yapabilirsiniz ve performans analizi gerçekleştirebilirsiniz. Debug ve hata tespiti için detaylı log kayıtlarını görüntüleyebilirsiniz.

Tracing (İzleme), API Proxy'lerinizin mesaj işleme akışını gerçek zamanlı olarak izlemenizi ve analiz etmenizi sağlar. Trace işlemi **API Proxy bazında** yapılır ve her API Proxy için ayrı ayrı aktifleştirilir.

Bu modül özellikle:

* Politikaların nasıl çalıştığını anlamak
* Performans sorunlarını tespit etmek
* Hata ayıklama (debugging) yapmak
* İstek/yanıt akışını incelemek
* Dönüşümleri (transformations) doğrulamak

için kullanılır.

<CardGroup cols={2}>
  <Card title="API Proxy Bazında Trace" icon="play">
    Her API Proxy için ayrı ayrı trace oturumu başlatabilirsiniz
  </Card>

  <Card title="Detaylı İzleme" icon="magnifying-glass">
    Her politikanın çalışmasını adım adım izleyebilir ve log kayıtlarını görüntüleyebilirsiniz
  </Card>

  <Card title="Performans Analizi" icon="gauge">
    Zamanlama metriklerini analiz edebilir ve darboğazları tespit edebilirsiniz
  </Card>

  <Card title="Hata Ayıklama" icon="bug">
    Hataları kolayca tespit edebilir ve kök neden analizini yapabilirsiniz
  </Card>
</CardGroup>

<Info>
  Trace işlemi API Proxy bazında yapılır. Log satırına tıkladığınızda sağdan trace detay çekmesi açılır; zaman dağılımı, Client–Gateway–API haritası ve politika öncesi/sonrası paneller burada yer alır. Tüm adımlar için [Adım Adım İzleme](/tr/develop/izleme-analiz/adim-adim-izleme) sayfasına bakabilirsiniz.
</Info>

## Trace Modunu Başlatma

Trace modu, her API Proxy için ayrı ayrı başlatılır. API Proxy'nin kendi sayfasından trace modunu aktifleştirebilirsiniz.

### Ön Koşullar

Trace modunu başlatmadan önce:

<Steps>
  <Step title="API Proxy Yüklenmiş Olmalı">
    İzlemek istediğiniz API Proxy'nin en az bir [Ortam](/tr/concepts/temel-kavramlar/ortam-nedir)'a yüklenmiş olması gerekir
  </Step>

  <Step title="API Proxy Sayfasına Gidin">
    Trace yapmak istediğiniz API Proxy'nin detay sayfasına gidin
  </Step>

  <Step title="Ortam Seçimi Yapın">
    API Proxy'nin yüklenmiş olduğu Ortam'lardan hangisi için izleme modu açılacaksa o Ortam seçilir
  </Step>

  <Step title="Başlat Butonuna Tıklayın">
    **Başlat (Start)** tuşuna tıklayarak trace modunu aktifleştirin
  </Step>
</Steps>

<img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-start.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=8ab6ec35ceda3632054c245da8d63ba3" alt="Trace Modunu Aktifleştirme" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-start.png" />

<Tip>
  Ortam seçiminin yanındaki filtre alanından **Custom Query** ile sadece istenen veriler üzerinden özel olarak trace edilebilir.
</Tip>

<Warning>
  Trace modu aktifleştirildiğinde:

  * Log kayıtlarının içeriği detaylı incelemeye izin verecek şekilde genişletilir
  * Log kayıtları MongoDB konfigürasyon veri tabanına yazılır
  * İşletilen tüm politikalar için ayrıntılı log kayıtları oluşturulur
  * Mod durdurulana ya da **5 dakika** sonunda platform tarafından otomatik olarak kapatılana kadar bu şekilde saklanmaya devam eder
</Warning>

## Trace Kayıtları

Trace modu aktifleştirildikten sonra, API Proxy'ye gelen istekler otomatik olarak izlenir ve detaylı kayıtlar oluşturulur.

<img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-logs.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=252ccd3a7d20a04c014c5cfe14891b57" alt="Trace Log Kayıtları" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-logs.png" />

<Info>
  Görüntülenmekte olan log kayıtları otomatik olarak güncellenmez. Yeni kayıtları görmek için **Logları Yenile (Refresh Logs)** tuşunu kullanın.
</Info>

Tabloda görünen log kayıtlarının her birisi, istemciden bu API Proxy'e gelen istek ve o isteğe verilen yanıt mesajına aittir.

<Info>
  API Çağrı Politikasının log kaydı ayrı olarak tutulduğu için aynı isteğe ait çift log gözükür. Bunların ilk akıştaki mesajın önceki ve sonraki halidir, ikinci ise API Çağrısından çıkan istek ve yanıt mesajıdır.
</Info>

### Trace Listesi

Trace listesinde her bir kayıt için aşağıdaki bilgiler görüntülenir:

| Bilgi               | Açıklama                                  |
| ------------------- | ----------------------------------------- |
| **Timestamp**       | İsteğin geldiği tarih ve saat             |
| **Method**          | HTTP metodu (GET, POST, PUT, DELETE, vb.) |
| **Path / Endpoint** | İstek path'i ve endpoint adı              |
| **Status Code**     | Yanıt durum kodu (200, 404, 500, vb.)     |
| **Duration**        | Toplam işlem süresi (ms)                  |
| **Policies**        | Çalıştırılan politika sayısı              |
| **Correlation ID**  | İsteğe özgü korelasyon kimliği            |

<Note>
  API Çağrı Politikası kullanıldığında, aynı isteğe ait çift log kaydı görünür:

  1. Ana akıştaki mesajın önceki ve sonraki hali
  2. API Çağrısından çıkan istek ve yanıt mesajı
</Note>

### Trace İşlemleri

Her trace kaydı için aşağıdaki işlemler yapılabilir:

<Tabs>
  <Tab title="Detaylı Görüntüleme">
    İncelenmek istenen istek mesajına ait satırın sonundaki tuşlardan ilki, o mesajın log kayıtlarını görüntüleyen bir pencere açar.

    <img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-detailed-view-button.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=f8dc9e4e996323e3b9a09a7fe39b4966" alt="Detaylı Görüntüleme Butonu" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-detailed-view-button.png" />

    Açılan pencerede loglar, mesaj akışına ilişkin bölümlere ayrılmıştır. İncelenmek istenen bölümün adına tıklandığında bu alana ilişkin log kayıtları görüntülenir. Varsayılan olarak **Genel Bakış** bölümü açıktır.

    <img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-detailed-view-dialog.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=bd29ee4995f9ba3c88ffb691dbdefc24" alt="Detaylı Görüntüleme Dialog" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-detailed-view-dialog.png" />
  </Tab>

  <Tab title="JSON Formatında Görüntüleme">
    Detaylı Görüntüleme tuşunun yanındaki tuş log kayıtlarını JSON formatında görüntüler.

    <img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-json-view.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=6ea784144f00631a299689251a4c2b87" alt="JSON Görüntüleme" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-json-view.png" />

    <img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-json-dialog.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=a55debb0eb5d9ab130710c606e67d7ce" alt="JSON Dialog" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-json-dialog.png" />

    <Info>
      JSON görünümündeki anahtar değerler okunabilir şekilde yazılmıştır. Örneğin:

      * "apiProxyId" değeri log kaydında "api" şeklinde tutulur
      * Gerçek log formatı için [API Trafiği Log Kaydı Veri Yapısı](/tr/analytic/api-trafigi-log-kaydi-veri-yapisi) sayfasına bakabilirsiniz
    </Info>
  </Tab>

  <Tab title="İndirme">
    Apinizer, adım adım izleme modundayken, API Proxy için işletilen bütün politikalar için de ayrıntılı bir şekilde log kayıtları oluşturur. İndirme seçeneği, istek bazlı olarak oluşturulan bütün log kayıtlarını topluca indirme olanağı sağlar.

    <img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-download.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=8df0c44bd69f1d878b039f4d8480109d" alt="İndirme" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-download.png" />

    <Tip>
      Log kaydının veri büyüklüğü 500KB'den büyükse, **Detaylı Göster** ve **JSON Formatında Görüntüle** seçenekleri kapalı olur. Bu durumda kayıt indirilerek incelenmelidir.
    </Tip>
  </Tab>

  <Tab title="Hızlı Test">
    İlgili satırdaki Hızlı Test tuşu, gönderilen isteğin yeniden gönderilerek anında test edilebileceği şekilde biçimlendirilmiş olarak [Test Konsolunu](/tr/develop/test-debug-araclari/test-console) açar.

    <img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-quick-test.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=74493b4688fa8ab2a5f85a1dcdb7fdd4" alt="Hızlı Test" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-quick-test.png" />

    <Warning>
      Hızlı Test tuşunun görünmesi için genel ayarlarda etkinleştirilmelidir.
    </Warning>
  </Tab>
</Tabs>

## Politika Akışını İzleme

Apinizer'ın adım adım izleme modundayken API Proxy için işletilen politikalara ilişkin tuttuğu ayrıntılı log kayıtlarını görüntülemek için **Seç** tuşuna tıklanır.

<img src="https://mintcdn.com/apinizer/b92tyAv6JpTHUWXg/images/develop/izleme-analiz/trace-select.png?fit=max&auto=format&n=b92tyAv6JpTHUWXg&q=85&s=f39acde1d2d8152e5255562a0d537fe3" alt="Seçme" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-select.png" />

Tabloda bir satıra tıkladığınızda veya **Seç** ile kaydı seçtiğinizde **sağdan trace detay çekmecesi** açılır. Üstte **zaman dağılımı** ve **Client → Gateway → API** işlem haritası yer alır; haritada istek hattı (üst sıra) ve yanıt hattı (alt sıra) üzerindeki politika düğümleri, varsa [API Proxy Grup](/tr/concepts/temel-kavramlar/api-proxy-group) politikaları da dahil olmak üzere işletilme sırasına göre gösterilir.

Düğümlerde başarı için yeşil onay, hata veya blok için **!**, atlanan politika için soluk görünüm ve **S** rozeti kullanılır. **‹ Back** / **Next ›** veya doğrudan düğüme tıklayarak adımlar arasında gezersiniz. Ayrıntılı anlatım için [Adım Adım İzleme](/tr/develop/izleme-analiz/adim-adim-izleme) sayfasına bakın.

<Tabs>
  <Tab title="Başarılı Akış">
    Tüm adımların başarılı işlendiği örnek: çekmede zaman çubuğu, harita ve **Client** adımında istek/yanıt panelleri.

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-client.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=bd9a0add8f1cf7454dc31b956c341063" alt="Trace çekmecesi: başarılı akışta zaman dağılımı, harita ve Client adımı" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-client.png" />
  </Tab>

  <Tab title="Başarısız Akış">
    Hata durumunda (örneğin politika reddi, yönlendirme veya backend **404**) haritada ilgili düğümlerde kırmızı **!** görünebilir; **Client** adımında istemciye giden yanıtta HTTP durum kodu ve JSON `fault` gövdesi gibi ayrıntılar okunur.

    <Warning>
      Hata oluştuktan sonra çalışması beklenen adımlar haritada eksik kalabilir veya yürütülmemiş görünebilir; istemciye hata yanıtı döner.
    </Warning>

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-flow-failed.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=24f6cc461d06ef3a0c15933e4f57850e" alt="Trace çekmecesi: başarısız istek, haritada uyarı ve 404 fault yanıtı" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-flow-failed.png" />
  </Tab>
</Tabs>

### Politika Execution Detayları

<AccordionGroup>
  <Accordion title="Pre-flow Politikaları" icon="play">
    İstek geldiğinde ilk olarak işletilen politikalar:

    * **Politika Adı**: Çalıştırılan politikanın adı
    * **Execution Time**: Politikanın çalışma süresi (ms)
    * **Status**: Başarılı / Başarısız durumu
    * **Changes**: Politikanın mesajda yaptığı değişiklikler (header, body, variable değişiklikleri)

    Örnekler: Kimlik doğrulama, rate limiting, IP kontrolü
  </Accordion>

  <Accordion title="Route Step (Yönlendirme)" icon="route">
    Backend API'ye yönlendirme adımı:

    * **Selected Upstream**: Seçilen [upstream target](/tr/concepts/temel-kavramlar/routing-ve-upstream)
    * **Load Balancing Decision**: Load balancing algoritması kararı
    * **Connection Time**: Backend'e bağlanma süresi (ms)
    * **Backend Response Time**: Backend'in yanıt süresi (ms)
    * **Retry/Failover**: Retry veya failover durumu
  </Accordion>

  <Accordion title="Post-flow Politikaları" icon="arrow-left">
    Backend'den yanıt geldikten sonra işletilen politikalar:

    * **Politika Adı**: Çalıştırılan politikanın adı
    * **Execution Time**: Politikanın çalışma süresi (ms)
    * **Status**: Başarılı / Başarısız durumu
    * **Changes**: Yanıt mesajında yapılan değişiklikler

    Örnekler: Response transformation, cache writing, logging
  </Accordion>

  <Accordion title="Fault Handler" icon="triangle-exclamation">
    Hata durumunda çalıştırılan politikalar:

    * **Error Type**: Hata türü (authentication, routing, policy, vb.)
    * **Error Message**: Hata mesajı
    * **Handler Policies**: Çalıştırılan hata yakalayıcı politikalar
    * **Final Response**: İstemciye döndürülen son yanıt

    <Info>
      Fault Handler sadece hata oluştuğunda çalışır ve hata yanıtını özelleştirmenizi sağlar.
    </Info>
  </Accordion>
</AccordionGroup>

#### Politikaya Özel Yürütme Detayları (Execution Details)

Belirli politika tiplerinde, trace çekmecesinin politika düğüm bar'ında **Execution Details** butonu görünür. Bu buton, seçilen politikanın türüne göre özelleştirilmiş modal pencere açar; modal, politikanın çalışma süreci hakkında domain-spesifik ayrıntıları accordion'lar halinde gösterir.

<img src="https://mintcdn.com/apinizer/gpMasyEeO8WskV2x/images/develop/izleme-analiz/details-2.png?fit=max&auto=format&n=gpMasyEeO8WskV2x&q=85&s=67d6456ec74c71222f2155a16362f9e5" alt="Trace — Cache policy selected, Cache Execution Details button" width="1000" data-path="images/develop/izleme-analiz/details-2.png" />

<img src="https://mintcdn.com/apinizer/gpMasyEeO8WskV2x/images/develop/izleme-analiz/details-modal.png?fit=max&auto=format&n=gpMasyEeO8WskV2x&q=85&s=895511499990cbb91302f858547ad4e6" alt="Cache LOOKUP Execution Details modal" width="1000" data-path="images/develop/izleme-analiz/details-modal.png" />

**Execution Details Modalı Desteği:**

| **Politika Tipi**                            | **Gösterilen Detaylar**                                                                                                                         |
| :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cache (Önbellekleme)**                     | Operation (LOOKUP/POPULATE/INVALIDATE), Cache Key, Hit/Miss sonucu, Source/Target Variable adları, TTL değeri, Cache Connection durumu          |
| **API Call (REST API Çağrısı)**              | Cache hit/miss durumu (varsa), HTTP method ve URL, Request/Response body özeti, Response status code, execution time (ms)                       |
| **Backend API Authentication**               | Authenticated flag (true/false), Extracted username / roles listesi, Full HTTP call detayları (method, URL, header'lar), Backend yanıt status   |
| **JOSE Key Fetch (Dinamik Anahtar Getirme)** | Mode (VALIDATION / IMPLEMENTATION), Key cache hit/miss, Key extraction path (JSONPath/XPath), HTTP endpoint call detayları                      |
| **Client Ban**                               | Banned flag, Ban kaynağı (IP/Credential/threshold), Remaining ban time (kalan saniye), Cache lookup sonucu                                      |
| **API Based Throttling**                     | Current count / limit, Time window, Allowed/Blocked karar, Cache key ve lookup sonucu                                                           |
| **API Based Quota**                          | Current count / quota, Period end timestamp, Allowed/Blocked karar, Cache key ve lookup sonucu                                                  |
| **Business Rule**                            | Per-action execution listesi: action type, operator, condition result, input values, output values, execution time (ms), hata varsa hata mesajı |

**Kullanım:**

* Trace çekmecesinde politika düğümünü seçin
* Düğüm bar'ında (politika adı yanında) **Execution Details** butonu varsa tıklayın
* Modal, politika-spesifik accordion'larla açılır
* Kapatmak için modalın dışına tıklayın veya X düğmesine basın

**Not:** Request hattı (pre-flow) ve Yanıt hattı (post-flow) politikalarının her ikisinde de Execution Details butonu gösterir ise, aynı politika her iki tarafta da çalıştırılmış demektir.

## Detaylı Log Kayıtları

Bir log satırı seçildiğinde açılan çekmece, mesaj akışının başarılı olup olmadığını harita ve üst bilgilerle özetler; seçilen düğüme göre alt panelde tablolar ve gövdeler gösterilir. Genel görünüm örneği — harita, özet satırı ve istek başlıkları:

<img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-gateway-ingress.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=13307739657a5a9de9181a30596706cf" alt="Trace çekmecesi: harita ve gateway giriş özeti" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-gateway-ingress.png" />

Aşağıda aynı çekmece içinde sık kullanılan adımlar ve önerilen görseller özetlenmiştir (tam akış [Adım Adım İzleme](/tr/develop/izleme-analiz/adim-adim-izleme) sayfasındadır).

<AccordionGroup>
  <Accordion title="İstemci (Client) adımı">
    Haritada **Client** düğümü seçildiğinde sol sütunda istemciden gelen istek (**HTTP Info**, başlıklar, parametreler, gövde), sağ sütunda istemciye giden yanıt görüntülenir.

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-client.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=bd9a0add8f1cf7454dc31b956c341063" alt="Trace çekmecesi: Client adımı istek ve yanıt" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-client.png" />
  </Accordion>

  <Accordion title="Politika adımı (Before / After)">
    Haritada bir politika düğümüne tıkladığınızda yürütme bilgisi ve **Before** / **After** akordeonları ile mesajın politika öncesi ve sonrası karşılaştırılır.

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-policy-api-call.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=d59becfa03a9d836edc8a8638e4f8636" alt="Trace çekmecesi: politika Before ve After" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-policy-api-call.png" />
  </Accordion>

  <Accordion title="Backend API ve yönlendirme">
    **Hedef (API)** özeti, **Routing** tablosu (genişletilmiş satır; yönlendirme için bkz. [HTTP Yönlendirme](/tr/develop/yonlendirme/http-yonlendirme)) ve **hedeften gelen yanıt** sırayla aşağıdaki görsellerle örneklenir.

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-target-backend.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=7372e9b75889a54474e09a95ebe487f8" alt="Trace çekmecesi: backend hedef özeti" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-target-backend.png" />

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-routing-table.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=da93eacb09fbc76314a9f6d41aa46e22" alt="Trace çekmecesi: routing tablosu" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-routing-table.png" />

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/izleme-analiz/trace-drawer-step-response-from-target.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=b072ae28ba4ccefc746f90c56d10f2bb" alt="Trace çekmecesi: hedeften yanıt" width="1000" style={{ borderRadius: '0.5rem' }} data-path="images/develop/izleme-analiz/trace-drawer-step-response-from-target.png" />
  </Accordion>
</AccordionGroup>

### İstek/Yanıt Karşılaştırma

Trace modu, mesajın akış boyunca nasıl değiştiğini gösterir:

<CardGroup cols={2}>
  <Card title="Öncesi/Sonrası" icon="code-compare">
    Her politika için mesajın önceki ve sonraki halini karşılaştırabilirsiniz
  </Card>

  <Card title="Transformation Analizi" icon="wand-magic-sparkles">
    Dönüşüm (transformation) politikalarının etkisini görebilirsiniz
  </Card>

  <Card title="Header Değişiklikleri" icon="file-lines">
    Eklenen, değiştirilen veya silinen header'ları görebilirsiniz
  </Card>

  <Card title="Body Değişiklikleri" icon="file-code">
    JSON/XML dönüşümlerini ve içerik değişikliklerini görebilirsiniz
  </Card>
</CardGroup>

## Performans Analizi

Trace modu, performans sorunlarını tespit etmek için detaylı zamanlama metrikleri sağlar.

### Zamanlama Metrikleri (Timing Metrics)

Her trace kaydı için aşağıdaki metrikler görüntülenir:

| Metrik                 | Açıklama                                            |
| ---------------------- | --------------------------------------------------- |
| **Total Duration**     | İsteğin giriş-çıkış süresi toplamı (ms)             |
| **Pre-flow Duration**  | Pre-flow politikalarının toplam çalışma süresi      |
| **Route Duration**     | Backend'e bağlanma ve yanıt alma süresi             |
| **Backend Duration**   | Backend API'nin yanıt süresi (net)                  |
| **Post-flow Duration** | Post-flow politikalarının toplam çalışma süresi     |
| **Gateway Overhead**   | Apinizer Gateway'in eklediği süre (Total - Backend) |

<Tip>
  **Gateway Overhead** yüksekse, politika optimizasyonu yapılabilir. **Backend Duration** yüksekse, backend API optimize edilmelidir.
</Tip>

### Politika Performans Analizi

Politikaların performansını analiz etmek için:

<CardGroup cols={2}>
  <Card title="En Yavaş Politikalar" icon="turtle">
    En uzun süre alan politikaları belirleyebilir ve optimize edebilirsiniz
  </Card>

  <Card title="Politika Sayısı" icon="hashtag">
    Çalıştırılan toplam politika sayısını görebilir, gereksiz politikaları kaldırabilirsiniz
  </Card>

  <Card title="Ortalama Politika Süresi" icon="gauge">
    Her politikanın ortalama çalışma süresini izleyebilirsiniz
  </Card>

  <Card title="Politika Çalışma Sırası" icon="list-ol">
    Politikaların sırasını değiştirerek performansı artırabilirsiniz
  </Card>
</CardGroup>

**Optimizasyon Önerileri:**

* **Cache Politikası**: Backend çağrılarını azaltmak için cache kullanın
* **Conditional Flow**: Gereksiz politikaları koşullu olarak atlayın
* **Script Optimizasyonu**: Script politikalarında yavaş işlemleri optimize edin
* **Transformation**: Gereksiz transformation'ları kaldırın

### Backend Performans Metrikleri

Backend API'nin performansını izlemek için:

| Metrik                   | Açıklama                                   |
| ------------------------ | ------------------------------------------ |
| **Connection Time**      | Backend sunucusuna TCP bağlantı süresi     |
| **SSL Handshake Time**   | HTTPS bağlantısı için SSL handshake süresi |
| **Response Time**        | Backend'in yanıt oluşturma süresi          |
| **Total Backend Time**   | Connection + Response toplam süresi        |
| **Backend Status**       | Backend çağrısının başarı durumu           |
| **Retry/Failover Count** | Retry veya failover yapılma sayısı         |

<Warning>
  Yüksek **Connection Time** backend sunucusunun yavaş veya ağ sorunlu olduğunu gösterir. Yüksek **Response Time** ise backend API'nin optimize edilmesi gerektiğini gösterir.
</Warning>

## Kullanım Senaryoları

### Senaryo 1: Performans Sorunu Tespiti

**Durum:** Bir API Proxy'nin yanıt süreleri beklenenden yüksek.

<Steps>
  <Step title="Trace Başlatın">
    API Proxy sayfasından trace modunu aktifleştirin
  </Step>

  <Step title="Yavaş İstekleri İnceleyin">
    Trace kayıtlarında yavaş istekleri (örn. >1000ms) bulun
  </Step>

  <Step title="Politika Akışını İnceleyin">
    Seç tuşu ile politika akışını görüntüleyin ve en yavaş politikaları tespit edin
  </Step>

  <Step title="Darboğazları Tespit Edin">
    * Backend API yavaş mı? → Backend optimize edilmeli
    * Politikalar yavaş mı? → Script/transformation optimize edilmeli
    * Database sorgusu yavaş mı? → Cache kullanılabilir
  </Step>

  <Step title="Optimizasyon Yapın">
    Tespit edilen sorunları çözün ve trace ile tekrar test edin
  </Step>
</Steps>

### Senaryo 2: Hata Ayıklama

**Durum:** Bazı istekler 500 hatası veriyor ve nedeni bilinmiyor.

<Steps>
  <Step title="Trace Başlatın">
    API Proxy sayfasından trace modunu aktifleştirin
  </Step>

  <Step title="Hatalı İstekleri Bulun">
    Trace kayıtlarında 5xx hatalarını bulun
  </Step>

  <Step title="Hata Oluşan Politikayı Bulun">
    Seç tuşu ile politika akışını görüntüleyin ve kırmızı işaretli politikayı bulun
  </Step>

  <Step title="Politika Detaylarını İnceleyin">
    * Politikaya gelen mesajı inceleyin (Öncesi)
    * Hata mesajını okuyun
    * Detaylı log kayıtlarını inceleyin
  </Step>

  <Step title="Kök Neden Analizini Yapın">
    * Veri formatı yanlış mı?
    * Header eksik mi?
    * Script hatası mı?
    * Backend ulaşılamıyor mu?
  </Step>

  <Step title="Düzeltme Yapın ve Test Edin">
    Sorunu düzeltin ve trace ile tekrar test edin
  </Step>
</Steps>

### Senaryo 3: Transformation Doğrulama

**Durum:** JSON to XML transformation'ının doğru çalışıp çalışmadığını kontrol etmek.

<Steps>
  <Step title="Trace Başlatın">
    API Proxy sayfasından trace modunu aktifleştirin
  </Step>

  <Step title="Test İsteği Gönderin">
    Test Console'dan örnek bir JSON request gönderin
  </Step>

  <Step title="Transformation Politikasını Seçin">
    Seç tuşu ile politika akışını görüntüleyin ve transformation politikasına tıklayın
  </Step>

  <Step title="Öncesi/Sonrası Karşılaştırın">
    * Before: Gelen JSON mesajı
    * After: Dönüştürülmüş XML mesajı
    * Dönüşümün doğru olup olmadığını kontrol edin
  </Step>

  <Step title="Backend'e Giden Mesajı Kontrol Edin">
    Backend API log kayıtlarında giden mesajın XML formatında ve doğru olduğunu doğrulayın
  </Step>
</Steps>

### Senaryo 4: Conditional Flow Testi

**Durum:** Koşullu politikaların doğru çalışıp çalışmadığını test etmek.

<Steps>
  <Step title="Trace Başlatın">
    API Proxy sayfasından trace modunu aktifleştirin
  </Step>

  <Step title="Farklı Koşullar İçin İstekler Gönderin">
    * Premium user için istek
    * Normal user için istek
    * Misafir için istek
  </Step>

  <Step title="Her İstek İçin Trace İnceleyin">
    Seç tuşu ile politika akışını görüntüleyin ve hangi politikaların çalıştığını görün
  </Step>

  <Step title="Koşul Değerlendirmesini Kontrol Edin">
    * Condition expression neydi?
    * Değerlendirme sonucu ne oldu?
    * Doğru politikalar mı çalıştı?
  </Step>

  <Step title="Gerekirse Koşulları Düzeltin">
    Yanlış koşulları düzeltin ve tekrar trace ile test edin
  </Step>
</Steps>

## En İyi Uygulamalar

### Trace Kullanımı

<CardGroup cols={2}>
  <Card title="Development Ortamında Sık Kullanın" icon="laptop-code">
    * Geliştirme sırasında sürekli trace edin
    * Yeni politikalar eklerken mutlaka trace ile test edin
    * API değişikliklerini trace ile doğrulayın
  </Card>

  <Card title="Production'da Dikkatli Olun" icon="shield-halved">
    * Production'da sadece gerektiğinde trace aktifleştirin
    * Trace otomatik olarak 5 dakika sonra kapanır
    * Performans etkisini göz önünde bulundurun
  </Card>

  <Card title="Custom Query Kullanın" icon="filter">
    * Ortam seçiminin yanındaki filtre alanından Custom Query ile filtreleme yapın
    * Sadece ilgili endpoint'leri trace edin
    * Gereksiz trace kayıtlarını minimize edin
  </Card>

  <Card title="API Proxy Bazında Kullanın" icon="server">
    * Her API Proxy için ayrı ayrı trace başlatın
    * İlgili API Proxy'nin sayfasından trace modunu aktifleştirin
    * Trace kayıtları MongoDB'de saklanır
  </Card>
</CardGroup>

### Performans İzleme

<Warning>
  **Performans Baseline Oluşturun:**

  * Normal koşullarda API'nin ortalama yanıt süresini ölçün
  * Her politikanın ortalama çalışma süresini kaydedin
  * Baseline'dan sapmaları izleyin ve alarm kurun
</Warning>

**Düzenli İzleme:**

* Haftada bir performans trace çalıştırın
* Trend analizleri yapın
* Yavaşlamaları erken tespit edin

**Optimizasyon Döngüsü:**

1. Trace ile darboğazları tespit edin
2. Optimizasyon yapın
3. Trace ile iyileşmeyi doğrulayın
4. Sonuçları dokümante edin

### Hata Ayıklama

<Tip>
  **Tekrarlanabilir Test Senaryoları:**

  * Trace başlatmadan önce test senaryolarını hazırlayın
  * Aynı test verisini kullanarak tutarlı sonuçlar alın
  * Edge case'leri test edin
</Tip>

**Sistematik Yaklaşım:**

1. Sorunu izole edin (hangi endpoint, hangi koşulda?)
2. Trace ile detaylı bilgi toplayın
3. Kök neden analizini yapın
4. Düzeltme yapın
5. Trace ile doğrulayın
6. Süreci dokümante edin

**Öncesi/Sonrası Karşılaştırması:**

* Her politika için giriş/çıkış mesajlarını karşılaştırın
* Beklenmeyen değişiklikleri tespit edin
* Transformation doğruluğunu kontrol edin

## İlgili Kaynaklar

<CardGroup cols={2}>
  <Card title="Adım Adım İzleme" icon="magnifying-glass" href="/tr/develop/izleme-analiz/adim-adim-izleme">
    API Proxy bazında trace işlemleri
  </Card>

  <Card title="Test Console" icon="terminal" href="/tr/develop/test-debug-araclari/test-console">
    API test ve debug konsolu
  </Card>

  <Card title="Politika Yönetimi" icon="shield" href="/tr/develop/api-proxy-konfigurasyonu/politika-yonetimi">
    Politikaları yönetme ve yapılandırma
  </Card>

  <Card title="API Traffic Log Ayarları" icon="cog" href="/tr/analytic/api-traffic-log-ayarlari">
    Log kayıt ayarlarını yapılandırma
  </Card>

  <Card title="Mesaj İşleme ve Politika Uygulama" icon="arrow-progress" href="/tr/concepts/temel-kavramlar/mesaj-isleme-ve-politika-uygulama">
    Mesaj akışı ve politika çalıştırma hakkında bilgi
  </Card>

  <Card title="Koşullu Politika Çalıştırma" icon="code-branch" href="/tr/concepts/temel-kavramlar/kosullu-politika-calistirma">
    Conditional flow hakkında detaylı bilgi
  </Card>
</CardGroup>
