{"id":31426,"date":"2025-10-09T21:31:47","date_gmt":"2025-10-09T18:31:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/"},"modified":"2025-10-09T21:31:47","modified_gmt":"2025-10-09T18:31:47","slug":"vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/","title":{"rendered":"Vector&#8217;s VRL&#8217;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak"},"content":{"rendered":"<p>Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL&#8217;nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn mikroservis tabanl\u0131 ve bulut yerlisi mimarilerinde, uygulamalar, altyap\u0131lar ve hizmetler s\u00fcrekli olarak b\u00fcy\u00fck hacimli loglar, metrikler ve izleme verileri \u00fcretir. Bu veri ak\u0131\u015f\u0131, operasyonel durum hakk\u0131nda hayati bilgiler i\u00e7ermesine ra\u011fmen, farkl\u0131 formatlarda, yap\u0131land\u0131r\u0131lmam\u0131\u015f veya eksik bir \u015fekilde geldi\u011finde analiz etmesi ve anlamas\u0131 son derece g\u00fc\u00e7le\u015fir. Bu karma\u015f\u0131kl\u0131k, sorun giderme s\u00fcre\u00e7lerini uzat\u0131r, performans darbo\u011fazlar\u0131n\u0131 tespit etmeyi zorla\u015ft\u0131r\u0131r ve sonu\u00e7 olarak i\u015f s\u00fcreklili\u011fini tehdit edebilir. \u0130\u015fte bu sorunlar\u0131 \u00e7\u00f6zmek i\u00e7in geli\u015ftirilen <a href=\"https:\/\/vector.dev\/\">Vector<\/a>, y\u00fcksek performansl\u0131 bir g\u00f6zlemlenebilirlik veri y\u00f6nlendiricisi olarak \u00f6ne \u00e7\u0131k\u0131yor. Vector, farkl\u0131 kaynaklardan veri toplar, i\u015fler ve \u00e7e\u015fitli hedeflere y\u00f6nlendirir.<\/p>\n<p>Vector&#8217;\u00fcn kalbinde yer alan ve ona bu esnekli\u011fi sa\u011flayan temel ara\u00e7lardan biri de Vector Remap Language (VRL)&#8217;dir. Peki, VRL tam olarak nedir? VRL, Vector&#8217;\u00fcn veri ak\u0131\u015f\u0131 \u00fczerindeki d\u00f6n\u00fc\u015f\u00fcm, filtreleme ve zenginle\u015ftirme i\u015flemlerini tan\u0131mlamak i\u00e7in kullan\u0131lan hafif, g\u00fc\u00e7l\u00fc ve \u00f6zel olarak tasarlanm\u0131\u015f bir programlama dilidir. Gelen her bir veri olay\u0131n\u0131 (log sat\u0131r\u0131, metrik noktas\u0131 vb.) incelemenize, belirli alanlar\u0131 ay\u0131klaman\u0131za, ko\u015fullu mant\u0131k uygulaman\u0131za, hatta veriye yeni alanlar eklemenize olanak tan\u0131r. \u00d6rne\u011fin, bir log mesaj\u0131ndaki hassas bilgileri maskeleyebilir, belirli bir hata koduna sahip loglar\u0131 ayr\u0131 bir hedefe y\u00f6nlendirebilir veya birden fazla kaynaktan gelen veriyi tek bir standart JSON format\u0131na d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. Bu, sadece veri kalitesini art\u0131rmakla kalmaz, ayn\u0131 zamanda depolama maliyetlerini d\u00fc\u015f\u00fcr\u00fcr ve analiz s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r.<\/p>\n<p>VRL&#8217;nin hayati \u00f6nemi, modern g\u00f6zlemlenebilirlik stratejilerinin merkezinde yatar. Verileriniz ne kadar temiz, yap\u0131land\u0131r\u0131lm\u0131\u015f ve anlaml\u0131 olursa, operasyonel i\u00e7g\u00f6r\u00fcleriniz de o kadar keskin olur. VRL, bu temizli\u011fi ve yap\u0131land\u0131rmay\u0131 otomatikle\u015ftirerek, m\u00fchendislerin daha az zaman\u0131 veri &#8220;t\u0131ra\u015flamaya&#8221; harcamas\u0131n\u0131 ve daha \u00e7ok zaman\u0131 ger\u00e7ek problemlere odaklanmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, uyumluluk gereksinimleri (GDPR, KVKK gibi) nedeniyle hassas verilerin i\u015flenmesi gereken durumlarda, VRL an\u0131nda anonimle\u015ftirme ve maskeleme yetenekleri sunarak yasal riskleri minimize etmeye yard\u0131mc\u0131 olur. K\u0131sacas\u0131, VRL, g\u00f6zlemlenebilirli\u011fin sadece veri toplamakla kalmay\u0131p, ayn\u0131 zamanda o veriden maksimum de\u011feri \u00e7\u0131karmakla ilgili oldu\u011funu kan\u0131tlayan bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<h2>Temel Kavramlar: VRL&#8217;nin Temel Yap\u0131 Ta\u015flar\u0131 Nelerdir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\n<p>VRL, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcn\u00fc kolayla\u015ft\u0131rmak i\u00e7in sezgisel bir s\u00f6zdizimi ve g\u00fc\u00e7l\u00fc yerle\u015fik fonksiyonlar setine sahiptir. Bu b\u00f6l\u00fcmde, VRL&#8217;nin temel bile\u015fenlerini ve bunlar\u0131n nas\u0131l bir araya gelerek veri i\u015fleme mant\u0131\u011f\u0131 olu\u015fturdu\u011funu detayl\u0131ca inceleyece\u011fiz. VRL, temelde bir dizi ifade ve atamadan olu\u015fur. Her bir ifade, gelen <code>event<\/code> nesnesi \u00fczerinde bir i\u015flem ger\u00e7ekle\u015ftirir ve bu i\u015flemler s\u0131rayla y\u00fcr\u00fct\u00fcl\u00fcr.<\/p>\n<p>\u00d6ncelikle, VRL&#8217;deki <strong>de\u011ferler ve tipler<\/strong> olduk\u00e7a \u00f6nemlidir. VRL, tipik programlama dillerinde bulunan temel veri tiplerini destekler:<\/p>\n<ul>\n<li><strong>Say\u0131lar (Numbers):<\/strong> Tam say\u0131lar (<code>123<\/code>) ve ondal\u0131k say\u0131lar (<code>3.14<\/code>).<\/li>\n<li><strong>Dizeler (Strings):<\/strong> \u00c7ift t\u0131rnak i\u00e7inde belirtilen metinler (<code>\"merhaba d\u00fcnya\"<\/code>).<\/li>\n<li><strong>Boolean (Mant\u0131ksal):<\/strong> <code>true<\/code> veya <code>false<\/code> de\u011ferleri.<\/li>\n<li><strong>Diziler (Arrays):<\/strong> K\u00f6\u015feli parantez i\u00e7inde virg\u00fclle ayr\u0131lm\u0131\u015f de\u011fer listeleri (<code>[1, \"iki\", true]<\/code>).<\/li>\n<li><strong>Nesneler\/Mapler (Objects\/Maps):<\/strong> S\u00fcsl\u00fc parantez i\u00e7inde anahtar-de\u011fer \u00e7iftleri (<code>{\"ip\": \"127.0.0.1\", \"status\": 200}<\/code>). Bu yap\u0131, log verilerini JSON benzeri bir formatta temsil etmek i\u00e7in s\u0131kl\u0131kla kullan\u0131l\u0131r.<\/li>\n<li><strong>Null:<\/strong> De\u011ferin olmad\u0131\u011f\u0131n\u0131 belirten <code>null<\/code>.<\/li>\n<\/ul>\n<p>VRL&#8217;de t\u00fcm i\u015flemler, gelen veri olay\u0131n\u0131 temsil eden <code>event<\/code> ad\u0131nda \u00f6zel bir nesne \u00fczerinde ger\u00e7ekle\u015fir. Bu <code>event<\/code> nesnesi, log mesaj\u0131n\u0131n, metrik ad\u0131n\u0131n veya di\u011fer ilgili meta verilerin bulundu\u011fu yerdir. \u00d6rne\u011fin, bir JSON logunda yer alan <code>message<\/code> alan\u0131na <code>event.message<\/code> ile eri\u015febilirsiniz. Nokta notasyonu (<code>.<\/code>) veya k\u00f6\u015feli parantez notasyonu (<code>[\"\"]<\/code>) ile nesne alanlar\u0131na eri\u015fim sa\u011flanabilir; <code>event[\"error-code\"]<\/code> gibi bo\u015fluk veya \u00f6zel karakter i\u00e7eren anahtarlar i\u00e7in ikinci y\u00f6ntem tercih edilir.<\/p>\n<p><strong>Temel Operasyonlar:<\/strong> VRL, veri \u00fczerinde d\u00f6n\u00fc\u015f\u00fcm yapman\u0131z\u0131 sa\u011flayan \u00e7e\u015fitli operat\u00f6rlere sahiptir:<\/p>\n<ul>\n<li><strong>Atama:<\/strong> <code>=<\/code> operat\u00f6r\u00fc ile bir de\u011fi\u015fkene veya bir <code>event<\/code> alan\u0131na de\u011fer atan\u0131r (\u00f6rne\u011fin, <code>event.status_code = 200<\/code>).<\/li>\n<li><strong>Aritmetik Operat\u00f6rler:<\/strong> <code>+<\/code>, <code>-<\/code>, <code>*<\/code>, <code>\/<\/code>, <code>%<\/code> (mod\u00fcl).<\/li>\n<li><strong>Kar\u015f\u0131la\u015ft\u0131rma Operat\u00f6rleri:<\/strong> <code>==<\/code> (e\u015fit), <code>!=<\/code> (e\u015fit de\u011fil), <code><<\/code>, <code>><\/code>, <code><=<\/code>, <code>>=<\/code>.<\/li>\n<li><strong>Mant\u0131ksal Operat\u00f6rler:<\/strong> <code>&&<\/code> (VE), <code>||<\/code> (VEYA), <code>!<\/code> (DE\u011e\u0130L).<\/li>\n<\/ul>\n<p><strong>Yerle\u015fik Fonksiyonlar:<\/strong> VRL'nin ger\u00e7ek g\u00fcc\u00fc, zengin yerle\u015fik fonksiyon k\u00fct\u00fcphanesinden gelir. Bu fonksiyonlar, dize i\u015fleme, JSON ayr\u0131\u015ft\u0131rma, tarih\/saat manip\u00fclasyonu ve daha fazlas\u0131 gibi karma\u015f\u0131k i\u015flemleri tek bir sat\u0131rda yapman\u0131za olanak tan\u0131r. \u0130\u015fte baz\u0131 pop\u00fcler \u00f6rnekler:<\/p>\n<ul>\n<li><code>to_string(value)<\/code>: Herhangi bir de\u011feri dizeye d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/li>\n<li><code>parse_json(string)<\/code>: Bir JSON dizesini nesneye ayr\u0131\u015ft\u0131r\u0131r.<\/li>\n<li><code>split(string, delimiter)<\/code>: Bir dizeyi belirli bir ay\u0131r\u0131c\u0131ya g\u00f6re b\u00f6lerek bir dizi olu\u015fturur.<\/li>\n<li><code>replace(string, search, replace)<\/code>: Bir dizedeki belirli bir alt dizeyi ba\u015fka bir alt dizeyle de\u011fi\u015ftirir.<\/li>\n<li><code>is_err(result)<\/code>: Bir i\u015flem sonucunun hata olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: VRL ifadeleri yukar\u0131dan a\u015fa\u011f\u0131ya do\u011fru s\u0131rayla i\u015flenir. Bu, sonraki ifadelerin \u00f6nceki ifadeler taraf\u0131ndan yap\u0131lan de\u011fi\u015fiklikleri g\u00f6rece\u011fi anlam\u0131na gelir. Mant\u0131ksal ak\u0131\u015f\u0131 dikkatli planlamak, bekledi\u011finiz sonu\u00e7lar\u0131 elde etmenizi sa\u011flar.\n<\/div>\n<p>VRL ile \u00e7al\u0131\u015f\u0131rken, genellikle <code>remap<\/code> transformu i\u00e7inde bu ifadeleri kullan\u0131rs\u0131n\u0131z. Bu transform, gelen veriyi VRL kurallar\u0131na g\u00f6re yeniden e\u015flemenize veya d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bir sonraki b\u00f6l\u00fcmde, bu temel kavramlar\u0131 ger\u00e7ek d\u00fcnya \u00f6rnekleriyle nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131 g\u00f6rece\u011fiz.<\/p>\n<h2>Uygulamal\u0131 \u00d6rnekler: VRL ile Veri D\u00f6n\u00fc\u015f\u00fcm\u00fc Ad\u0131m Ad\u0131m Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>VRL'nin teorik yap\u0131s\u0131n\u0131 anlad\u0131ktan sonra, \u015fimdi pratik uygulamalara ge\u00e7elim. A\u015fa\u011f\u0131daki \u00f6rnekler, farkl\u0131 veri i\u015fleme senaryolar\u0131nda VRL'yi nas\u0131l kullanabilece\u011finizi g\u00f6sterecektir. T\u00fcm kod \u00f6rnekleri, Vector'\u00fcn <code>remap<\/code> transformu ba\u011flam\u0131nda yaz\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h3>Senaryo 1: Basit Log Filtreleme Nas\u0131l Uygulan\u0131r?<\/h3>\n<p>Bir uygulaman\u0131n sadece <code>ERROR<\/code> seviyesindeki loglar\u0131n\u0131 toplamak istedi\u011fimizi varsayal\u0131m. Bu, di\u011fer seviyelerdeki (INFO, DEBUG vb.) loglar\u0131n depolama ve i\u015fleme maliyetlerinden tasarruf etmemizi sa\u011flar. Bu i\u015flemi yapmak i\u00e7in <code>filter<\/code> VRL fonksiyonunu kullanabiliriz.<\/p>\n<pre><code>\n# vector.yaml i\u00e7inde bir remap transformu \u00f6rne\u011fi\n# sources:\n#   my_app_logs:\n#     type: \"file\"\n#     include: [\"\/var\/log\/my_app\/*.log\"]\n# transforms:\n#   filter_errors:\n#     type: \"remap\"\n#     inputs: [\"my_app_logs\"]\n#     source: |\n#       if event.level != \"ERROR\" {\n#         drop();\n#       }\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki VRL kodu, gelen <code>event<\/code> nesnesinin <code>level<\/code> alan\u0131n\u0131 kontrol eder. E\u011fer bu alan <code>\"ERROR\"<\/code> de\u011filse, <code>drop()<\/code> fonksiyonunu \u00e7a\u011f\u0131r\u0131r. <code>drop()<\/code> fonksiyonu, mevcut veri olay\u0131n\u0131n Vector'\u00fcn i\u015flem hatt\u0131ndaki ak\u0131\u015f\u0131n\u0131 durdurur, yani bu log art\u0131k hi\u00e7bir hedefe g\u00f6nderilmez. Bu, gereksiz verilerin elenmesi i\u00e7in etkili bir y\u00f6ntemdir. Basit ama son derece g\u00fc\u00e7l\u00fc bir filtreleme mekanizmas\u0131d\u0131r. Ayr\u0131ca, birden fazla ko\u015fulu birle\u015ftirmek i\u00e7in <code>&&<\/code> veya <code>||<\/code> operat\u00f6rlerini de kullanabilirsiniz.<\/p>\n<h3>Senaryo 2: Log Alanlar\u0131n\u0131 Yeniden Yap\u0131land\u0131rma ve Zenginle\u015ftirme Nas\u0131l Ger\u00e7ekle\u015ftirilir?<\/h3>\n<p>\u00c7o\u011fu zaman, uygulamalar\u0131m\u0131z d\u00fcz metin format\u0131nda loglar \u00fcretir ve biz bunlar\u0131 yap\u0131land\u0131r\u0131lm\u0131\u015f bir formata (\u00f6rne\u011fin JSON) d\u00f6n\u00fc\u015ft\u00fcrmek isteriz. Ayr\u0131ca, var olan verilere yeni, ba\u011flamsal bilgiler eklemek (zenginle\u015ftirme) de s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir ihtiya\u00e7t\u0131r. A\u015fa\u011f\u0131daki \u00f6rnekte, d\u00fcz metin bir logdan \u00f6nemli bilgileri \u00e7\u0131kar\u0131p JSON format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcyor ve ard\u0131ndan bir zaman damgas\u0131 ekliyoruz.<\/p>\n<pre><code>\n# vector.yaml i\u00e7inde bir remap transformu \u00f6rne\u011fi\n# transforms:\n#   parse_and_enrich:\n#     type: \"remap\"\n#     inputs: [\"my_raw_logs\"]\n#     source: |\n#       # Gelen log mesaj\u0131n\u0131 parse et ve anahtar-de\u011fer \u00e7iftlerine b\u00f6l\n#       # \u00d6rnek log: \"status=200 method=GET path=\/api\/users user=john\"\n#       # parse_regex() veya parse_key_value() gibi fonksiyonlar kullan\u0131labilir.\n#       # Basitlik ad\u0131na, burada direkt metin \u00fczerinde i\u015flem yapaca\u011f\u0131z.\n#       # Diyelim ki logumuz direkt JSON format\u0131nda geliyor:\n#       # {\"message\": \"User logged in\", \"user_id\": 123, \"ip_address\": \"192.168.1.1\"}\n\n#       # E\u011fer <code>message<\/code> alan\u0131 JSON ise, onu ayr\u0131\u015ft\u0131r\n#       if exists(event.message) {\n#         # JSON string'i bir nesneye d\u00f6n\u00fc\u015ft\u00fcr\n#         parsed_json = parse_json(event.message);\n        \n#         # E\u011fer ayr\u0131\u015ft\u0131rma ba\u015far\u0131l\u0131ysa, alanlar\u0131 event'e kopyala\n#         if !is_err(parsed_json) {\n#           event.user_data = parsed_json;\n#           # Orijinal message'\u0131 temizleyebiliriz veya farkl\u0131 bir yere ta\u015f\u0131yabiliriz\n#           unset(event.message); \n#         }\n#       }\n\n#       # Yeni bir alan ekleyelim: i\u015fleme zaman damgas\u0131\n#       event.processed_at = now(); \n\n#       # T\u00fcm IP adreslerini maskeleyelim (\u00f6rnek ama\u00e7l\u0131)\n#       if exists(event.user_data.ip_address) {\n#         event.user_data.ip_address = replace(event.user_data.ip_address, r\"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\", \"<strong>*.<\/strong>*.<strong>*.<\/strong>*\");\n#       }\n\n#       # Orijinal timestamp'i UNIX epoch'a d\u00f6n\u00fc\u015ft\u00fcrme (varsa)\n#       # if exists(event.timestamp) {\n#       #   event.timestamp_unix = to_unix_timestamp(event.timestamp);\n#       # }\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, \u00f6nce gelen <code>event.message<\/code> alan\u0131n\u0131n varl\u0131\u011f\u0131n\u0131 kontrol ediyoruz. E\u011fer varsa ve bir JSON dizesiyse, <code>parse_json()<\/code> fonksiyonu ile ayr\u0131\u015ft\u0131r\u0131yoruz. Ayr\u0131\u015ft\u0131rma ba\u015far\u0131l\u0131 olursa, elde edilen nesneyi <code>event.user_data<\/code> gibi yeni bir alana at\u0131yoruz ve orijinal <code>event.message<\/code> alan\u0131n\u0131 <code>unset()<\/code> ile siliyoruz. B\u00f6ylece, log verimiz daha yap\u0131land\u0131r\u0131lm\u0131\u015f hale geliyor. Ayr\u0131ca, <code>now()<\/code> fonksiyonu ile mevcut i\u015fleme zaman\u0131n\u0131 <code>processed_at<\/code> alan\u0131na atayarak veriyi zenginle\u015ftiriyoruz. Son olarak, <code>replace()<\/code> fonksiyonunu regex ile kullanarak IP adreslerini maskeliyoruz. Bu, hem veri format\u0131n\u0131 standartla\u015ft\u0131r\u0131r hem de hassas bilgileri korur.<\/p>\n<h3>Senaryo 3: Hassas Bilgileri Maskeleme Nas\u0131l Sa\u011flan\u0131r?<\/h3>\n<p>Uygulama loglar\u0131nda kullan\u0131c\u0131 adlar\u0131, e-posta adresleri, IP adresleri veya kredi kart\u0131 numaralar\u0131 gibi hassas bilgiler bulunabilir. Bu bilgilerin g\u00f6zlemlenebilirlik platformlar\u0131na g\u00f6nderilmesi, gizlilik ihlallerine ve uyumluluk sorunlar\u0131na yol a\u00e7abilir. VRL, bu t\u00fcr bilgileri maskelemek i\u00e7in g\u00fc\u00e7l\u00fc regex tabanl\u0131 fonksiyonlar sunar.<\/p>\n<pre><code>\n# vector.yaml i\u00e7inde bir remap transformu \u00f6rne\u011fi\n# transforms:\n#   mask_sensitive_data:\n#     type: \"remap\"\n#     inputs: [\"my_app_logs\"]\n#     source: |\n#       # Log mesaj\u0131ndaki potansiyel e-posta adreslerini maskele\n#       if exists(event.message) {\n#         event.message = replace(event.message, r\"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\", \"[EMAIL_MASKED]\");\n#       }\n\n#       # E\u011fer event.user.email diye bir alan varsa onu da maskele\n#       if exists(event.user.email) {\n#         event.user.email = \"[EMAIL_MASKED]\";\n#       }\n\n#       # IP adreslerini maskele (basit bir \u00f6rnek)\n#       # Ger\u00e7ek senaryolarda daha karma\u015f\u0131k regexler gerekebilir\n#       if exists(event.client_ip) {\n#         event.client_ip = replace(event.client_ip, r\"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\", \"XXX.XXX.XXX.XXX\");\n#       }\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>replace()<\/code> fonksiyonu, ilk arg\u00fcman olarak gelen dizeyi, ikinci arg\u00fcman olarak verilen d\u00fczenli ifadeye (regex) g\u00f6re arar ve bulunan e\u015fle\u015fmeleri \u00fc\u00e7\u00fcnc\u00fc arg\u00fcmandaki yeni dizeyle de\u011fi\u015ftirir. E-posta adresi i\u00e7in kullan\u0131lan regex, genel bir e-posta format\u0131n\u0131 yakalamaya \u00e7al\u0131\u015f\u0131r ve bulunan e-postalar\u0131 <code>\"[EMAIL_MASKED]\"<\/code> metniyle de\u011fi\u015ftirir. Benzer \u015fekilde, IP adresleri de maskelenir. Bu sayede, hassas veriler hi\u00e7bir zaman g\u00f6zlemlenebilirlik platformunuza tam haliyle ula\u015fmaz ve veri g\u00fcvenli\u011finiz art\u0131r\u0131lm\u0131\u015f olur. Regex kullan\u0131m\u0131, VRL'de son derece esnek ve g\u00fc\u00e7l\u00fc veri manip\u00fclasyonlar\u0131na olanak tan\u0131r.<\/p>\n<h2>Vaka Analizi: B\u00fcy\u00fck \u00d6l\u00e7ekli Bir Sistemde VRL Kullan\u0131m\u0131 Ne Gibi Faydalar Sa\u011flad\u0131?<\/h2>\n<p>B\u00fcy\u00fck \u00f6l\u00e7ekli bir e-ticaret platformu d\u00fc\u015f\u00fcnelim. Bu platform, mikroservis mimarisiyle \u00e7al\u0131\u015f\u0131yor, her biri kendi log formatlar\u0131na sahip binlerce konteyner, birden fazla bulut sa\u011flay\u0131c\u0131s\u0131 \u00fczerinde \u00e7al\u0131\u015fan veri tabanlar\u0131 ve \u00fc\u00e7\u00fcnc\u00fc taraf entegrasyonlar\u0131 mevcut. G\u00f6zlemlenebilirlik a\u00e7\u0131s\u0131ndan, bu durum ciddi zorluklar yarat\u0131yor:<\/p>\n<ol>\n<li><strong>Heterojen Log Formatlar\u0131:<\/strong> Farkl\u0131 servisler d\u00fcz metin, JSON, CSV gibi \u00e7e\u015fitli formatlarda loglar \u00fcretiyor. Bu loglar\u0131 merkezi bir depoda (\u00f6rne\u011fin Elasticsearch) birle\u015ftirip analiz etmek, s\u00fcrekli format farkl\u0131l\u0131klar\u0131 nedeniyle bir kabusa d\u00f6n\u00fc\u015f\u00fcyor.<\/li>\n<li><strong>Performans ve Maliyet Sorunlar\u0131:<\/strong> T\u00fcm loglar\u0131n ham haliyle toplanmas\u0131 ve depolanmas\u0131, hem network bant geni\u015fli\u011fi hem de depolama alan\u0131 a\u00e7\u0131s\u0131ndan ciddi maliyetler ve performans darbo\u011fazlar\u0131 yarat\u0131yor. \u00d6zellikle DEBUG seviyesindeki loglar, \u00fcretim ortam\u0131nda gereksiz bir y\u00fck olu\u015fturuyor.<\/li>\n<li><strong>Gizlilik ve Uyumluluk Endi\u015feleri:<\/strong> Baz\u0131 loglar, kullan\u0131c\u0131lar\u0131n ki\u015fisel tan\u0131mlay\u0131c\u0131 bilgilerini (PII - Personally Identifiable Information) veya \u00f6deme bilgilerini i\u00e7erebiliyor. Bu bilgilerin izinsiz eri\u015fime a\u00e7\u0131k olmas\u0131, yasal uyumluluk (KVKK, GDPR) a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck riskler ta\u015f\u0131yor.<\/li>\n<li><strong>Analiz Zorlu\u011fu:<\/strong> Yap\u0131land\u0131r\u0131lmam\u0131\u015f veriler \u00fczerinde efektif sorgular \u00e7al\u0131\u015ft\u0131rmak ve h\u0131zl\u0131 i\u00e7g\u00f6r\u00fcler elde etmek neredeyse imkans\u0131z. Anomaly detection (anomali tespiti) ve trend analizi gibi geli\u015fmi\u015f analizler i\u00e7in verilerin standartla\u015ft\u0131r\u0131lmas\u0131 \u015fart.<\/li>\n<\/ol>\n<p>Bu e-ticaret platformu, bu sorunlar\u0131 \u00e7\u00f6zmek i\u00e7in <a href=\"https:\/\/vector.dev\/\">Vector<\/a>'\u0131 merkezi bir veri y\u00f6nlendirme ve i\u015fleme katman\u0131 olarak konumland\u0131rmaya karar verdi. Vector'\u00fcn VRL yetenekleri sayesinde a\u015fa\u011f\u0131daki \u00e7\u00f6z\u00fcmler uyguland\u0131:<\/p>\n<ol>\n<li><strong>Merkezi Normalle\u015ftirme:<\/strong> T\u00fcm log kaynaklar\u0131ndan gelen veriler, Vector taraf\u0131ndan topland\u0131. VRL kullan\u0131larak, t\u00fcm farkl\u0131 formatlardaki loglar (d\u00fcz metin, Nginx access log, uygulama JSON loglar\u0131 vb.) tek tip bir JSON \u015femas\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fc. \u00d6rne\u011fin, Nginx loglar\u0131ndaki 'user-agent' bilgisi ayr\u0131\u015ft\u0131r\u0131larak ayr\u0131 bir alana yaz\u0131ld\u0131, uygulama loglar\u0131ndaki 'log_level' alan\u0131 'level' olarak standartla\u015ft\u0131r\u0131ld\u0131.<\/li>\n<li><strong>Ak\u0131ll\u0131 Filtreleme ve \u00d6rnekleme:<\/strong> VRL ile, \u00fcretim ortam\u0131nda sadece <code>INFO<\/code> ve <code>ERROR<\/code> seviyesindeki loglar g\u00f6nderilirken, DEBUG loglar\u0131n\u0131n sadece belirli bir y\u00fczdesi (\u00f6rne\u011fin %1) \u00f6rneklenerek g\u00f6nderildi. Bu, depolama maliyetlerinde %70'e varan bir d\u00fc\u015f\u00fc\u015f sa\u011flad\u0131 ve a\u011f trafi\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde azaltt\u0131.<\/li>\n<li><strong>Hassas Veri Anonimle\u015ftirme:<\/strong> VRL'nin regex tabanl\u0131 <code>replace()<\/code> fonksiyonlar\u0131 kullan\u0131larak, loglardaki e-posta adresleri, kredi kart\u0131 numaralar\u0131 ve IP adresleri gibi PII verileri otomatik olarak maskelendi veya anonimle\u015ftirildi. Bu, platformun KVKK ve GDPR gibi d\u00fczenlemelere uyumunu sa\u011flarken, g\u00fcvenlik risklerini de minimuma indirdi.<\/li>\n<li><strong>Veri Zenginle\u015ftirme:<\/strong> Her log olay\u0131na, geldi\u011fi mikroservisin ad\u0131, da\u011f\u0131t\u0131m ortam\u0131 (\u00fcretim\/test) ve ilgili kullan\u0131c\u0131 ID'si gibi ba\u011flamsal bilgiler VRL ile eklendi. Bu zenginle\u015ftirme, sorun giderme s\u0131ras\u0131nda ilgili verileri bulmay\u0131 h\u0131zland\u0131rd\u0131 ve operasyonel ekiplerin daha h\u0131zl\u0131 aksiyon almas\u0131n\u0131 sa\u011flad\u0131.<\/li>\n<\/ol>\n<pre><code>\n# Vaka analizinden bir \u00f6rnek VRL snippet'i:\n# Log mesaj\u0131n\u0131 ayr\u0131\u015ft\u0131r, hassas bilgileri maskele ve zenginle\u015ftir\n# transforms:\n#   ecommerce_log_processor:\n#     type: \"remap\"\n#     inputs: [\"all_raw_logs\"]\n#     source: |\n#       # E\u011fer event.message bir JSON dizesi ise parse et\n#       if type(event.message) == \"string\" {\n#         let parsed_msg = parse_json(event.message);\n#         if !is_err(parsed_msg) {\n#           event = merge(event, parsed_msg); # JSON i\u00e7eri\u011fini ana event'e birle\u015ftir\n#           unset(event.message); # Orijinal message'\u0131 kald\u0131r\n#         }\n#       }\n\n#       # Log seviyesini standartla\u015ft\u0131r (\u00f6rn: 'debug' -> 'DEBUG')\n#       if exists(event.log_level) {\n#         event.level = to_upper(event.log_level);\n#         unset(event.log_level);\n#       }\n\n#       # E-posta adreslerini maskele\n#       if exists(event.user_email) {\n#         event.user_email = \"[MASKED_EMAIL]\";\n#       }\n#       if exists(event.payload.user_id) && type(event.payload.user_id) == \"string\" {\n#         event.payload.user_id = replace(event.payload.user_id, r\"user-\\d+\", \"user-XXXXX\");\n#       }\n\n#       # E\u011fer seviye DEBUG ise ve rastgele %99'un \u00fczerindeyse d\u00fc\u015f\u00fcr (\u00f6rnekleme)\n#       if event.level == \"DEBUG\" && rand() > 0.01 {\n#         drop();\n#       }\n\n#       # Ortam bilgisi ekle\n#       event.environment = \"production\";\n#       event.service_name = get_env_var(\"SERVICE_NAME\") ?? \"unknown_service\";\n<\/pre>\n<p><\/code><\/p>\n<p>Bu Vaka Analizi, VRL'nin sadece teknik bir ara\u00e7 olman\u0131n \u00f6tesinde, b\u00fcy\u00fck \u00f6l\u00e7ekli ve karma\u015f\u0131k g\u00f6zlemlenebilirlik ihtiya\u00e7lar\u0131 olan organizasyonlar i\u00e7in nas\u0131l stratejik bir de\u011fer yaratabilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Veri kalitesini, uyumlulu\u011fu ve operasyonel verimlili\u011fi art\u0131rarak, platformun genel sa\u011fl\u0131\u011f\u0131na ve i\u015f s\u00fcreklili\u011fine do\u011frudan katk\u0131 sa\u011flam\u0131\u015ft\u0131r.<\/p>\n<h2>\u0130leri D\u00fczey VRL \u0130pu\u00e7lar\u0131: Performans\u0131 Art\u0131rmak ve Karma\u015f\u0131k Senaryolar\u0131 Y\u00f6netmek \u0130\u00e7in Neler Yapmal\u0131?<\/h2>\n<p>VRL'yi daha etkin kullanmak ve karma\u015f\u0131k veri i\u015fleme senaryolar\u0131nda maksimum verim almak i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131 mevcuttur. Bu teknikler, sadece kodunuzu daha okunabilir k\u0131lmakla kalmaz, ayn\u0131 zamanda Vector'\u00fcn performans\u0131n\u0131 da optimize etmenize yard\u0131mc\u0131 olur.<\/p>\n<h3>Optimizasyon Stratejileri: Daha H\u0131zl\u0131 ve Verimli VRL Kodlar\u0131 Nas\u0131l Yaz\u0131l\u0131r?<\/h3>\n<p>VRL, Vector'\u00fcn i\u015flem hatt\u0131n\u0131n kritik bir par\u00e7as\u0131 oldu\u011fundan, yazd\u0131\u011f\u0131n\u0131z VRL kodunun performans\u0131 genel sistem verimini do\u011frudan etkiler. \u0130\u015fte baz\u0131 optimizasyon stratejileri:<\/p>\n<ul>\n<li><strong>Erken Filtreleme (Early Filtering):<\/strong> Gereksiz verileri i\u015flem hatt\u0131n\u0131n m\u00fcmk\u00fcn olan en ba\u015f\u0131nda <code>drop()<\/code> etmek, sonraki transformlar\u0131n bu veriler \u00fczerinde zaman kaybetmesini engeller. \u00d6rne\u011fin, sadece 'ERROR' loglar\u0131na ihtiyac\u0131n\u0131z varsa, t\u00fcm di\u011fer loglar\u0131 hemen ba\u015fta filtreleyin.<\/li>\n<li><strong>Gereksiz \u0130\u015flemlerden Ka\u00e7\u0131nma:<\/strong> Yaln\u0131zca gerekli olan alanlar \u00fczerinde i\u015flem yap\u0131n. Her <code>if exists(...)<\/code> kontrol\u00fc, alan\u0131n varl\u0131\u011f\u0131n\u0131 do\u011frular ve sadece var olan alanlar \u00fczerinde pahal\u0131 dize veya regex i\u015flemlerinin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Regex Optimizasyonu:<\/strong> D\u00fczenli ifadeler (regex), karma\u015f\u0131k ve pahal\u0131 i\u015flemler olabilir. M\u00fcmk\u00fcn oldu\u011funda daha basit dize i\u015flemleri (<code>starts_with<\/code>, <code>ends_with<\/code>, <code>contains<\/code>) kullanmaya \u00e7al\u0131\u015f\u0131n. E\u011fer regex kullanman\u0131z gerekiyorsa, \u00e7ok geni\u015f e\u015fle\u015fen (greedy) ifadelerden ka\u00e7\u0131narak daha spesifik ve optimize edilmi\u015f regexler yaz\u0131n. \u00d6rne\u011fin, <code>.*<\/code> yerine <code>[^\"]*<\/code> kullanmak daha verimli olabilir.<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Karma\u015f\u0131k VRL kodlar\u0131n\u0131 yerel ortam\u0131n\u0131zda <a href=\"https:\/\/vector.dev\/docs\/reference\/cli\/commands\/vrl-bench\/\"><code>vector vrl bench<\/code><\/a> komutu ile test ederek performans darbo\u011fazlar\u0131n\u0131 tespit edebilirsiniz. Bu, ger\u00e7ek d\u00fcnya y\u00fckleri alt\u0131nda kodunuzun ne kadar h\u0131zl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur.\n<\/div>\n<h3>Hata Y\u00f6netimi: VRL \u0130fadelerinde Beklenmedik Durumlar Nas\u0131l Ele Al\u0131n\u0131r?<\/h3>\n<p>Veri ak\u0131\u015f\u0131nda her zaman beklenmedik durumlar, bozuk formatlar veya eksik alanlar olabilir. VRL, bu t\u00fcr durumlar\u0131 ele almak i\u00e7in <code>catch<\/code> ve <code>is_err()<\/code> fonksiyonlar\u0131n\u0131 sunar:<\/p>\n<pre><code>\n# vector.yaml i\u00e7inde bir remap transformu \u00f6rne\u011fi\n# transforms:\n#   robust_parser:\n#     type: \"remap\"\n#     inputs: [\"my_logs\"]\n#     source: |\n#       # Potansiyel olarak bozuk bir JSON'u g\u00fcvenli bir \u015fekilde ayr\u0131\u015ft\u0131rma\n#       let parsed_data = catch {\n#         parse_json(event.raw_message);\n#       };\n\n#       if is_err(parsed_data) {\n#         # JSON ayr\u0131\u015ft\u0131rma hatas\u0131 olu\u015ftu\n#         event.parse_error = true;\n#         event.error_details = to_string(parsed_data); # Hatay\u0131 logla\n#         # drop() edebiliriz veya hata i\u00e7eren logu farkl\u0131 bir hedefe g\u00f6nderebiliriz\n#         # drop(); \n#       } else {\n#         # Ba\u015far\u0131l\u0131 ayr\u0131\u015ft\u0131rma\n#         event = merge(event, parsed_data);\n#         unset(event.raw_message);\n#       }\n<\/pre>\n<p><\/code><\/p>\n<p><code>catch<\/code> blo\u011fu, potansiyel olarak hata f\u0131rlatabilecek bir ifadeyi sarmalar. E\u011fer blok i\u00e7inde bir hata olu\u015fursa, <code>parsed_data<\/code> de\u011fi\u015fkeni bir hata nesnesi olacakt\u0131r ve <code>is_err()<\/code> fonksiyonu <code>true<\/code> d\u00f6ner. Bu sayede, hatal\u0131 verilerin t\u00fcm i\u015flem hatt\u0131n\u0131 durdurmas\u0131n\u0131 engeller ve sorunlu verileri ayr\u0131 bir \u015fekilde i\u015fleme veya loglama imkan\u0131 tan\u0131r.<\/p>\n<h3>Karma\u015f\u0131k Veri Yap\u0131lar\u0131yla \u00c7al\u0131\u015fma: Diziler ve Nesneler \u00dczerinde \u0130terasyon<\/h3>\n<p>VRL, diziler ve nesneler \u00fczerinde d\u00f6ng\u00fcler (iterasyon) yapma yetene\u011fine de sahiptir, bu da daha karma\u015f\u0131k veri manip\u00fclasyonlar\u0131na olanak tan\u0131r. \u00d6rne\u011fin, bir dizi i\u00e7indeki t\u00fcm IP adreslerini maskelemek isteyebilirsiniz:<\/p>\n<pre><code>\n# transforms:\n#   array_processing:\n#     type: \"remap\"\n#     inputs: [\"my_complex_logs\"]\n#     source: |\n#       # event.ip_addresses = [\"192.168.1.1\", \"10.0.0.5\", \"172.16.0.10\"]\n#       if exists(event.ip_addresses) && type(event.ip_addresses) == \"array\" {\n#         let masked_ips = [];\n#         for ip_addr in event.ip_addresses {\n#           if type(ip_addr) == \"string\" {\n#             push(masked_ips, replace(ip_addr, r\"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\", \"XXX.XXX.XXX.XXX\"));\n#           } else {\n#             push(masked_ips, ip_addr); # String olmayanlar\u0131 oldu\u011fu gibi ekle\n#           }\n#         }\n#         event.ip_addresses = masked_ips;\n#       }\n\n#       # Nesne (map) i\u00e7indeki t\u00fcm alanlar\u0131 d\u00f6n\u00fc\u015ft\u00fcrme (\u00f6rne\u011fin anahtar adlar\u0131n\u0131 k\u00fc\u00e7\u00fck harfe \u00e7evirme)\n#       # let new_metadata = {};\n#       # if exists(event.metadata) && type(event.metadata) == \"object\" {\n#       #   for key, value in event.metadata {\n#       #     new_metadata[to_lower(key)] = value;\n#       #   }\n#       #   event.metadata = new_metadata;\n#       # }\n<\/pre>\n<p><\/code><\/p>\n<p><code>for<\/code> d\u00f6ng\u00fcs\u00fc ile bir dizi veya nesne \u00fczerinde iterate edilebilir. Bu \u00f6rnekte, <code>ip_addresses<\/code> dizisindeki her bir IP adresini maskeleyip yeni bir diziye (<code>masked_ips<\/code>) ekliyoruz. <code>push()<\/code> fonksiyonu, bir eleman\u0131 diziye ekler. Bu, \u00f6zellikle dinamik ve karma\u015f\u0131k veri yap\u0131lar\u0131yla u\u011fra\u015f\u0131rken VRL'nin ne kadar g\u00fc\u00e7l\u00fc olabilece\u011fini g\u00f6sterir. Bu ileri d\u00fczey teknikler, VRL ile veri d\u00f6n\u00fc\u015f\u00fcm projelerinizde daha fazla esneklik, sa\u011flaml\u0131k ve performans elde etmenizi sa\u011flayacakt\u0131r.<\/p>\n<h2>Mobil Uyumlu HTML ve VRL \u00c7\u0131kt\u0131lar\u0131: Verilerinizi Her Yerde Nas\u0131l G\u00f6rselle\u015ftirirsiniz?<\/h2>\n<p>VRL ile i\u015fledi\u011fimiz ve d\u00f6n\u00fc\u015ft\u00fcrd\u00fc\u011f\u00fcm\u00fcz veriler, genellikle bir g\u00f6zlemlenebilirlik platformuna (Elasticsearch, Loki, Prometheus vb.) g\u00f6nderilir ve ard\u0131ndan Grafana gibi ara\u00e7larla g\u00f6rselle\u015ftirilir. Bu g\u00f6rselle\u015ftirmelerin, g\u00fcn\u00fcm\u00fcz mobil odakl\u0131 d\u00fcnyas\u0131nda tabletler ve ak\u0131ll\u0131 telefonlar dahil olmak \u00fczere farkl\u0131 ekran boyutlar\u0131na uyumlu olmas\u0131 b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. VRL'nin kendisi do\u011frudan HTML \u00fcretmese de, VRL'nin temizledi\u011fi ve yap\u0131land\u0131rd\u0131\u011f\u0131 veriler, mobil uyumlu kontrol panellerinde veya raporlama aray\u00fczlerinde \u00e7ok daha etkili bir \u015fekilde sunulabilir.<\/p>\n<p>Bir veri g\u00f6rselle\u015ftirme panosu veya bir log tablosu olu\u015fturdu\u011funuzda, kullan\u0131c\u0131lar\u0131n bu bilgilere herhangi bir cihazdan rahat\u00e7a eri\u015febilmesi gerekir. Mobil uyumluluk (responsive design), web sayfalar\u0131n\u0131n farkl\u0131 ekran boyutlar\u0131na ve y\u00f6nelimlerine otomatik olarak uyum sa\u011flamas\u0131 anlam\u0131na gelir. Bu, genellikle CSS Media Queries kullan\u0131larak ba\u015far\u0131l\u0131r.<\/p>\n<p>VRL'nin rol\u00fc, bu g\u00f6rselle\u015ftirmeleri m\u00fcmk\u00fcn k\u0131lan temiz ve tutarl\u0131 bir veri ak\u0131\u015f\u0131 sa\u011flamakt\u0131r. E\u011fer VRL ile verileriniz standardize edilmemi\u015f veya karma\u015f\u0131ksa, g\u00f6rselle\u015ftirme ara\u00e7lar\u0131 da zorlanacak ve mobil ekranlarda da\u011f\u0131n\u0131k veya anlams\u0131z g\u00f6r\u00fcnecektir. Ancak VRL sayesinde:<\/p>\n<ul>\n<li><strong>Tutarl\u0131 Alan Adlar\u0131:<\/strong> Farkl\u0131 kaynaklardan gelen 'log_level', 'severity', 'priority' gibi alanlar\u0131 'level' gibi tek bir standart alana d\u00f6n\u00fc\u015ft\u00fcrerek, mobil panolarda veri s\u00fctunlar\u0131n\u0131 tutarl\u0131 bir \u015fekilde g\u00f6stermek m\u00fcmk\u00fcn olur.<\/li>\n<li><strong>Optimize Edilmi\u015f Veri Hacmi:<\/strong> Gereksiz alanlar\u0131 b\u0131rakmak veya verileri \u00f6zetlemek, mobil cihazlar i\u00e7in daha az veri y\u00fcklenmesi anlam\u0131na gelir, bu da daha h\u0131zl\u0131 y\u00fckleme s\u00fcreleri ve daha iyi bir kullan\u0131c\u0131 deneyimi sa\u011flar.<\/li>\n<li><strong>Maskelenmi\u015f Hassas Bilgiler:<\/strong> Hassas verilerin mobil cihazlarda yanl\u0131\u015fl\u0131kla g\u00f6sterilmesini engelleyerek g\u00fcvenlik risklerini azalt\u0131r.<\/li>\n<\/ul>\n<p>A\u015fa\u011f\u0131da, VRL ile i\u015flenmi\u015f verileri g\u00f6steren bir HTML tablosunun mobil uyumlu hale getirilmesi i\u00e7in kullanabilece\u011finiz temel bir CSS <code>media query<\/code> \u00f6rne\u011fi bulunmaktad\u0131r. Bu \u00f6rnek, bir veri tablosunun k\u00fc\u00e7\u00fck ekranlarda nas\u0131l daha okunabilir hale getirilebilece\u011fini g\u00f6sterir:<\/p>\n<pre><code class=\"language-html\">\n<style>\n  \/* Genel tablo stil tan\u0131mlar\u0131 *\/\n  .data-table {\n    width: 100%;\n    border-collapse: collapse;\n    margin-bottom: 20px;\n    font-family: Arial, sans-serif;\n  }\n  .data-table th, .data-table td {\n    border: 1px solid #ddd;\n    padding: 10px;\n    text-align: left;\n  }\n  .data-table th {\n    background-color: #f2f2f2;\n    font-weight: bold;\n    color: #333;\n  }\n  .data-table tbody tr:nth-child(even) {\n    background-color: #f9f9f9;\n  }\n  .data-table tbody tr:hover {\n    background-color: #e9e9e9;\n  }\n\n  \/* Mobil cihazlar i\u00e7in responsive ayarlar *\/\n  @media screen and (max-width: 768px) {\n    .data-table {\n      border: 0; \/* Mobil g\u00f6r\u00fcn\u00fcmde tablo kenarl\u0131klar\u0131n\u0131 kald\u0131r *\/\n    }\n    .data-table thead {\n      display: none; \/* Tablo ba\u015fl\u0131klar\u0131n\u0131 gizle *\/\n    }\n    .data-table, .data-table tbody, .data-table tr, .data-table td {\n      display: block; \/* T\u00fcm tablo elemanlar\u0131n\u0131 blok olarak g\u00f6ster *\/\n      width: 100%; \/* Geni\u015fli\u011fi %100 yap *\/\n    }\n    .data-table tr {\n      margin-bottom: 15px;\n      border: 1px solid #ccc;\n      display: flex; \/* Flexbox ile sat\u0131r i\u00e7i d\u00fczen *\/\n      flex-direction: column; \/* \u0130\u00e7erikleri dikey hizala *\/\n      padding: 10px;\n      background-color: #fff;\n      box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n    }\n    .data-table td {\n      text-align: right; \/* Veriyi sa\u011fa yasla *\/\n      padding-left: 50%; \/* Ba\u015fl\u0131k i\u00e7in sol tarafta bo\u015fluk b\u0131rak *\/\n      position: relative;\n      border: none; \/* H\u00fccre kenarl\u0131klar\u0131n\u0131 kald\u0131r *\/\n      padding-top: 5px;\n      padding-bottom: 5px;\n    }\n    .data-table td::before {\n      content: attr(data-label); \/* data-label \u00f6zelli\u011finden ba\u015fl\u0131\u011f\u0131 al *\/\n      position: absolute;\n      left: 10px; \/* Ba\u015fl\u0131\u011f\u0131 sol tarafa hizala *\/\n      width: 45%;\n      padding-right: 10px;\n      white-space: nowrap; \/* Ba\u015fl\u0131\u011f\u0131n tek sat\u0131rda kalmas\u0131n\u0131 sa\u011fla *\/\n      text-align: left;\n      font-weight: bold;\n      color: #555;\n    }\n  }\n<\/style>\n\n<table class=\"data-table\">\n  <thead>\n    <tr>\n      <th>Timestamp<\/th>\n      <th>Level<\/th>\n      <th>Service<\/th>\n      <th>Message<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td data-label=\"Timestamp\">2023-10-27 10:30:00<\/td>\n      <td data-label=\"Level\">INFO<\/td>\n      <td data-label=\"Service\">auth-service<\/td>\n      <td data-label=\"Message\">User 'alice' logged in successfully.<\/td>\n    <\/tr>\n    <tr>\n      <td data-label=\"Timestamp\">2023-10-27 10:31:15<\/td>\n      <td data-label=\"Level\">ERROR<\/td>\n      <td data-label=\"Service\">payment-gateway<\/td>\n      <td data-label=\"Message\">Transaction failed for order #12345: [MASKED_EMAIL]<\/td>\n    <\/tr>\n    <tr>\n      <td data-label=\"Timestamp\">2023-10-27 10:32:05<\/td>\n      <td data-label=\"Level\">WARN<\/td>\n      <td data-label=\"Service\">order-processor<\/td>\n      <td data-label=\"Message\">Inventory low for product ID P567.<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n<\/pre>\n<p><\/code><\/p>\n<p>Bu CSS kurallar\u0131, <code>768px<\/code> geni\u015fli\u011finden daha k\u00fc\u00e7\u00fck ekranlarda (\u00e7o\u011fu tablet ve telefon) bir tablonun g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc tamamen de\u011fi\u015ftirir. Normalde sat\u0131r ve s\u00fctunlar halinde g\u00f6r\u00fcnen tablo, mobil cihazlarda her sat\u0131r\u0131 ba\u011f\u0131ms\u0131z bir \"kart\" gibi g\u00f6sterir. Her h\u00fccre (<code>td<\/code>), kendi ba\u015fl\u0131\u011f\u0131n\u0131 (<code>data-label<\/code> \u00f6zelli\u011finden al\u0131nan) solunda g\u00f6sterir ve i\u00e7eri\u011fini sa\u011fa yaslar. Bu, mobil cihazlarda geni\u015f tablolar\u0131n yatay kayd\u0131rma olmadan okunmas\u0131n\u0131 \u00e7ok daha kolay hale getirir. VRL'nin sa\u011flad\u0131\u011f\u0131 temiz ve yap\u0131land\u0131r\u0131lm\u0131\u015f veri, bu t\u00fcr mobil uyumlu g\u00f6rselle\u015ftirmelerin temelini olu\u015fturur, b\u00f6ylece operasyonel ekipler nerede olursa olsun, cihaz fark etmeksizin kritik verilere eri\u015febilir ve h\u0131zl\u0131ca yan\u0131t verebilir.<\/p>\n<h2>Sonu\u00e7: Vector's VRL ile G\u00f6zlemlenebilirli\u011fin Gelece\u011fi ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Vector Remap Language (VRL), modern g\u00f6zlemlenebilirlik altyap\u0131lar\u0131n\u0131n kalbinde yer alan g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu makale boyunca, VRL'nin temel s\u00f6zdiziminden ileri d\u00fczey kullan\u0131m senaryolar\u0131na, ger\u00e7ek d\u00fcnya vaka analizlerinden mobil uyumlu veri g\u00f6rselle\u015ftirme ipu\u00e7lar\u0131na kadar bir\u00e7ok y\u00f6n\u00fcn\u00fc ke\u015ffettik. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, VRL sadece bir \"veri d\u00f6n\u00fc\u015f\u00fcm dili\" olman\u0131n \u00f6tesinde, veri kalitesini art\u0131ran, maliyetleri d\u00fc\u015f\u00fcren, gizlilik standartlar\u0131na uyumu kolayla\u015ft\u0131ran ve operasyonel verimlili\u011fi maksimize eden stratejik bir enstr\u00fcmand\u0131r.<\/p>\n<p>Da\u011f\u0131t\u0131k sistemlerin karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, farkl\u0131 kaynaklardan gelen heterojen veri ak\u0131\u015flar\u0131n\u0131 y\u00f6netme yetene\u011fi giderek daha kritik hale gelmektedir. VRL, bu zorlu\u011fun \u00fcstesinden gelmek i\u00e7in m\u00fchendislere ve operasyon ekiplerine benzersiz bir g\u00fc\u00e7 ve esneklik sunar. Verileriniz \u00fczerinde tam kontrol sa\u011flayarak, sadece ne toplad\u0131\u011f\u0131n\u0131z\u0131 de\u011fil, ayn\u0131 zamanda toplad\u0131\u011f\u0131n\u0131z veriden ne kadar de\u011fer elde etti\u011finizi de belirleyebilirsiniz. Bu da g\u00f6zlemlenebilirli\u011fin pasif bir veri toplama faaliyetinden, proaktif bir operasyonel zek\u00e2 motoruna d\u00f6n\u00fc\u015fmesini sa\u011flar. VRL sayesinde, ekipler daha az zaman\u0131 veri temizlemeye ve daha \u00e7ok zaman\u0131 sistem sa\u011fl\u0131\u011f\u0131n\u0131 iyile\u015ftirmeye ve inovasyona harcayabilirler.<\/p>\n<p>VRL'nin gelece\u011fi olduk\u00e7a parlak g\u00f6r\u00fcnmektedir. Toplulu\u011fun s\u00fcrekli katk\u0131lar\u0131 ve geli\u015ftiricilerin vizyonuyla, daha da geli\u015fmi\u015f fonksiyonlar ve entegrasyonlar g\u00f6rmeyi bekleyebiliriz. E\u011fer hen\u00fcz VRL ile tan\u0131\u015fmad\u0131ysan\u0131z, Vector dok\u00fcmantasyonunu inceleyerek ve basit \u00f6rneklerle ba\u015flayarak bu g\u00fc\u00e7l\u00fc dilin yeteneklerini ke\u015ffetmenizi \u015fiddetle tavsiye ederiz. G\u00f6zlemlenebilirlik stratejinizi bir \u00fcst seviyeye ta\u015f\u0131mak i\u00e7in VRL, vazge\u00e7ilmez bir m\u00fcttefikiniz olacakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>VRL \u00f6\u011frenmek zor mu?<\/dt>\n<dd>Hay\u0131r, VRL sezgisel ve hafif bir dildir. Temel programlama prensiplerine (de\u011fi\u015fkenler, ko\u015fullu ifadeler, fonksiyonlar) a\u015fina olan herkes k\u0131sa s\u00fcrede VRL'yi \u00f6\u011frenebilir. Dok\u00fcmantasyonunda bolca \u00f6rnek bulunur ve topluluk deste\u011fi de olduk\u00e7a g\u00fc\u00e7l\u00fcd\u00fcr. Yeni ba\u015flayanlar i\u00e7in h\u0131zla adapte olabilecekleri bir yap\u0131ya sahiptir.<\/dd>\n<dt>Vector d\u0131\u015f\u0131nda VRL kullanabilir miyim?<\/dt>\n<dd>VRL, Vector projesiyle birlikte geli\u015ftirilmi\u015f \u00f6zel bir dildir ve \u00f6ncelikli olarak Vector'\u00fcn bir par\u00e7as\u0131 olarak \u00e7al\u0131\u015f\u0131r. Do\u011frudan ba\u011f\u0131ms\u0131z bir VRL yorumlay\u0131c\u0131s\u0131 veya k\u00fct\u00fcphanesi olarak kullan\u0131lmas\u0131 ama\u00e7lanmam\u0131\u015ft\u0131r. Ancak, Vector'\u00fcn kendisi mod\u00fcler yap\u0131da oldu\u011fu i\u00e7in, VRL yetenekleri Vector'\u00fcn farkl\u0131 bile\u015fenleri aras\u0131nda entegre bir \u015fekilde kullan\u0131l\u0131r.<\/dd>\n<dt>VRL performans \u00fczerinde nas\u0131l bir etki yapar?<\/dt>\n<dd>VRL, Rust ile yaz\u0131ld\u0131\u011f\u0131 i\u00e7in olduk\u00e7a performansl\u0131d\u0131r. Ancak, yazd\u0131\u011f\u0131n\u0131z VRL kodunun karma\u015f\u0131kl\u0131\u011f\u0131 ve i\u015fledi\u011fi veri hacmi performans\u0131 etkileyebilir. \u00d6zellikle \u00e7ok karma\u015f\u0131k regexler veya b\u00fcy\u00fck veri yap\u0131lar\u0131 \u00fczerinde yo\u011fun d\u00f6ng\u00fcler kullanmak gecikmelere neden olabilir. Bu nedenle, makalede belirtildi\u011fi gibi erken filtreleme ve kod optimizasyonu \u00f6nemlidir. Genel olarak, iyi yaz\u0131lm\u0131\u015f VRL kodlar\u0131 performansa minimum d\u00fczeyde etki eder.<\/dd>\n<dt>VRL hangi veri tiplerini destekler?<\/dt>\n<dd>VRL, temel veri tiplerini destekler: say\u0131lar (tam ve ondal\u0131k), dizeler, boolean de\u011ferler, diziler (array) ve nesneler (object\/map). Ayr\u0131ca, de\u011ferin olmad\u0131\u011f\u0131n\u0131 belirtmek i\u00e7in <code>null<\/code> ve ba\u015far\u0131l\u0131 veya hatal\u0131 sonu\u00e7lar\u0131 ifade etmek i\u00e7in <code>ok<\/code>\/<code>err<\/code> tipleri de bulunur. Bu geni\u015f tip deste\u011fi, hemen hemen her t\u00fcrl\u00fc veri yap\u0131s\u0131yla \u00e7al\u0131\u015fman\u0131za olanak tan\u0131r.<\/dd>\n<dt>VRL ile ne t\u00fcr g\u00fcvenlik uygulamalar\u0131 yapabilirim?<\/dt>\n<dd>VRL ile hassas bilgileri (e-posta, IP adresi, kredi kart\u0131 numaralar\u0131 vb.) maskeleme, anonimle\u015ftirme veya tamamen \u00e7\u0131karma i\u015flemleri yapabilirsiniz. Regex tabanl\u0131 fonksiyonlar sayesinde, loglardaki belirli desenleri tespit edip de\u011fi\u015ftirebilirsiniz. Bu, KVKK, GDPR gibi veri gizlili\u011fi d\u00fczenlemelerine uyum sa\u011flaman\u0131za yard\u0131mc\u0131 olur ve g\u00fcvenlik denetimlerinde kolayl\u0131k sa\u011flar.<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-31426","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vector&#039;s VRL&#039;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak<\/title>\n<meta name=\"description\" content=\"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL&#039;nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vector&#039;s VRL&#039;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak\" \/>\n<meta property=\"og:description\" content=\"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL&#039;nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-09T18:31:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Vector&#8217;s VRL&#8217;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak\",\"datePublished\":\"2025-10-09T18:31:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\"},\"wordCount\":3908,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\",\"name\":\"Vector's VRL'ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-09T18:31:47+00:00\",\"description\":\"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL'nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vector&#8217;s VRL&#8217;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Vector's VRL'ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak","description":"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL'nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/","og_locale":"tr_TR","og_type":"article","og_title":"Vector's VRL'ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak","og_description":"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL'nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!","og_url":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-09T18:31:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Vector&#8217;s VRL&#8217;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak","datePublished":"2025-10-09T18:31:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/"},"wordCount":3908,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/","url":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/","name":"Vector's VRL'ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-09T18:31:47+00:00","description":"Modern g\u00f6zlemlenebilirlik platformlar\u0131nda verilerinizi etkin bir \u015fekilde y\u00f6netmek ve anlamland\u0131rmak, g\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k sistem mimarilerinde kritik bir zorunluluk haline gelmi\u015ftir. Peki, farkl\u0131 kaynaklardan gelen heterojen log, metrik ve izleme verilerini standart bir formata d\u00f6n\u00fc\u015ft\u00fcrerek, de\u011ferli i\u00e7g\u00f6r\u00fcler elde etmek ve operasyonel verimlili\u011fi art\u0131rmak m\u00fcmk\u00fcn m\u00fcd\u00fcr? \u0130\u015fte tam da bu noktada, Vector Remap Language (VRL) devreye girerek, veri ak\u0131\u015f\u0131n\u0131z\u0131 dinamik bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve zenginle\u015ftirme g\u00fcc\u00fcn\u00fc parmaklar\u0131n\u0131z\u0131n ucuna getiriyor. Bu makalede, VRL'nin ne oldu\u011funu, temel prensiplerini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Gelin, veri d\u00f6n\u00fc\u015f\u00fcm\u00fcnde ustala\u015fman\u0131n kap\u0131lar\u0131n\u0131 aralayal\u0131m!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/vectors-vrlye-kapsamli-giris-veri-donusumunde-ustalasmak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Vector&#8217;s VRL&#8217;ye Kapsaml\u0131 Giri\u015f: Veri D\u00f6n\u00fc\u015f\u00fcm\u00fcnde Ustala\u015fmak"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31426"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31426\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}