Ana içeriğe atla

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.

Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.

Genel Bakış

Amacı Nedir?

  • Log Politikası, mesaj işleme hattının (pipeline) herhangi bir noktasına yerleştirilerek o anki mesaj durumunun anlık görüntüsünü (snapshot) yakalar ve belirlenen konnektörlere gönderir.
  • Standart trafik loglamasından farklı olarak, pipeline’ın ara noktalarında (örneğin bir dönüştürme politikasından önce ve sonra) loglama yaparak mesaj değişikliklerini izlemeyi sağlar.
  • HTTP, WebSocket ve gRPC protokollerinde çalışır.
  • Birden fazla konnektöre aynı anda gönderim yapabilir.

Çalışma Prensibi

  1. Politika Tetiklenmesi: Mesaj işleme hattında log politikasının sırası geldiğinde çalışır.
  2. Anlık Görüntü Oluşturma: O anki mesaj durumu protokole özel olarak yakalanır (başlık, parametre, gövde bilgileri).
  3. Konnektörlere Gönderim: Anlık görüntü, tanımlanan her konnektöre ayrı ayrı gönderilir.
  4. Gizlilik Uygulama: Gizlilik ayarları etkinse, hassas veriler gönderimden önce işlenir (maskeleme, silme, hashleme, şifreleme).

Kullanım Alanları

  • Belirli pipeline aşamalarında mesaj durumunu izleme (politika öncesi/sonrası karşılaştırma)
  • Hata ayıklama ve sorun giderme için detaylı log toplama
  • Denetim ve uyumluluk gereksinimlerini karşılama
  • Harici sistemlere (SIEM, log analiz platformları) gerçek zamanlı veri gönderimi

Desteklenen Hedefler

HedefProtokol
ElasticsearchREST/HTTP
Veritabanı (Oracle, MySQL/MariaDB, PostgreSQL, SQL Server, MongoDB)JDBC / MongoDB Driver
GraylogGELF
WebhookHTTP POST
SyslogSyslog Protocol
KafkaKafka Producer
RabbitMQAMQP

Protokol Desteği

ProtokolBaşlık (Header)ParametreGövde (Body)
HTTP
WebSocket
gRPC
WebSocket ve gRPC protokollerinde başlık ve parametre bilgileri protokol yapısı gereği sınırlı olabilir.

Konfigürasyon Alanları

Log politikası Tanım sekmesi

Genel Ayarlar

AlanAçıklama
AdPolitikanın tanımlayıcı adı
AçıklamaPolitikanın amacını belirten açıklama
AktifPolitikanın aktif/pasif durumu
Çalışma ModuSenkron veya Asenkron çalışma modu (aşağıda detaylandırılmıştır)
KoşulPolitikanın ne zaman çalışacağını belirleyen koşul (isteğe bağlı)

Konnektör Seçimi

Politikanın log göndereceği konnektörleri seçebilirsiniz. Konnektörler, bağlantı tanımı üzerinden seçilir ve ortam bağımsız çalışır — aynı bağlantı tanımı farklı ortamlarda farklı konnektör örneklerine karşılık gelebilir. Log politikası konnektör seçimi
Global politika olarak işaretlenen tanımlar birden fazla ortamda kullanılabilir; her ortamda aynı bağlantı tanımına karşılık gelen konnektörün yapılandırılmış olması gerekir.

Loglanan Alanlar

Aşağıdaki alan gruplarından hangilerinin log kaydına dahil edileceğini belirleyebilirsiniz:
Alan GrubuAçıklama
İstemciden Gelen İstek Başlıklarıİstemciden API Proxy’ye gelen istek başlık bilgileri
İstemciden Gelen İstek Parametreleriİstemciden API Proxy’ye gelen istek parametreleri
İstemciden Gelen İstek Gövdesiİstemciden API Proxy’ye gelen istek gövdesi
Hedefe Gönderilen İstek BaşlıklarıAPI Proxy’den Backend API’ye gönderilen istek başlık bilgileri
Hedefe Gönderilen İstek ParametreleriAPI Proxy’den Backend API’ye gönderilen istek parametreleri
Hedefe Gönderilen İstek GövdesiAPI Proxy’den Backend API’ye gönderilen istek gövdesi
Hedeften Gelen Yanıt BaşlıklarıBackend API’den gelen yanıt başlık bilgileri
Hedeften Gelen Yanıt GövdesiBackend API’den gelen yanıt gövdesi
İstemciye Gönderilen Yanıt Başlıklarıİstemciye gönderilen yanıt başlık bilgileri
İstemciye Gönderilen Yanıt Gövdesiİstemciye gönderilen yanıt gövdesi
MetadataIP adresi, HTTP metodu, URI, port gibi istek metadata bilgileri
MetriklerSüre, boyut, önbellek durumu gibi performans metrikleri

