> For the complete documentation index, see [llms.txt](https://docs.kangal.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kangal.dev/tr/pluginler/traffic-observability.md).

# Trafik ve observability plugin'leri

Trafik eklentileri kota uygular, service'leri korur, istekleri yönlendirir, response'ları cache'ler ve payload'ları dönüştürür. Observability eklentileri request yaşam döngüsü verilerini onaylı operasyon sistemlerine gönderir.

## Request rate limiting

| Eklenti                 | Deployment modeli          | Kullanım                                                |
| ----------------------- | -------------------------- | ------------------------------------------------------- |
| `rate_limiter`          | Paylaşılan Redis sayaçları | Worker ve replica'lar arasında fixed-window kota.       |
| `advanced_rate_limiter` | Process başına sayaçlar    | Tek gateway process'i için fixed veya sliding window.   |
| `response_rate_limiter` | Process başına sayaçlar    | Seçilen tamamlanmış response status'larına dayalı kota. |

### Paylaşılan fixed-window örneği

```json
{
  "limit": 100,
  "window_seconds": 60,
  "limit_by": "consumer",
  "fault_tolerant": false,
  "hide_client_headers": false,
  "error_code": 429,
  "error_message": "API rate limit exceeded"
}
```

`rate_limiter`; `limit` ile `window_seconds`, `minute: 100` gibi adlandırılmış pencereler veya `limits` dizisi kabul eder. Kota enforcement bir güvenlik veya maliyet kontrolü gereksinimiyse `fault_tolerant: false` kullanın.

### Sliding multi-window örneği

```json
{
  "namespace": "orders",
  "limit_by": "credential",
  "strategy": "sliding_window",
  "cost": 1,
  "include_method": true,
  "include_path": true,
  "limits": [
    { "name": "burst", "limit": 10, "window_seconds": 1 },
    { "name": "minute", "limit": 300, "window_seconds": 60 }
  ]
}
```

Kotanın tek gateway process'ine ait olduğu durumda `advanced_rate_limiter` kullanın. Birden fazla worker veya replica arasında tutarlı enforcement için Redis tabanlı `rate_limiter` kullanın.

### Response kotası örneği

```json
{
  "namespace": "billable-orders",
  "limit": 1000,
  "window_seconds": 3600,
  "limit_by": "consumer",
  "strategy": "fixed_window",
  "count_statuses": ["2xx", 409],
  "cost": 1,
  "cost_header": "X-Response-Cost"
}
```

`response_rate_limiter` için `trigger: "both"` kullanın. Process başına kotayı deployment'taki gateway worker ve replica sayısına göre boyutlandırın.

## Service ve routing kontrolleri

| Eklenti                 | Ana yapılandırma                                                             | Kullanım                                                                                                                  |
| ----------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `service_protection`    | Concurrency, failure eşikleri, cooldown, service key, response ayarları      | Eşzamanlı istekleri sınırlar ve service circuit'ini açar. Başarısız istekleri de kapsamak için `trigger: "all"` kullanın. |
| `canary_shadow_traffic` | Canary yüzdesi, kararlı bucket kimliği, canary URL/header, karar header'ları | Canary trafiğini belirlenebilir biçimde seçer ve yapılandırılmış canary upstream'e yönlendirir.                           |
| `forward_proxy`         | `forward_url`                                                                | Seçilen upstream hedefini değiştirir.                                                                                     |
| `redirect`              | `url` veya `location`, status, path/query koruma                             | Upstream proxy işleminden önce redirect döndürür.                                                                         |
| `mock_response`         | `body`, `status_code`, `enabled`                                             | Kontrollü statik response döndürür.                                                                                       |
| `request_termination`   | Header koşulu, status, message                                               | Açık header koşuluyla eşleşen istekleri durdurur.                                                                         |
| `response_cache`        | Namespace, TTL, method, status, vary header, body sınırları                  | Response'ları gateway process'inde cache'ler.                                                                             |

Canary ve forward-proxy hedeflerinde HTTPS kullanın. Yönetici kontrollü outbound hedefleri network policy ile sınırlandırın. Process-local koruma ve cache state'ini worker başına boyutlandırın; bu state ilgili worker yeniden başladığında yenilenir.

## Request ve response dönüşümü

Desteklenen dönüşüm paketleri şunları yapabilir:

* request ve response header'larını set etme, yeniden adlandırma veya kaldırma;
* JSON ve XML alanlarını ekleme, değiştirme, yeniden adlandırma veya kaldırma;
* sınırlandırılmış `{{ variable.path }}` template'leri uygulama;
* seçilen header ve JSON path'lerini maskeleme.

Kullanılabildiği yerde `max_body_bytes` ayarlayın. Body dönüşümlerini yalnızca content type'ı eklenti yapılandırmasıyla eşleşen sınırlı payload'lara uygulayın. Alanlar ve trigger'lar için [desteklenen eklenti referansına](/tr/pluginler/reference.md) bakın.

## Observability emitter'ları

| Eklenti               | Hedef                                        | Kullanım                                                                               |
| --------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------- |
| `correlation_id`      | Request ve response header'ları              | Request kimliği üretir veya mevcut kimliği taşır.                                      |
| `http_log`            | Onaylı HTTP collector                        | JSON request yaşam döngüsü kaydı gönderir.                                             |
| `audit_event_stream`  | Onaylı HTTP audit collector                  | Normalize gateway audit event'i gönderir.                                              |
| `datadog`             | Datadog log intake veya onaylı endpoint      | Service, environment ve tag bağlamı içeren yapılandırılmış request kayıtları gönderir. |
| `kafka_log`           | Kafka topic                                  | Yapılandırılabilir acknowledgement ve timeout ile JSON kayıtları gönderir.             |
| `tcp_log` / `udp_log` | Network collector                            | Yapılandırılmış host ve port'a bir JSON line gönderir.                                 |
| `statsd_metrics`      | StatsD/DogStatsD endpoint                    | Request, status, latency ve hata metriklerini UDP ile gönderir.                        |
| `file_log`            | Yerel tanılama dosyası                       | Kontrollü yerel tanılama için JSON line yazar.                                         |
| `sampling`            | Request state ve isteğe bağlı karar header'ı | Rastgele veya kararlı hash tabanlı sampling kararı üretir.                             |

Request başlangıç zamanı ve tamamlanmış response gereken emitter'larda `trigger: "both"` kullanın. Seçilen paketin request hatalarını da alması gerekiyorsa `trigger: "all"` kullanın.

### Sampling ve audit örneği

Sampling'i emitter'dan önce çalıştırın:

```json
{
  "name": "sampling",
  "trigger": "before_request",
  "priority": 1000,
  "config": {
    "rate": 0.1,
    "strategy": "hash",
    "seed": "production",
    "include_decision_header": true,
    "decision_header": "X-Kangal-Sampled"
  }
}
```

```json
{
  "name": "audit_event_stream",
  "trigger": "both",
  "priority": 100,
  "config": {
    "endpoint": "https://audit.example.com/events",
    "event_type": "gateway.request",
    "include_headers": false,
    "timeout": 1,
    "fail_on_error": false
  }
}
```

## Güvenlik ve teslimat gereksinimleri

* Onaylı veri politikası ve collector credential içerebilen header'lara açıkça izin vermiyorsa `include_headers: false` kullanın.
* HTTP collector'larda HTTPS ve kimlik doğrulama kullanın. Her collector hedefini outbound network policy ile sınırlandırın.
* Request latency'yi korumak için emitter timeout'larını kısa tutun ve yüksek hacimli trafiği yakındaki collector'a gönderin.
* Müşteri trafiğini kesmemesi gereken operasyon telemetry'sinde `fail_on_error: false` kullanın. Yalnızca teslimat request enforcement sözleşmesinin parçasıysa etkinleştirin.
* Yerel tanılamayı saklarken `file_log` için persistent storage ve rotation kullanın.
* Collector credential'larını ve API key'lerini onaylı secret storage'da saklayın.

## Sorun giderme

| Belirti                           | Kontrol                                                                                                                                            |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Paylaşılan kota uygulanmıyor      | Örneğin `rate_limiter` kullandığını, Redis erişimini, `fault_tolerant` politikasını ve tüm replica'ların aynı namespace'i kullandığını doğrulayın. |
| Sliding-window kotası beklenmiyor | Worker sayısını, namespace'i, kimliği, method/path ayrımını, pencereleri ve request cost değerini doğrulayın.                                      |
| Service circuit çok sık açılıyor  | Service key, failure status'ları, minimum request sayısı, eşikler, cooldown ve worker başına trafik hacmini inceleyin.                             |
| Canary trafik seçilmiyor          | Yüzdeyi, bucket kaynağını, salt değerini, canary hedef URL'sini, kapsamı, trigger'ı ve eklenti önceliğini doğrulayın.                              |
| Collector event almıyor           | Trigger, kapsam, endpoint, network policy, kimlik doğrulama, timeout ve collector response'unu doğrulayın.                                         |
| Telemetry latency ekliyor         | Emitter timeout veya hacmini azaltın ve trafiği yakındaki collector üzerinden gönderin.                                                            |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kangal.dev/tr/pluginler/traffic-observability.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
