[{"id":408,"title":" Apache APISIX - AISIX AI Gateway","content":"<div id=\"model-response-message-contentr_bc5f551856da52a0\" class=\"markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color stronger\" dir=\"ltr\" aria-busy=\"false\" aria-live=\"off\">\n<p data-path-to-node=\"0\"><strong data-path-to-node=\"0\" data-index-in-node=\"0\">AISIX<\/strong>, Apache APISIX projesinin arkas\u0131ndaki ekip olan <strong data-path-to-node=\"0\" data-index-in-node=\"54\">API7.ai<\/strong> taraf\u0131ndan geli\u015ftirilen, B&uuml;y&uuml;k Dil Modelleri (LLM) ve yapay zek&acirc; ajanlar\u0131 (AI Agents) i&ccedil;in &ouml;zel olarak tasarlanm\u0131\u015f <strong data-path-to-node=\"0\" data-index-in-node=\"177\">a&ccedil;\u0131k kaynakl\u0131 bir yapay zek&acirc; a\u011f ge&ccedil;ididir (AI Gateway)<\/strong>.<\/p>\n<p data-path-to-node=\"1\"><strong data-path-to-node=\"1\" data-index-in-node=\"0\">Rust dili ile s\u0131f\u0131rdan in\u015fa edilen<\/strong> bu proje, geleneksel API a\u011f ge&ccedil;itlerinin (API Gateway) yapay zek&acirc; trafik bi&ccedil;imlerine (&ouml;rne\u011fin ak\u0131\u015f\/streaming verileri, y&uuml;ksek kaynak t&uuml;ketimi, token bazl\u0131 &uuml;cretlendirmeler vb.) tam uyum sa\u011flayamamas\u0131 sorununu &ccedil;&ouml;zmek amac\u0131yla &uuml;retilmi\u015ftir.<\/p>\n<p data-path-to-node=\"2\">Projenin &ouml;ne &ccedil;\u0131kan temel &ouml;zellikleri ve sa\u011flad\u0131\u011f\u0131 avantajlar \u015funlard\u0131r:<\/p>\n<h3 data-path-to-node=\"3\">1. Tek API ile T&uuml;m Modellere Eri\u015fim (Unified API)<\/h3>\n<p data-path-to-node=\"4\">AISIX, arkadaki model sa\u011flay\u0131c\u0131s\u0131 ne olursa olsun (OpenAI, Anthropic, Google Gemini, AWS Bedrock, DeepSeek vb.) d\u0131\u015far\u0131ya <strong data-path-to-node=\"4\" data-index-in-node=\"121\">OpenAI ile uyumlu tek bir API<\/strong> sunar. Bu sayede kodunuzda kulland\u0131\u011f\u0131n\u0131z SDK'yi veya <code data-path-to-node=\"4\" data-index-in-node=\"204\">base_url<\/code> bilgisini de\u011fi\u015ftirmeden, sadece model ad\u0131n\u0131 de\u011fi\u015ftirerek farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131 aras\u0131nda ge&ccedil;i\u015f yapabilirsiniz. A\u011f ge&ccedil;idi, gelen istekleri ilgili servis sa\u011flay\u0131c\u0131s\u0131n\u0131n format\u0131na otomatik olarak d&ouml;n&uuml;\u015ft&uuml;r&uuml;r.<\/p>\n<h3 data-path-to-node=\"5\">2. Rust ile Y&uuml;ksek Performans<\/h3>\n<p data-path-to-node=\"6\">Geleneksel a\u011f ge&ccedil;itlerinin aksine AISIX, Rust dilinde yaz\u0131lm\u0131\u015f tek bir statik ikili dosya (static binary) olarak &ccedil;al\u0131\u015f\u0131r.<\/p>\n<ul data-path-to-node=\"7\">\n<li>\n<p data-path-to-node=\"7,0,0\"><strong data-path-to-node=\"7,0,0\" data-index-in-node=\"0\">D&uuml;\u015f&uuml;k Gecikme:<\/strong> Yan\u0131tlar\u0131n anl\u0131k &uuml;retildi\u011fi yapay zek&acirc; uygulamalar\u0131nda (SSE - Server-Sent Events ak\u0131\u015flar\u0131nda) gecikmeyi en aza indirir.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,1,0\"><strong data-path-to-node=\"7,1,0\" data-index-in-node=\"0\">Kilitlenmesiz Yap\u0131 (Lock-free Config):<\/strong> Sistem istekleri i\u015flerken konfig&uuml;rasyon de\u011fi\u015fikliklerini duraklama olmadan, an\u0131nda y&uuml;kleyebilir.<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"8\">3. Geli\u015fmi\u015f Trafik Kontrol&uuml; ve G&uuml;venlik (Guardrails)<\/h3>\n<p data-path-to-node=\"9\">Yapay zek&acirc; modellerinin \u015firket i&ccedil;i kullan\u0131m\u0131nda veya d\u0131\u015far\u0131ya sunulmas\u0131nda ihtiya&ccedil; duyulan kurumsal kontroller yerle\u015fik olarak gelir:<\/p>\n<ul data-path-to-node=\"10\">\n<li>\n<p data-path-to-node=\"10,0,0\"><strong data-path-to-node=\"10,0,0\" data-index-in-node=\"0\">G&uuml;venlik Duvarlar\u0131 (Guardrails):<\/strong> Modele girdi (input) g&ouml;nderilmeden &ouml;nce veya modelden &ccedil;\u0131kt\u0131 (output) al\u0131nd\u0131ktan sonra g&uuml;venlik politikalar\u0131n\u0131 &ccedil;al\u0131\u015ft\u0131r\u0131r. \u0130stem d\u0131\u015f\u0131 veya zararl\u0131 i&ccedil;erikleri, veri s\u0131z\u0131nt\u0131lar\u0131n\u0131 (PII) engelleyebilir.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,1,0\"><strong data-path-to-node=\"10,1,0\" data-index-in-node=\"0\">B&uuml;t&ccedil;e ve H\u0131z S\u0131n\u0131rlar\u0131 (Rate Limiting &amp; Budgets):<\/strong> Token bazl\u0131 maliyet kontrol&uuml; yapman\u0131z\u0131 sa\u011flar. Belirlenen harcama limitlerine ula\u015f\u0131ld\u0131\u011f\u0131nda uyar\u0131 verebilir veya trafi\u011fi durdurabilir.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,2,0\"><strong data-path-to-node=\"10,2,0\" data-index-in-node=\"0\">&Ouml;nbelle\u011fe Alma (Caching):<\/strong> Benzer yapay zek&acirc; isteklerini &ouml;nbelle\u011fe alarak hem yan\u0131t s&uuml;resini d&uuml;\u015f&uuml;r&uuml;r hem de API maliyetlerini ciddi oranda azalt\u0131r.<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"11\">4. G&ouml;zlemlenebilirlik (Observability)<\/h3>\n<p data-path-to-node=\"12\">Yapay zek&acirc; trafi\u011finin ne kadar token harcad\u0131\u011f\u0131n\u0131, yan\u0131t s&uuml;relerini, hata oranlar\u0131n\u0131 ve harcanan b&uuml;t&ccedil;eyi anl\u0131k olarak izlemenizi sa\u011flar. OpenTelemetry (OTLP), Datadog veya nesne depolama (Object Storage) sistemlerine log ve izleme (trace) verilerini aktarabilir.<\/p>\n<h3 data-path-to-node=\"13\">5. Mimarisi (Data Plane &amp; Control Plane)<\/h3>\n<p data-path-to-node=\"14\">AISIX, mimari olarak iki ba\u011f\u0131ms\u0131z par&ccedil;adan olu\u015fur:<\/p>\n<ul data-path-to-node=\"15\">\n<li>\n<p data-path-to-node=\"15,0,0\"><strong data-path-to-node=\"15,0,0\" data-index-in-node=\"0\">Veri D&uuml;zlemi (Data Plane):<\/strong> \u0130stekleri i\u015fleyen, Rust ile yaz\u0131lm\u0131\u015f, durumsuz (stateless) ve yatayda kolayca &ouml;l&ccedil;eklenebilen hafif proxy katman\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"15,1,0\"><strong data-path-to-node=\"15,1,0\" data-index-in-node=\"0\">Kontrol D&uuml;zlemi (Control Plane):<\/strong> Dinamik konfig&uuml;rasyonu y&ouml;netmek i&ccedil;in <strong data-path-to-node=\"15,1,0\" data-index-in-node=\"70\">etcd<\/strong> altyap\u0131s\u0131n\u0131 kullan\u0131r. Y&ouml;netici API'si (Admin API) arac\u0131l\u0131\u011f\u0131yla modeller, API anahtarlar\u0131 ve kurallar a\u011f ge&ccedil;idi yeniden ba\u015flat\u0131lmadan ger&ccedil;ek zamanl\u0131 olarak g&uuml;ncellenebilir. \u0130&ccedil;erisinde React tabanl\u0131 bir y&ouml;netim paneli ve modelleri test etmek i&ccedil;in bir <em data-path-to-node=\"15,1,0\" data-index-in-node=\"324\">Chat Playground<\/em> bar\u0131nd\u0131r\u0131r.<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"16\">Lisans ve Bulut Entegrasyonu<\/h3>\n<ul data-path-to-node=\"17\">\n<li>\n<p data-path-to-node=\"17,0,0\"><strong data-path-to-node=\"17,0,0\" data-index-in-node=\"0\">Apache-2.0 Lisans\u0131:<\/strong> Projenin &ccedil;ekirdek kodlar\u0131 (Data Plane) tamamen a&ccedil;\u0131k kaynakl\u0131d\u0131r, &uuml;cretsiz olarak kendi sunucular\u0131n\u0131zda (Self-hosted) veya Kubernetes &uuml;zerinde &ccedil;al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,1,0\"><strong data-path-to-node=\"17,1,0\" data-index-in-node=\"0\">AISIX Cloud:<\/strong> Geli\u015fmi\u015f ekip y&ouml;netimi, merkezi b&uuml;t&ccedil;elendirme, denetim g&uuml;nl&uuml;kleri (audit logs) ve haz\u0131r bir kontrol paneli aray&uuml;z&uuml; isteyen i\u015fletmeler i&ccedil;in API7, \"AISIX Cloud\" ad\u0131nda y&ouml;netilen bir SaaS (bulut) s&uuml;r&uuml;m&uuml; de sunmaktad\u0131r.<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"18\"><strong data-path-to-node=\"18\" data-index-in-node=\"0\">GitHub Sayfas\u0131:<\/strong> <!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><a class=\"ng-star-inserted\" href=\"https:\/\/github.com\/api7\/aisix\" target=\"_blank\" rel=\"noopener\" data-hveid=\"0\" data-ved=\"0CAAQ_4QMahgKEwjK-LDRu82VAxUAAAAAHQAAAAAQhgE\">github.com\/api7\/aisix<\/a><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><\/p>\n<p data-path-to-node=\"18\">&nbsp;<\/p>\n<div id=\"model-response-message-contentr_23853f93a4640822\" class=\"markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color stronger\" dir=\"ltr\" aria-busy=\"false\" aria-live=\"polite\">\n<p data-path-to-node=\"0\">AISIX a\u011f ge&ccedil;idinin ger&ccedil;ek hayatta nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 anlamak i&ccedil;in basit bir <strong data-path-to-node=\"0\" data-index-in-node=\"79\">Senaryo<\/strong> ve bu senaryoya ait <strong data-path-to-node=\"0\" data-index-in-node=\"107\">\u0130stek\/Yan\u0131t<\/strong> &ouml;rne\u011fine g&ouml;z atal\u0131m.<\/p>\n<h3 data-path-to-node=\"1\">&Ouml;rnek Senaryo: &Ccedil;oklu Yapay Zek&acirc; Sa\u011flay\u0131c\u0131s\u0131 Kullan\u0131m\u0131 (Model Ge&ccedil;i\u015fi)<\/h3>\n<p data-path-to-node=\"2\">\u015eirketiniz b&uuml;nyesinde bir chatbot geli\u015ftirdi\u011finizi ve uygulaman\u0131z\u0131n normalde <strong data-path-to-node=\"2\" data-index-in-node=\"77\">OpenAI (GPT-4o)<\/strong> kulland\u0131\u011f\u0131n\u0131 d&uuml;\u015f&uuml;nelim. Ancak maliyetleri d&uuml;\u015f&uuml;rmek veya alternatifleri test etmek i&ccedil;in baz\u0131 istekleri <strong data-path-to-node=\"2\" data-index-in-node=\"195\">Google Gemini<\/strong> veya <strong data-path-to-node=\"2\" data-index-in-node=\"214\">DeepSeek<\/strong> modeline y&ouml;nlendirmek istiyorsunuz.<\/p>\n<p data-path-to-node=\"3\">AISIX olmadan, kodunuza her iki sa\u011flay\u0131c\u0131n\u0131n da SDK'sini eklemeniz ve gelen iste\u011fe g&ouml;re farkl\u0131 kod bloklar\u0131 &ccedil;al\u0131\u015ft\u0131rman\u0131z gerekir. <strong data-path-to-node=\"3\" data-index-in-node=\"131\">AISIX ile ise kodunuzu hi&ccedil; de\u011fi\u015ftirmeden<\/strong> sadece a\u011f ge&ccedil;idine g&ouml;nderdi\u011finiz <code data-path-to-node=\"3\" data-index-in-node=\"205\">model<\/code> parametresini de\u011fi\u015ftirmeniz yeterlidir.<\/p>\n<h3 data-path-to-node=\"5\">1. AISIX Yap\u0131land\u0131rmas\u0131 (Control Plane \/ Admin API)<\/h3>\n<p data-path-to-node=\"6\">\u0130lk olarak AISIX'e arkadaki yapay zek&acirc; sa\u011flay\u0131c\u0131lar\u0131n\u0131 (Upstreams) ve API anahtarlar\u0131n\u0131 bir kez tan\u0131mlars\u0131n\u0131z. (Bu i\u015flem genellikle AISIX aray&uuml;z&uuml;nden veya API ile yap\u0131l\u0131r):<\/p>\n<ul data-path-to-node=\"7\">\n<li>\n<p data-path-to-node=\"7,0,0\"><code data-path-to-node=\"7,0,0\" data-index-in-node=\"0\">openai-backend<\/code> -&gt; OpenAI API anahtar\u0131n\u0131z ile ba\u011fl\u0131.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,1,0\"><code data-path-to-node=\"7,1,0\" data-index-in-node=\"0\">gemini-backend<\/code> -&gt; Google AI Studio anahtar\u0131n\u0131z ile ba\u011fl\u0131.<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"9\">2. Uygulaman\u0131zdan \u0130stek G&ouml;nderme (Client Request)<\/h3>\n<p data-path-to-node=\"10\">Uygulaman\u0131z (kodunuz), OpenAI SDK'sini kullanmaya devam eder ancak istekleri direkt OpenAI'a de\u011fil, kendi sunucunuzda &ccedil;al\u0131\u015fan <strong data-path-to-node=\"10\" data-index-in-node=\"126\">AISIX<\/strong> a\u011f ge&ccedil;idine y&ouml;nlendirir (<code data-path-to-node=\"10\" data-index-in-node=\"157\">base_url<\/code> de\u011fi\u015ftirilir).<\/p>\n<h4 data-path-to-node=\"11\">&Ouml;rnek \u0130stek (cURL ile):<\/h4>\n<p data-path-to-node=\"12\">A\u015fa\u011f\u0131daki istekte dikkat ederseniz <code data-path-to-node=\"12\" data-index-in-node=\"35\">model<\/code> olarak <code data-path-to-node=\"12\" data-index-in-node=\"48\">gemini-2.5-flash<\/code> talep ediliyor ancak istek format\u0131 tamamen OpenAI standartlar\u0131ndad\u0131r (Chat Completions API).<\/p>\n<!----><!----><!----><!----><!----><!----><!----><!---->\n<div class=\"code-block ng-tns-c4069305417-22 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjK-LDRu82VAxUAAAAAHQAAAAAQlQE\"><!---->\n<div class=\"formatted-code-block-internal-container ng-tns-c4069305417-22\">\n<div class=\"animated-opacity ng-tns-c4069305417-22\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c4069305417-22 ng-star-inserted\"><span class=\"ng-tns-c4069305417-22\">Bash<\/span>\n<div class=\"buttons ng-tns-c4069305417-22 ng-star-inserted\"><!----><!----><button class=\"mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted\" aria-label=\"Kodu indir\"><!----><!----><!----><!----><\/button><!----><!----><!----><!----><!----><!----><!----><!----><!----><button class=\"mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted\" aria-label=\"Kodu kopyala\"><!----><!----><!----><!----><\/button><!----><!----><!----><!----><!----><!----><\/div>\n<!----><!----><\/div>\n<!---->\n<pre class=\"ng-tns-c4069305417-22\"><code class=\"code-container formatted ng-tns-c4069305417-22\" role=\"text\" data-test-id=\"code-content\">curl http:\/\/localhost:9080\/v1\/chat\/completions \\\n  -H <span class=\"hljs-string\">\"Content-Type: application\/json\"<\/span> \\\n  -H <span class=\"hljs-string\">\"Authorization: Bearer aisix-ornek-api-anahtari\"<\/span> \\\n  -d <span class=\"hljs-string\">'{\n    \"model\": \"gemini-2.5-flash\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": \"Rust programlama dili neden bu kadar pop&uuml;ler?\"\n      }\n    ],\n    \"stream\": false\n  }'<\/span>\n<\/code><\/pre>\n<!----><\/div>\n<\/div>\n<\/div>\n<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->\n<h3 data-path-to-node=\"15\">3. Arka Planda Ne Oluyor? (AISIX'in G&ouml;revi)<\/h3>\n<ol start=\"1\" data-path-to-node=\"16\">\n<li>\n<p data-path-to-node=\"16,0,0\"><strong data-path-to-node=\"16,0,0\" data-index-in-node=\"0\">\u0130ste\u011fi Kar\u015f\u0131lama ve Do\u011frulama:<\/strong> AISIX iste\u011fi <code data-path-to-node=\"16,0,0\" data-index-in-node=\"44\">9080<\/code> portundan al\u0131r. <code data-path-to-node=\"16,0,0\" data-index-in-node=\"65\">aisix-ornek-api-anahtari<\/code> bilgisini kontrol eder. E\u011fer bu kullan\u0131c\u0131n\u0131n (veya uygulaman\u0131n) token b&uuml;t&ccedil;esi dolduysa iste\u011fi an\u0131nda reddeder (Maliyet Kontrol&uuml;).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"16,1,0\"><strong data-path-to-node=\"16,1,0\" data-index-in-node=\"0\">&Ouml;nbellek Kontrol&uuml; (Caching):<\/strong> Ayn\u0131 soru daha &ouml;nce sorulduysa, arkadaki yapay zek&acirc; modeline hi&ccedil; gitmeden kay\u0131tl\u0131 yan\u0131t\u0131 d&ouml;ner (H\u0131z ve Tasarruf).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"16,2,0\"><strong data-path-to-node=\"16,2,0\" data-index-in-node=\"0\">Protokol D&ouml;n&uuml;\u015ft&uuml;rme (Translation):<\/strong> \u0130stek &ouml;nbellekte yoksa, AISIX <code data-path-to-node=\"16,2,0\" data-index-in-node=\"65\">gemini-2.5-flash<\/code> modelinin Google Gemini'a ait oldu\u011funu anlar. OpenAI format\u0131ndaki bu JSON verisini otomatik olarak Google Gemini API'sinin bekledi\u011fi formata d&ouml;n&uuml;\u015ft&uuml;r&uuml;r.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"16,3,0\"><strong data-path-to-node=\"16,3,0\" data-index-in-node=\"0\">G&uuml;venlik Kontrol&uuml; (Guardrails):<\/strong> Kullan\u0131c\u0131n\u0131n sordu\u011fu soruda \u015firket d\u0131\u015f\u0131na s\u0131zmamas\u0131 gereken bir veri (kredi kart\u0131, TCKN vb.) olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"16,4,0\"><strong data-path-to-node=\"16,4,0\" data-index-in-node=\"0\">\u0130ste\u011fi \u0130letme:<\/strong> \u0130ste\u011fi ger&ccedil;ek Google Gemini sunucular\u0131na iletir.<\/p>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"18\">4. Yan\u0131t\u0131n \u0130letilmesi (Response)<\/h3>\n<p data-path-to-node=\"19\">Google Gemini'dan gelen yan\u0131t\u0131 alan AISIX, bu yan\u0131t\u0131 tekrar <strong data-path-to-node=\"19\" data-index-in-node=\"60\">OpenAI format\u0131na d&ouml;n&uuml;\u015ft&uuml;rerek<\/strong> uygulaman\u0131za kusursuz bir \u015fekilde teslim eder:<\/p>\n<!----><!----><!----><!----><!----><!----><!----><!---->\n<div class=\"code-block ng-tns-c4069305417-23 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjK-LDRu82VAxUAAAAAHQAAAAAQlgE\"><!---->\n<div class=\"formatted-code-block-internal-container ng-tns-c4069305417-23\">\n<div class=\"animated-opacity ng-tns-c4069305417-23\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c4069305417-23 ng-star-inserted\"><span class=\"ng-tns-c4069305417-23\">JSON<\/span>\n<div class=\"buttons ng-tns-c4069305417-23 ng-star-inserted\"><!----><!----><button class=\"mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted\" aria-label=\"Kodu indir\"><!----><!----><!----><!----><\/button><!----><!----><!----><!----><!----><!----><!----><!----><!----><button class=\"mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted\" aria-label=\"Kodu kopyala\"><!----><!----><!----><!----><\/button><!----><!----><!----><!----><!----><!----><\/div>\n<!----><!----><\/div>\n<!---->\n<pre class=\"ng-tns-c4069305417-23\"><code class=\"code-container formatted ng-tns-c4069305417-23\" role=\"text\" data-test-id=\"code-content\">{\n  <span class=\"hljs-attr\">\"id\"<\/span>: <span class=\"hljs-string\">\"chatcmpl-aisix-unique-id\"<\/span>,\n  <span class=\"hljs-attr\">\"object\"<\/span>: <span class=\"hljs-string\">\"chat.completion\"<\/span>,\n  <span class=\"hljs-attr\">\"created\"<\/span>: <span class=\"hljs-number\">1717113600<\/span>,\n  <span class=\"hljs-attr\">\"model\"<\/span>: <span class=\"hljs-string\">\"gemini-2.5-flash\"<\/span>,\n  <span class=\"hljs-attr\">\"choices\"<\/span>: [\n    {\n      <span class=\"hljs-attr\">\"index\"<\/span>: <span class=\"hljs-number\">0<\/span>,\n      <span class=\"hljs-attr\">\"message\"<\/span>: {\n        <span class=\"hljs-attr\">\"role\"<\/span>: <span class=\"hljs-string\">\"assistant\"<\/span>,\n        <span class=\"hljs-attr\">\"content\"<\/span>: <span class=\"hljs-string\">\"Rust, bellek g&uuml;venli\u011fini (memory safety) &ccedil;al\u0131\u015fma zaman\u0131 (runtime) yerine derleme zaman\u0131nda (compile-time) garantiledi\u011fi ve y&uuml;ksek performans sundu\u011fu i&ccedil;in pop&uuml;lerdir...\"<\/span>\n      },\n      <span class=\"hljs-attr\">\"finish_reason\"<\/span>: <span class=\"hljs-string\">\"stop\"<\/span>\n    }\n  ],\n  <span class=\"hljs-attr\">\"usage\"<\/span>: {\n    <span class=\"hljs-attr\">\"prompt_tokens\"<\/span>: <span class=\"hljs-number\">12<\/span>,\n    <span class=\"hljs-attr\">\"completion_tokens\"<\/span>: <span class=\"hljs-number\">35<\/span>,\n    <span class=\"hljs-attr\">\"total_tokens\"<\/span>: <span class=\"hljs-number\">47<\/span>\n  }\n}\n<\/code><\/pre>\n<!----><\/div>\n<\/div>\n<\/div>\n<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->\n<h3 data-path-to-node=\"21\">&Ouml;zetle Bu &Ouml;rnek Ne Sa\u011flad\u0131?<\/h3>\n<p data-path-to-node=\"22\">Yaz\u0131l\u0131m ekibiniz kod taban\u0131nda tek bir sat\u0131r de\u011fi\u015fiklik yapmadan, sadece a\u011f ge&ccedil;idine g&ouml;nderilen istek parametresini de\u011fi\u015ftirerek OpenAI'dan Gemini'a (veya desteklenen di\u011fer onlarca modele) an\u0131nda ge&ccedil;i\u015f yapabildi. Bu esnada harcanan token'lar (<code data-path-to-node=\"22\" data-index-in-node=\"243\">usage<\/code> objesi) AISIX taraf\u0131ndan panelde raporlanmak &uuml;zere arka planda kaydedildi.<\/p>\n<\/div>\n<\/div>","excerpt":"AISIX, Apache APISIX projesinin arkas\u0131ndaki ekip olan API7.ai taraf\u0131ndan geli\u015ftirilen, B\u00fcy\u00fck Dil Modelleri (LLM) ve yapay zek\u00e2 ajanlar\u0131 (AI Agents) i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f a\u00e7\u0131k kaynakl\u0131 bir yapay zek\u00e2 a\u011f ge\u00e7ididir (AI Gateway).","created_at":"2026-07-12 18:43:40","updated_at":"2026-09-23 19:26:27","category_id":9,"view_count":324,"reading_time":7,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2026-07-12 15:43:40","featured_image":"\/uploads\/images\/2026\/07\/6a53b61a3bcbf_1783871002.jpg","slug":"apache-apisix-aisix-ai-gateway","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"},{"id":404,"title":"llm-checker ile Do\u011fru LLM'i An\u0131nda Bul","content":"<p class=\"lead\">Her ge&ccedil;en g&uuml;n onlarca yeni LLM piyasaya &ccedil;\u0131k\u0131yor. GPT-4o mu, Claude mu, Llama m\u0131, Gemini mi? Bu soruya cevap bulmak art\u0131k tam bir u\u011fra\u015f haline geldi.&nbsp;<strong>llm-checker<\/strong>, terminal &uuml;zerinden &ccedil;al\u0131\u015fan hafif bir CLI arac\u0131d\u0131r ve sana do\u011fru modeli tavsiye etmek i&ccedil;in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h2>1. Kurulum: Global Y&uuml;kleme<\/h2>\n<p>\u0130lk ad\u0131m, paketi npm arac\u0131l\u0131\u011f\u0131yla global olarak y&uuml;klemek. B&ouml;ylece sisteminizde herhangi bir dizinden do\u011frudan &ccedil;a\u011f\u0131rabilirsiniz:<\/p>\n<pre class=\"language-markup\"><code>C:\\Users\\OnderL&gt;npm install -g llm-checker<\/code><\/pre>\n<p>Buradaki&nbsp;<code>-g<\/code>&nbsp;bayra\u011f\u0131 (global flag), paketi yaln\u0131zca mevcut proje klas&ouml;r&uuml;ne de\u011fil, t&uuml;m sisteme y&uuml;kler. Bu sayede&nbsp;<code>llm-checker<\/code> komutunu istedi\u011fin her yerden &ccedil;al\u0131\u015ft\u0131rabilirsin.<\/p>\n<p><em><strong>\u0130pucu:<\/strong>&nbsp;Windows'ta kurulum s\u0131ras\u0131nda&nbsp;\"permission denied\"&nbsp;hatas\u0131 al\u0131yorsan, terminali Y&ouml;netici olarak &ccedil;al\u0131\u015ft\u0131r (Run as Administrator). macOS\/Linux'ta ise komutun ba\u015f\u0131na&nbsp;<code>sudo<\/code> ekle.<\/em><\/p>\n<p>&Ouml;rnek &Ccedil;\u0131kt\u0131&nbsp;<\/p>\n<p><em><img src=\"..\/..\/..\/uploads\/images\/2026\/03\/69c0f685176c3_1774253701.png\"><\/em><\/p>\n<p><em><img src=\"..\/..\/..\/uploads\/images\/2026\/03\/69c0f6a6564a1_1774253734.png\"><\/em><\/p>\n<h2>2. Tavsiye Modu: recommend<\/h2>\n<p>Kurulum tamamland\u0131ktan sonra as\u0131l sihir ba\u015fl\u0131yor.&nbsp;<code>recommend<\/code> alt komutu, kullan\u0131m senaryona g&ouml;re hangi LLM'in sana en uygun oldu\u011funu analiz eder:<\/p>\n<p>&nbsp;<\/p>\n<p>Ara&ccedil; sana birka&ccedil; soru sorar; b&uuml;t&ccedil;en, gecikme hassasiyetin, ba\u011flam penceresi ihtiyac\u0131n ve birincil kullan\u0131m senaryonu gibi fakt&ouml;rler &uuml;zerinden bir skor hesaplar ve en uygun modeli s\u0131ralar.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ad\u0131m Ad\u0131m Kullan\u0131m Ak\u0131\u015f\u0131<\/h2>\n<ol class=\"step-list\">\n<li>\n<div class=\"step-num\">Node.js &amp; npm'nin Kurulu Oldu\u011fundan Emin Ol<\/div>\n<div class=\"step-content\">\n<p>Terminalde&nbsp;<code>node -v<\/code>&nbsp;ve&nbsp;<code>npm -v<\/code>&nbsp;&ccedil;al\u0131\u015ft\u0131r. Her ikisi de s&uuml;r&uuml;m numaras\u0131 d&ouml;nd&uuml;r&uuml;yorsa haz\u0131rs\u0131n.<\/p>\n<\/div>\n<\/li>\n<li>\n<div class=\"step-content\">\n<h4>Global Kurulum Yap<\/h4>\n<p><code>npm install -g llm-checker<\/code>&nbsp;komutunu &ccedil;al\u0131\u015ft\u0131r; kurulum birka&ccedil; saniye s&uuml;rer.<\/p>\n<\/div>\n<\/li>\n<li>\n<div class=\"step-content\">\n<h4>recommend Komutunu &Ccedil;al\u0131\u015ft\u0131r<\/h4>\n<p><code>llm-checker recommend<\/code>&nbsp;yaz\u0131p Enter'a bas. Kar\u015f\u0131na &ccedil;\u0131kan sorulara d&uuml;r&uuml;st&ccedil;e cevap ver.<\/p>\n<\/div>\n<\/li>\n<li>\n<div class=\"step-content\">\n<h4>Sonu&ccedil;lar\u0131 De\u011ferlendir<\/h4>\n<p>Ara&ccedil; sana s\u0131ral\u0131 bir model listesi ve her model i&ccedil;in skor, fiyat ve notlar sunar.<\/p>\n<\/div>\n<\/li>\n<li>\n<div class=\"step-content\">\n<h4>Modeli Entegre Et<\/h4>\n<p>Tavsiye edilen modelin API'sini projenize ekleyerek geli\u015ftirmeye ba\u015flayabilirsin.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ekstra Komutlar<\/h2>\n<p>Sadece&nbsp;<code>recommend<\/code> ile s\u0131n\u0131rl\u0131 de\u011fil. Paketin sundu\u011fu di\u011fer faydal\u0131 komutlar:<\/p>\n<pre class=\"language-markup\"><code>llm-checker list\n&rarr; Desteklenen t&uuml;m modelleri listeler\nllm-checker compare gpt-4o claude-sonnet\n&rarr; \u0130ki modeli yan yana kar\u015f\u0131la\u015ft\u0131r\u0131r\nllm-checker --help\n&rarr; T&uuml;m se&ccedil;enekleri ve bayraklar\u0131 g&ouml;sterir<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>&Ouml;zet Olarak<\/h3>\n<p>\u0130ki komutla &mdash;&nbsp;<code>npm install -g llm-checker<\/code>&nbsp;ve&nbsp;<code>llm-checker recommend<\/code> &mdash; y&uuml;zlerce LLM aras\u0131ndaki kaostan kurtulabilirsin. Bir sonraki projen i&ccedil;in hangi modeli se&ccedil;ece\u011fini art\u0131k terminal sana s&ouml;yl&uuml;yor.<\/p>\n<p><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">llm-checker<\/code> fikir olarak g&uuml;zel, ama bu &ccedil;\u0131kt\u0131 <strong>g&uuml;venilir de\u011fil<\/strong>. Model veritaban\u0131 hatal\u0131, embedding\/generative ayr\u0131m\u0131 yapam\u0131yor. arac\u0131n potansiyeli var ama \u015fu an <strong>kritik do\u011fruluk sorunlar\u0131<\/strong> mevcut. &ouml;nerileri k&ouml;r&uuml; k&ouml;r&uuml;ne uygulamadan &ouml;nce Ollama Hub'dan do\u011frulamalar\u0131n\u0131 &ouml;neriyorum.<\/p>\n<p>Do\u011frudan \"hardware scan &rarr; model &ouml;ner\" format\u0131nda llm-checker'a alternatif &ccedil;ok az. Ama i\u015flevsel alternatifler var:<\/p>\n<hr>\n<h2>En \u0130yi Alternatifler<\/h2>\n<h3>1. LM Studio (GUI &mdash; En G&uuml;&ccedil;l&uuml; Alternatif)<\/h3>\n<p>Donan\u0131m\u0131 otomatik tespit edip optimize eden, Hugging Face'den model arama\/indirme ve g&ouml;rsel performans g&ouml;stergeleri sunan bir aray&uuml;ze sahip. llm-checker'\u0131n yapt\u0131\u011f\u0131n\u0131 GUI &uuml;zerinden &ccedil;ok daha g&uuml;venilir yap\u0131yor. Windows'ta Intel Arc GPU'lar\u0131 da Vulkan offloading ile destekliyor &mdash; senin sistemin i&ccedil;in &ouml;nemli bir art\u0131.<\/p>\n<pre><code>lmstudio.ai &rarr; indir &rarr; Hardware-aware model browser\n<\/code><\/pre>\n<hr>\n<h3>2. Ollama (CLI &mdash; Ama Farkl\u0131 Bir Ama&ccedil;)<\/h3>\n<p>Docker'\u0131 and\u0131ran tasar\u0131m\u0131yla, modeli ismiyle &ccedil;ekip tek komutla &ccedil;al\u0131\u015ft\u0131rabiliyorsun; OpenAI uyumlu yerel API sunuyor. Model &ouml;nermez ama &ouml;nerdikten sonra &ccedil;al\u0131\u015ft\u0131rmak i&ccedil;in standart.<\/p>\n<hr>\n<h3>3. GPT4All<\/h3>\n<p>Terminal veya GUI &uuml;zerinden &ccedil;al\u0131\u015fan, donan\u0131m\u0131 okuyup uyumlu modelleri filtreleyen hafif bir ara&ccedil;. llm-checker'a en yak\u0131n ruh hali bu.<\/p>\n<hr>\n<h2>D&uuml;r&uuml;st Kar\u015f\u0131la\u015ft\u0131rma<\/h2>\n<table>\n<thead>\n<tr>\n<th>Ara&ccedil;<\/th>\n<th>Model &Ouml;neri<\/th>\n<th>Donan\u0131m Okuma<\/th>\n<th>G&uuml;venilirlik<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>llm-checker<\/td>\n<td>\u2705 Var<\/td>\n<td>\u2705 Var<\/td>\n<td>\u26a0\ufe0f Hatal\u0131 sonu&ccedil;lar<\/td>\n<\/tr>\n<tr>\n<td>LM Studio<\/td>\n<td>\u2705 Var<\/td>\n<td>\u2705 Var<\/td>\n<td>\u2705 G&uuml;venilir<\/td>\n<\/tr>\n<tr>\n<td>GPT4All<\/td>\n<td>K\u0131smi<\/td>\n<td>\u2705 Var<\/td>\n<td>\u2705 G&uuml;venilir<\/td>\n<\/tr>\n<tr>\n<td>Ollama<\/td>\n<td>\u274c Yok<\/td>\n<td>K\u0131smi<\/td>\n<td>\u2705 G&uuml;venilir<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<p>&nbsp;<\/p>\n<\/div>\n<\/li>\n<\/ol>","excerpt":"iki basit terminal komutuyla y\u00fczlerce dil modelini kar\u015f\u0131la\u015ft\u0131r, ihtiyac\u0131na en uygun olan\u0131 bul.","created_at":"2026-03-23 11:09:15","updated_at":"2026-09-23 20:00:49","category_id":9,"view_count":677,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2026-03-23 08:09:36","featured_image":"\/uploads\/images\/2026\/03\/69c0f6e3ee119_1774253795.png","slug":"llm-checker-ile-dogru-llm-i-aninda-bul","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"},{"id":383,"title":"Windows Sunucularda G\u00fcvenlik Analizi: Kullan\u0131c\u0131 Oturumlar\u0131n\u0131 \u0130zleme ve Raporlama","content":"<div id=\"model-response-message-contentr_9badafa2c860b643\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\" aria-live=\"polite\" aria-busy=\"false\">\n<p data-path-to-node=\"3\">&nbsp;<\/p>\n<p data-path-to-node=\"4\">Bu yaz\u0131m\u0131zda, Windows sunucular\u0131n\u0131zda kullan\u0131c\u0131 giri\u015flerini analiz etmek i&ccedil;in kullanabilece\u011finiz profesyonel y&ouml;ntemleri ele al\u0131yoruz.<\/p>\n<h3 data-path-to-node=\"5\">1. Event Viewer: Sistem G&uuml;nl&uuml;klerinin \"Kara Kutusu\"<\/h3>\n<p data-path-to-node=\"6\">Windows tabanl\u0131 sistemlerde ger&ccedil;ekle\u015fen her ba\u015far\u0131l\u0131 veya ba\u015far\u0131s\u0131z giri\u015f denemesi, G&uuml;venlik (Security) g&uuml;nl&uuml;klerine kaydedilir. Bir siber g&uuml;venlik analizi veya denetim s\u0131ras\u0131nda bakman\u0131z gereken ilk yer buras\u0131d\u0131r.<\/p>\n<ul data-path-to-node=\"7\">\n<li>\n<p data-path-to-node=\"7,0,0\"><strong data-path-to-node=\"7,0,0\" data-index-in-node=\"0\">Yol:<\/strong> <code data-path-to-node=\"7,0,0\" data-index-in-node=\"5\">Event Viewer &gt; Windows Logs &gt; Security<\/code><\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,1,0\"><strong data-path-to-node=\"7,1,0\" data-index-in-node=\"0\">Filtreleme:<\/strong> Sa\u011f paneldeki \"Filter Current Log\" se&ccedil;ene\u011fine t\u0131klayarak <strong data-path-to-node=\"7,1,0\" data-index-in-node=\"69\">Event ID: 4624<\/strong> (Success Logon) kodunu arat\u0131n.<\/p>\n<\/li>\n<\/ul>\n<p>Kritik \u0130pucu: Logon Type Parametresi<\/p>\n<p>ID 4624 tek ba\u015f\u0131na yeterli de\u011fildir. Detaylar k\u0131sm\u0131ndaki \"Logon Type\" verisi, giri\u015fin t&uuml;r&uuml;n&uuml; s&ouml;yler:<\/p>\n<ul data-path-to-node=\"9\">\n<li>\n<p data-path-to-node=\"9,0,0\"><strong data-path-to-node=\"9,0,0\" data-index-in-node=\"0\">Type 2:<\/strong> Fiziksel klavye ve monit&ouml;r ba\u015f\u0131ndaki giri\u015f.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"9,1,0\"><strong data-path-to-node=\"9,1,0\" data-index-in-node=\"0\">Type 3:<\/strong> A\u011f &uuml;zerinden (dosya payla\u015f\u0131m\u0131 gibi) eri\u015fim.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"9,2,0\"><strong data-path-to-node=\"9,2,0\" data-index-in-node=\"0\">Type 10:<\/strong> En kritik olan\u0131d\u0131r; Uzak Masa&uuml;st&uuml; (RDP) ba\u011flant\u0131s\u0131n\u0131 temsil eder.<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"10\">2. PowerShell ile H\u0131zl\u0131 Raporlama<\/h3>\n<p data-path-to-node=\"11\">Aray&uuml;z i&ccedil;inde kaybolmak yerine, PowerShell'in g&uuml;c&uuml;n&uuml; kullanarak son giri\u015f yapan kullan\u0131c\u0131lar\u0131 saniyeler i&ccedil;inde listeleyebilirsiniz. A\u015fa\u011f\u0131daki komut, sunucuya en son giri\u015f yapan 5 ba\u015far\u0131l\u0131 oturum a&ccedil;ma i\u015flemini kullan\u0131c\u0131 ad\u0131 ve zaman damgas\u0131yla getirir:<\/p>\n<!----><!----><!----><!----><!----><!----><!---->\n<div class=\"code-block ng-tns-c2721585414-85 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahcKEwiqgOqIqIuSAxUAAAAAHQAAAAAQbg\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2721585414-85 ng-star-inserted\"><span class=\"ng-tns-c2721585414-85\">PowerShell<\/span>\n<div class=\"buttons ng-tns-c2721585414-85 ng-star-inserted\"><button class=\"mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c2721585414-85 mat-unthemed _mat-animation-noopable ng-star-inserted\" aria-label=\"Kodu kopyala\"><\/button><!----><!----><\/div>\n<!----><\/div>\n<!---->\n<div class=\"formatted-code-block-internal-container ng-tns-c2721585414-85\">\n<div class=\"animated-opacity ng-tns-c2721585414-85\">\n<pre class=\"ng-tns-c2721585414-85\"><code class=\"code-container formatted ng-tns-c2721585414-85\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">Get-EventLog<\/span> <span class=\"hljs-literal\">-LogName<\/span> Security <span class=\"hljs-literal\">-InstanceId<\/span> <span class=\"hljs-number\">4624<\/span> <span class=\"hljs-literal\">-Newest<\/span> <span class=\"hljs-number\">5<\/span> | \n<span class=\"hljs-built_in\">Select-Object<\/span> TimeGenerated, <span class=\"hljs-selector-tag\">@<\/span>{Name=<span class=\"hljs-string\">\"User\"<\/span>; Expression={<span class=\"hljs-variable\">$_<\/span>.ReplacementStrings[<span class=\"hljs-number\">5<\/span>]}}\n<\/code><\/pre>\n<!----><\/div>\n<\/div>\n<\/div>\n<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->\n<p data-path-to-node=\"13\">Bu y&ouml;ntem, &ouml;zellikle rutin kontroller s\u0131ras\u0131nda zaman kazanman\u0131z\u0131 sa\u011flar.<\/p>\n<h3 data-path-to-node=\"14\">3. \"quser\" Komutu: Anl\u0131k Durum Analizi<\/h3>\n<p data-path-to-node=\"15\">Sunucunuzun performans\u0131nda bir yava\u015flama hissetti\u011finizde veya \"Uzak masa&uuml;st&uuml; kullan\u0131c\u0131 s\u0131n\u0131r\u0131na ula\u015f\u0131ld\u0131\" hatas\u0131 ald\u0131\u011f\u0131n\u0131zda, o an kimlerin sistemde oldu\u011funu bilmeniz gerekir.<\/p>\n<p data-path-to-node=\"16\">Terminali (CMD veya PowerShell) a&ccedil;\u0131n ve sadece <code data-path-to-node=\"16\" data-index-in-node=\"47\">quser<\/code> yaz\u0131n. Bu komut size \u015fu bilgileri verir:<\/p>\n<ul data-path-to-node=\"17\">\n<li>\n<p data-path-to-node=\"17,0,0\">Aktif kullan\u0131c\u0131 adlar\u0131.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,1,0\">Oturumun durumu (Active \/ Disconnected).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"17,2,0\">Oturumun ba\u015flang\u0131&ccedil; saati.<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"18\"><em data-path-to-node=\"18\" data-index-in-node=\"0\">E\u011fer bir kullan\u0131c\u0131 oturumunu kapatmak yerine sadece pencereyi &ccedil;arpt\u0131ysa, oturumu \"Disconnected\" olarak g&ouml;receksiniz. Bu durum gereksiz kaynak t&uuml;ketimine neden olabilir.<\/em><\/p>\n<h3 data-path-to-node=\"19\">4. Kay\u0131t Defteri (Registry) &Uuml;zerinden Son Kullan\u0131c\u0131 Kontrol&uuml;<\/h3>\n<p>Sunucuda en son hangi kullan\u0131c\u0131n\u0131n i\u015flem yapt\u0131\u011f\u0131n\u0131 h\u0131zl\u0131ca g&ouml;rmek i&ccedil;in Registry kay\u0131tlar\u0131na da g&ouml;z atabilirsiniz:<\/p>\n<p>HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI<\/p>\n<p data-path-to-node=\"21\">Buradaki <strong data-path-to-node=\"21\" data-index-in-node=\"9\">LastLoggedOnUser<\/strong> anahtar\u0131, sistemin haf\u0131zas\u0131ndaki son kullan\u0131c\u0131 bilgisini statik olarak tutar.<\/p>\n<p data-path-to-node=\"21\">&nbsp;<\/p>\n<div id=\"model-response-message-contentr_14680a3defe63e45\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color\" dir=\"ltr\" aria-live=\"polite\" aria-busy=\"false\">\n<p data-path-to-node=\"0\">blog yaz\u0131s\u0131nda bahsetti\u011fim y&ouml;ntemleri (Event Viewer analizi, aktif kullan\u0131c\u0131 sorgulama ve son giri\u015f yapan kullan\u0131c\u0131y\u0131 g&ouml;rme) tek bir aray&uuml;zde birle\u015ftiren, kullan\u0131m\u0131 kolay bir <strong data-path-to-node=\"0\" data-index-in-node=\"190\">PowerShell GUI<\/strong> haz\u0131rlad\u0131m.<\/p>\n<p data-path-to-node=\"1\">Bu ara&ccedil;; RDP giri\u015flerini (Logon Type 10), fiziksel giri\u015fleri ve anl\u0131k aktif kullan\u0131c\u0131lar\u0131 tek t\u0131kla listeler.<\/p>\n<h3 data-path-to-node=\"2\">PowerShell GUI Kodu<\/h3>\n<p data-path-to-node=\"3\">A\u015fa\u011f\u0131daki kodu bir <code data-path-to-node=\"3\" data-index-in-node=\"19\">.ps1<\/code> dosyas\u0131 olarak kaydedip (&ouml;rne\u011fin: <code data-path-to-node=\"3\" data-index-in-node=\"58\">OturumIzleme.ps1<\/code>) sa\u011f t\u0131klay\u0131p \"PowerShell ile &Ccedil;al\u0131\u015ft\u0131r\" diyebilirsiniz:<\/p>\n<!----><!----><!----><!----><!----><!----><!---->\n<div class=\"code-block ng-tns-c2721585414-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiqgOqIqIuSAxUAAAAAHQAAAAAQgwE\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2721585414-94\">\n<div class=\"animated-opacity ng-tns-c2721585414-94\">\n<pre class=\"ng-tns-c2721585414-94\">&nbsp;<\/pre>\n<pre class=\"language-markup\"><code># Gerekli k&uuml;t&uuml;phaneleri y&uuml;kle\nAdd-Type -AssemblyName System.Windows.Forms\nAdd-Type -AssemblyName System.Drawing\n\n# Ana Form Ayarlar\u0131\n$form = New-Object System.Windows.Forms.Form\n$form.Text = \"Ondernet - Windows Oturum \u0130zleme Paneli\"\n$form.Size = New-Object System.Drawing.Size(850, 650)\n$form.StartPosition = \"CenterScreen\"\n$form.BackColor = \"#F8F9FA\"\n$form.Font = New-Object System.Drawing.Font(\"Segoe UI\", 9)\n\n# Ba\u015fl\u0131k Etiketi\n$label = New-Object System.Windows.Forms.Label\n$label.Text = \"Sunucu Eri\u015fim ve G&uuml;venlik Analizi\"\n$label.Location = New-Object System.Drawing.Point(20, 15)\n$label.Size = New-Object System.Drawing.Size(400, 30)\n$label.Font = New-Object System.Drawing.Font(\"Segoe UI\", 16, [System.Drawing.FontStyle]::Bold)\n$label.ForeColor = \"#212529\"\n$form.Controls.Add($label)\n\n# Veri Tablosu (DataGridView)\n$dataGridView = New-Object System.Windows.Forms.DataGridView\n$dataGridView.Location = New-Object System.Drawing.Point(20, 110)\n$dataGridView.Size = New-Object System.Drawing.Size(790, 430)\n$dataGridView.AutoSizeColumnsMode = \"Fill\"\n$dataGridView.BackgroundColor = \"White\"\n$dataGridView.BorderStyle = \"None\"\n$dataGridView.RowHeadersVisible = $false\n$dataGridView.ReadOnly = $true\n$dataGridView.SelectionMode = \"FullRowSelect\"\n$dataGridView.AlternatingRowsDefaultCellStyle.BackColor = \"#F2F2F2\"\n$form.Controls.Add($dataGridView)\n\n# Fonksiyon: Veriyi Grid'e G&uuml;venli Basma\nfunction Update-Grid {\n    param($DataList)\n    $arrayList = New-Object System.Collections.ArrayList\n    if ($DataList) {\n        $arrayList.AddRange($DataList)\n    }\n    $dataGridView.DataSource = $arrayList\n}\n\n# 1. Buton: Aktif Kullan\u0131c\u0131lar (quser)\n$btnQuser = New-Object System.Windows.Forms.Button\n$btnQuser.Text = \"Anl\u0131k Aktif Kullan\u0131c\u0131lar\"\n$btnQuser.Location = New-Object System.Drawing.Point(20, 60)\n$btnQuser.Size = New-Object System.Drawing.Size(250, 40)\n$btnQuser.BackColor = \"#0078D7\"\n$btnQuser.ForeColor = \"White\"\n$btnQuser.FlatStyle = \"Flat\"\n$btnQuser.Cursor = [System.Windows.Forms.Cursors]::Hand\n$btnQuser.Add_Click({\n    # quser &ccedil;\u0131kt\u0131s\u0131n\u0131 g&uuml;venli bir \u015fekilde diziye al (tek sonu&ccedil; olsa bile)\n    $rawOutput = @(quser 2&gt;$null)\n    \n    if ($rawOutput.Count -gt 0) {\n        $data = @($rawOutput | Select-Object -Skip 1 | ForEach-Object {\n            # Bo\u015fluklara g&ouml;re b&ouml;l ve temizle\n            $line = $_.Trim() -split '\\s{2,}'\n            [PSCustomObject]@{\n                Kullanici    = $line[0].Replace(\"&gt;\",\"\") # Aktif kullan\u0131c\u0131 imlecini temizle\n                Oturum_Adi   = if($line[1] -match '^\\d+$') { \"RDP\/None\" } else { $line[1] }\n                ID           = if($line[1] -match '^\\d+$') { $line[1] } else { $line[2] }\n                Durum        = if($line[1] -match '^\\d+$') { $line[2] } else { $line[3] }\n                Giris_Zamani = if($line[1] -match '^\\d+$') { $line[4] } else { $line[5] }\n            }\n        })\n        Update-Grid -DataList $data\n    } else {\n        [System.Windows.Forms.MessageBox]::Show(\"Aktif oturum bulunamad\u0131 veya yetki yetersiz.\", \"Bilgi\")\n    }\n})\n$form.Controls.Add($btnQuser)\n\n# 2. Buton: Son 15 Ba\u015far\u0131l\u0131 Giri\u015f (Event Log)\n$btnLogon = New-Object System.Windows.Forms.Button\n$btnLogon.Text = \"Son 15 Ba\u015far\u0131l\u0131 Giri\u015f (Event Log)\"\n$btnLogon.Location = New-Object System.Drawing.Point(285, 60)\n$btnLogon.Size = New-Object System.Drawing.Size(250, 40)\n$btnLogon.BackColor = \"#28A745\"\n$btnLogon.ForeColor = \"White\"\n$btnLogon.FlatStyle = \"Flat\"\n$btnLogon.Cursor = [System.Windows.Forms.Cursors]::Hand\n$btnLogon.Add_Click({\n    try {\n        $events = @(Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} -MaxEvents 15 -ErrorAction SilentlyContinue | ForEach-Object {\n            [PSCustomObject]@{\n                Tarih_Saat  = $_.TimeCreated\n                Kullanici   = $_.Properties[5].Value\n                Logon_Tipi  = $_.Properties[8].Value # Tip 10: RDP, Tip 2: Yerel\n                Kaynak_IP   = $_.Properties[18].Value\n            }\n        })\n        Update-Grid -DataList $events\n    } catch {\n        [System.Windows.Forms.MessageBox]::Show(\"Olay g&uuml;nl&uuml;kleri okunurken hata olu\u015ftu. Y&ouml;netici olarak &ccedil;al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.\", \"Hata\")\n    }\n})\n$form.Controls.Add($btnLogon)\n\n# 3. Buton: Registry Son Kullan\u0131c\u0131 Bilgisi\n$btnReg = New-Object System.Windows.Forms.Button\n$btnReg.Text = \"Kay\u0131t Defteri (Son Kay\u0131t)\"\n$btnReg.Location = New-Object System.Drawing.Point(550, 60)\n$btnReg.Size = New-Object System.Drawing.Size(250, 40)\n$btnReg.BackColor = \"#6C757D\"\n$btnReg.ForeColor = \"White\"\n$btnReg.FlatStyle = \"Flat\"\n$btnReg.Cursor = [System.Windows.Forms.Cursors]::Hand\n$btnReg.Add_Click({\n    $regPath = \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI\"\n    $lastUser = (Get-ItemProperty -Path $regPath -ErrorAction SilentlyContinue).LastLoggedOnUser\n    if ($lastUser) {\n        [System.Windows.Forms.MessageBox]::Show(\"Windows Kay\u0131t Defterine G&ouml;re Son Giri\u015f Yapan:`n`n$lastUser\", \"Registry Bilgisi\")\n    } else {\n        [System.Windows.Forms.MessageBox]::Show(\"Bilgi al\u0131namad\u0131.\", \"Hata\")\n    }\n})\n$form.Controls.Add($btnReg)\n\n# Alt Bilgi (Footer)\n$footer = New-Object System.Windows.Forms.Label\n$footer.Text = \"&copy; 2024 Ondernet.net - Sunucu G&uuml;venlik Analiz Arac\u0131\"\n$footer.Location = New-Object System.Drawing.Point(20, 560)\n$footer.Size = New-Object System.Drawing.Size(500, 20)\n$footer.ForeColor = \"Gray\"\n$form.Controls.Add($footer)\n\n# Formu G&ouml;ster\n[void]$form.ShowDialog()<\/code><\/pre>\n<pre class=\"ng-tns-c2721585414-94\"><code class=\"code-container formatted ng-tns-c2721585414-94\" role=\"text\" data-test-id=\"code-content\">\n<\/code><\/pre>\n<!----><\/div>\n<\/div>\n<\/div>\n<!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!---->\n<h3 data-path-to-node=\"5\">Ara&ccedil; Neleri Kaps\u0131yor?<\/h3>\n<ol start=\"1\" data-path-to-node=\"6\">\n<li>\n<p data-path-to-node=\"6,0,0\"><strong data-path-to-node=\"6,0,0\" data-index-in-node=\"0\">Anl\u0131k Aktif Kullan\u0131c\u0131lar (quser):<\/strong> Sunucuda o anda \"Active\" veya \"Disconnected\" durumda olan t&uuml;m kullan\u0131c\u0131lar\u0131, oturum ID'leri ve giri\u015f saatleriyle birlikte tabloya d&ouml;ker.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,1,0\"><strong data-path-to-node=\"6,1,0\" data-index-in-node=\"0\">Son 10 Giri\u015f (Event ID 4624):<\/strong> G&uuml;venlik g&uuml;nl&uuml;klerini tarar. Kullan\u0131c\u0131 ad\u0131n\u0131n yan\u0131 s\u0131ra, blog yaz\u0131s\u0131nda kritik oldu\u011fu belirtilen <strong data-path-to-node=\"6,1,0\" data-index-in-node=\"127\">Logon Type<\/strong> ve <strong data-path-to-node=\"6,1,0\" data-index-in-node=\"141\">Kaynak IP<\/strong> bilgilerini g&ouml;sterir (&Ouml;rn: Type 10 g&ouml;r&uuml;yorsan\u0131z RDP ile giri\u015ftir).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,2,0\"><strong data-path-to-node=\"6,2,0\" data-index-in-node=\"0\">Registry Bilgisi:<\/strong> Windows'un kay\u0131t defterinde tuttu\u011fu \"son giri\u015f yapan kullan\u0131c\u0131\" bilgisini k&uuml;&ccedil;&uuml;k bir pop-up mesaj\u0131 olarak ekrana getirir.<\/p>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"7\">&Ccedil;al\u0131\u015ft\u0131rmadan &Ouml;nce Notlar:<\/h3>\n<ul data-path-to-node=\"8\">\n<li>\n<p data-path-to-node=\"8,0,0\"><strong data-path-to-node=\"8,0,0\" data-index-in-node=\"0\">Y&ouml;netici Yetkisi:<\/strong> <code data-path-to-node=\"8,0,0\" data-index-in-node=\"18\">Security<\/code> loglar\u0131n\u0131 okumak ve <code data-path-to-node=\"8,0,0\" data-index-in-node=\"47\">quser<\/code> komutunu &ccedil;al\u0131\u015ft\u0131rmak i&ccedil;in PowerShell'i <strong data-path-to-node=\"8,0,0\" data-index-in-node=\"92\">Y&ouml;netici Olarak &Ccedil;al\u0131\u015ft\u0131r<\/strong> se&ccedil;ene\u011fiyle a&ccedil;mal\u0131s\u0131n\u0131z.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,1,0\"><strong data-path-to-node=\"8,1,0\" data-index-in-node=\"0\">Execution Policy:<\/strong> E\u011fer script &ccedil;al\u0131\u015fmazsa, terminale <code data-path-to-node=\"8,1,0\" data-index-in-node=\"52\">Set-ExecutionPolicy RemoteSigned -Scope CurrentUser<\/code> komutunu yazarak izin verebilirsiniz.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<hr data-path-to-node=\"22\">\n<h3 data-path-to-node=\"23\">Ondernet &Ouml;nerisi: Neden \u0130zleme Yapmal\u0131s\u0131n\u0131z?<\/h3>\n<p data-path-to-node=\"24\">Sistem g&uuml;venli\u011fi sadece d\u0131\u015far\u0131dan gelen sald\u0131r\u0131lara kar\u015f\u0131 barikat kurmak de\u011fildir. \u0130&ccedil;erideki hareketlili\u011fi izlemek, yetkisiz eri\u015fimleri erkenden tespit etmenize ve olas\u0131 bir hata durumunda \"sorumlu hesab\u0131\" h\u0131zl\u0131ca bulman\u0131za olanak tan\u0131r.<\/p>\n<p data-path-to-node=\"25\"><strong data-path-to-node=\"25\" data-index-in-node=\"0\">Sunucu g&uuml;venli\u011finizi bir &uuml;st seviyeye ta\u015f\u0131mak m\u0131 istiyorsunuz?<\/strong> Y&uuml;ksek performansl\u0131 ve g&uuml;venli <strong data-path-to-node=\"25\" data-index-in-node=\"94\">Windows VDS<\/strong> &ccedil;&ouml;z&uuml;mlerimizle tan\u0131\u015fmak i&ccedil;in <!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><a class=\"ng-star-inserted\" href=\"..\/..\/\" target=\"_blank\" rel=\"noopener\" data-hveid=\"0\" data-ved=\"0CAAQ_4QMahcKEwiqgOqIqIuSAxUAAAAAHQAAAAAQbw\">Ondernet.net<\/a><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----> adresini ziyaret edebilir, uzman ekibimizden destek alabilirsiniz.<\/p>\n<hr data-path-to-node=\"26\">\n<p data-path-to-node=\"27\"><em data-path-to-node=\"27\" data-index-in-node=\"0\">Bu yaz\u0131, sistem y&ouml;neticilerinin g&uuml;nl&uuml;k operasyonlar\u0131n\u0131 kolayla\u015ft\u0131rmak ve g&uuml;venlik fark\u0131ndal\u0131\u011f\u0131n\u0131 art\u0131rmak amac\u0131yla haz\u0131rlanm\u0131\u015ft\u0131r.<\/em><\/p>\n<\/div>","excerpt":"Sunucu y\u00f6netimi sadece servislerin ayakta kalmas\u0131n\u0131 sa\u011flamak de\u011fil, ayn\u0131 zamanda sistemin \"kim taraf\u0131ndan, ne zaman ve nas\u0131l\" kullan\u0131ld\u0131\u011f\u0131n\u0131 takip etmektir. \u00d6zellikle \u00e7ok kullan\u0131c\u0131l\u0131 Windows Sunucu ortamlar\u0131nda veya uzak masa\u00fcst\u00fc (RDP) trafi\u011finin yo\u011fun oldu\u011fu yap\u0131larda, oturum izleme operasyonel g\u00fcvenli\u011fin temel ta\u015f\u0131d\u0131r.","created_at":"2026-01-14 20:03:49","updated_at":"2026-09-08 04:02:21","category_id":9,"view_count":545,"reading_time":8,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2026-01-14 17:03:49","featured_image":"\/uploads\/images\/2026\/01\/6967cc5d11958_1768410205.png","slug":"windows-sunucularda-guvenlik-analizi-kullanici-oturumlarini-izleme-ve-raporlama","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"}]