Gövde Loglama Modu

ModAçıklama
Tam (Full)Gövde verisi tamamen loglanır
Kısmi (Partial)Gövde verisi belirtilen maksimum boyuta kadar loglanır. Boyut aşıldığında veri kesilir

Çalışma Modları

ModGönderimHata DurumuPipeline Etkisi
Senkron (varsayılan)Sıralı, tamamlanana kadar beklenirHata fırlatılırPipeline kırılır
AsenkronArka planda, beklenmezHata loglanır, yutulurPipeline devam eder
Senkron modda konnektör hatası pipeline’ı kırar ve istemciye hata döner. Üretim ortamında kesintisiz çalışma gerekiyorsa asenkron modu tercih edin.
Asenkron modda konnektör hatası oluştuğunda hata bilgisi uygulama loglarına yazılır, ancak istemci isteği etkilenmez.

Veri Yapısı

Log politikası, standart API trafik loglarından farklı hafif bir veri yapısı kullanır. Aşağıdaki tabloda gönderilen alanlar ve Elasticsearch/veritabanı karşılıkları listelenmiştir.
Alan AdıKısa Ad (ES/JSON)TipAçıklama
Timestamp@timestampDateLog kaydının oluşturulma zamanı
Korelasyon IDaciStringApinizer istek izleme ID’si
Ortam IDeiStringGateway ortam tanımlayıcısı
API Proxy IDapiStringAPI Proxy tanımlayıcısı
API Proxy AdıapnStringAPI Proxy adı
API Proxy Metot IDapmiStringAPI Proxy metot tanımlayıcısı
API Proxy Metot AdıapmnStringAPI Proxy metot adı
Kullanıcı/AnahtaruokStringDoğrulanmış kullanıcı adı veya API anahtarı
HTTP Durum KoduscNumberHTTP yanıt durum kodu
Sonuç TipirtStringİşlem sonucu (SUCCESS, ERROR vb.)
Hata TipietStringHata tipi (varsa)
İstek BaşlıklarıfcrhListAnahtar-değer çifti olarak istek başlıkları
İstek ParametrelerifcrpListAnahtar-değer çifti olarak sorgu parametreleri
İstek GövdesifcrbStringİstek gövde içeriği
Pipeline KonumucrStringLog politikasının yerleştirildiği pipeline bölgesi
Atama SeviyesiclStringLog politikasının bağlandığı hiyerarşi seviyesi

Örnek JSON Çıktı

{
  "@timestamp": "2026-03-31T12:30:45.123Z",
  "aci": "550e8400-e29b-41d4-a716-446655440000",
  "ei": "env-production-001",
  "api": "proxy-payment-api",
  "apn": "Payment API",
  "apmi": "method-create-payment",
  "apmn": "POST /payments",
  "uok": "merchant-api-key-123",
  "sc": 200,
  "rt": "SUCCESS",
  "fcrh": [
    { "k": "Content-Type", "v": "application/json" },
    { "k": "Authorization", "v": "Bearer eyJhbGciOi..." },
    { "k": "X-Request-ID", "v": "req-abc-123" }
  ],
  "fcrp": [
    { "k": "currency", "v": "TRY" },
    { "k": "lang", "v": "tr" }
  ],
  "fcrb": "{\"amount\": 150.00, \"merchantId\": \"M-001\"}",
  "cr": "FROM_CLIENT",
  "cl": "API_PROXY_METHOD"
}
Başlık ve parametre alanlarındaki her bir giriş k (key) ve v (value) çiftinden oluşur. Bu yapı Elasticsearch’te nested tip olarak indekslenir.

Pipeline Konumu (cr) Değerleri

DeğerAçıklama
FROM_CLIENTİstemciden gelen isteğin işlendiği ilk pipeline aşaması
TO_BACKENDİsteğin backend’e iletilmeden önceki son pipeline aşaması
FROM_BACKENDBackend yanıtının işlendiği ilk pipeline aşaması
TO_CLIENTYanıtın istemciye gönderilmeden önceki son pipeline aşaması

Atama Seviyesi (cl) Değerleri

DeğerAçıklama
API_PROXY_GROUPPolitika bir proxy grubuna bağlıdır; gruptaki tüm proxy’lere uygulanır
API_PROXYPolitika doğrudan bir API Proxy’ye bağlıdır
API_PROXY_METHODPolitika belirli bir API Proxy metoduna bağlıdır

Elasticsearch Entegrasyonu

Elasticsearch’te log politikası verileri için ayrı bir index template oluşturulmalıdır. Bu template standart API trafik log template’inden farklıdır ve yalnızca log politikasının gönderdiği alanları içerir.
Log politikası verileri için Elasticsearch index template’i ve ILM politikası Apinizer UI’dan otomatik oluşturulmaz. Aşağıdaki adımları Elasticsearch üzerinde manuel olarak uygulamanız gerekir.

Adım 1: ILM Politikası Oluşturma

Index yaşam döngüsü yönetimi için bir ILM politikası oluşturun. Aşağıdaki örnek 30 GB veya 1 günde rollover yapan ve 30 gün sonra silen bir politika oluşturur. Değerleri ihtiyacınıza göre ayarlayın.
PUT _ilm/policy/apinizer-log-policy-capture-ilm
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "30gb",
            "max_age": "1d"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

Adım 2: Index Template Oluşturma

Aşağıdaki komutu Elasticsearch Kibana Dev Tools veya curl kullanarak çalıştırın. Template data stream desteği içerir.
Template’teki alan tipleri, log politikasının gönderdiği JSON yapısıyla birebir eşleşmelidir. Alan tiplerini değiştirmeyin.
PUT _index_template/apinizer-log-policy-capture-template
{
  "index_patterns": ["apinizer-log-policy-capture*"],
  "data_stream": {},
  "template": {
    "settings": {
      "index": {
        "lifecycle": {
          "name": "apinizer-log-policy-capture-ilm"
        },
        "number_of_shards": 1,
        "number_of_replicas": 0,
        "refresh_interval": "5s"
      }
    },
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date",
          "format": "yyyy-MM-dd'T'HH:mm:ss.S'Z'||yyyy-MM-dd'T'HH:mm:ss.SS'Z'||yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
        },
        "aci": {
          "type": "keyword"
        },
        "ei": {
          "type": "keyword"
        },
        "api": {
          "type": "keyword"
        },
        "apn": {
          "type": "keyword"
        },
        "apmi": {
          "type": "keyword"
        },
        "apmn": {
          "type": "keyword"
        },
        "uok": {
          "type": "keyword",
          "ignore_above": 50
        },
        "sc": {
          "type": "short"
        },
        "rt": {
          "type": "keyword",
          "ignore_above": 7
        },
        "et": {
          "type": "keyword",
          "ignore_above": 75
        },
        "fcrh": {
          "type": "nested",
          "properties": {
            "k": {
              "type": "keyword"
            },
            "v": {
              "type": "keyword"
            }
          }
        },
        "fcrp": {
          "type": "nested",
          "properties": {
            "k": {
              "type": "keyword"
            },
            "v": {
              "type": "keyword"
            }
          }
        },
        "fcrb": {
          "type": "text"
        },
        "cr": {
          "type": "keyword"
        },
        "cl": {
          "type": "keyword"
        }
      }
    }
  }
}

Adım 3: Data Stream Oluşturma

Template oluşturulduktan sonra, ilk veri geldiğinde data stream otomatik oluşur. Manuel oluşturmak için:
PUT _data_stream/apinizer-log-policy-capture

Konnektör Yapılandırması

Elasticsearch konnektörünün Index Adı alanına apinizer-log-policy-capture girin. Bu isim, template’teki index_patterns ile eşleşmelidir.
Farklı bir index adı kullanmak istiyorsanız template’teki index_patterns alanını buna göre güncelleyin. Örneğin proje bazlı ayrıştırma için apinizer-log-policy-capture-proje-adi kullanabilirsiniz.

Veritabanı Entegrasyonu

Veritabanı konnektörü, her log politikası yakalamasını hedef ilişkisel veritabanındaki log_PolicyCapture tablosuna tek bir satır olarak yazar. Desteklenen veritabanı tipleri Oracle, MySQL/MariaDB, PostgreSQL ve SQL Server’dır. MongoDB için koleksiyon ilk yazımda otomatik oluşturulur — manuel kurulum gerekmez.
İlişkisel veritabanları için log_PolicyCapture tablosu otomatik oluşturulmaz — konnektörü etkinleştirmeden önce tabloyu manuel olarak oluşturmanız gerekir. Desteklenen her veritabanı tipi için CREATE TABLE komutu, önerilen indeksler ve bölümleme (partitioning) rehberi için bakınız: Apinizer Log Tabloları Oluşturma Komutları.
correlation_id kolonu aynı çağrının istek ve yanıt satırlarını birbirine bağlar. Log politikası birden fazla pipeline aşamasına yerleştirildiğinde (örneğin FROM_CLIENT ve TO_CLIENT), kayıtlar correlation_id üzerinden join edilerek bir işlem uçtan uca izlenebilir. Bu nedenle bu kolon üzerindeki indeks şiddetle önerilir.
Yüksek trafikli API’lerde, veritabanı yazma gecikmesinin istek pipeline’ını bloke etmemesi için log politikasını Asenkron modda yapılandırmanızı öneririz.

Gizlilik Ayarları

Log politikası gizlilik ayarları Politika seviyesinde gizlilik ayarları yapılandırarak hassas verilerin log kaydına yazılmadan önce işlenmesini sağlayabilirsiniz.
İşlemAçıklama
Maskeleme (Mask)Hassas veriyi kısmen gizler (ör: ****1234)
Silme (Delete)Hassas veriyi tamamen kaldırır
Hashleme (Hash)Hassas veriyi tek yönlü hash değerine dönüştürür
Şifreleme (Encrypt)Hassas veriyi şifreler
Gizlilik ayarları iki seviyede uygulanır: önce politika seviyesindeki ayarlar, sonra konnektör seviyesindeki ayarlar. Her iki seviye de etkinse, her ikisi de sırasıyla uygulanır.
Maskeleme, veri konnektörlere gönderilmeden önce uygulanır. Konnektör seviyesindeki gizlilik ayarları ayrı ve bağımsız olarak uygulanır. Bu özellik GDPR gibi veri koruma gereksinimlerini karşılamak için kullanılabilir.

Kullanım Senaryoları

SenaryoAçıklamaÖnerilen Mod
Dönüştürme öncesi/sonrası karşılaştırmaBir dönüştürme politikasından önce ve sonra log politikası ekleyerek mesaj değişikliklerini izlemeAsenkron
Hata ayıklama (Debug)Belirli bir politikanın girdi ve çıktısını incelemek için pipeline’a geçici log noktası eklemeSenkron
Denetim kaydıHassas API’lerde her isteğin tam kaydını tutmaAsenkron
Çoklu hedef loglamaAynı mesajı Elasticsearch ve Kafka’ya aynı anda göndermeAsenkron
Koşullu loglamaYalnızca belirli bir başlık değeri veya yol ile eşleşen istekleri loglamaAsenkron

İlgili Sayfalar

Politikayı Silme

Bu politikanın silinmesi ve kullanımda olduğu durumda yapılacak işlemler için Politika Nedir? sayfasına bakınız.

Politikayı Dışa/İçe Aktarma

Bu politikanın dışa aktarma adımları ve mevcut seçenekleri için Politika Nedir? sayfasına bakınız.

Politikayı API’ye Ekleme

Bu politikayı API’lere ekleme süreci için Politika Yönetimi sayfasındaki Akışa Politika Ekleme bölümüne bakınız.

Sonraki Adımlar

Script Politikası

Özel script ile veri dönüştürme

API Çağrısı Politikası

Pipeline içinde harici API çağrısı