Takip et

New Relic Drop Kurallarından Pipeline Cloud Kurallarına Terraform ile Geçiş Rehberi

Log verileri günümüz modern uygulamalarının gözlemlenebilirliği için hayati öneme sahip olsa da, bu verilerin yönetimi giderek karmaşık ve maliyetli hale gelebilir. Gereksiz veya düşük değerli logların birikmesi, sadece depolama ve işleme maliyetlerini artırmakla kalmaz, aynı zamanda kritik bilgilerin gözden kaçmasına neden olan bir “veri gürültüsü” yaratır. İşte bu noktada, New Relic kullanıcıları için eski usul Drop Kurallarından, daha esnek ve güçlü Pipeline Cloud Kurallarına Terraform ile geçiş yapmak, hem operasyonel verimliliği artırmanın hem de maliyetleri optimize etmenin anahtarıdır. Bu rehber, geçiş sürecini adım adım açıklayacak ve Terraform’un gücünü kullanarak bu dönüşümü nasıl otomatikleştirebileceğinizi gösterecektir.

Log yönetimi, sistemlerinizin ve uygulamalarınızın sağlığını, performansını ve güvenliğini anlamak için vazgeçilmez bir disiplindir. New Relic gibi platformlar, milyarlarca log olayını toplayarak bu devasa veri yığınını anlamlı içgörülere dönüştürmemizi sağlar. Ancak, her log satırı eşit derecede değerli değildir. Gürültülü veya fazla ayrıntılı loglar, hem analiz süreçlerini yavaşlatır hem de bulut maliyetlerini gereksiz yere artırır. Bu sorunu çözmek için New Relic, logları alım noktasında filtrelememizi sağlayan mekanizmalar sunar. Bu mekanizmaların başında “Drop Kuralları” gelmekteydi, ancak teknoloji geliştikçe yerini daha gelişmiş “Pipeline Cloud Kuralları”na bırakmıştır.

New Relic Drop Kuralları Nelerdir ve Neden Değişim Gerekiyor?

New Relic Drop Kuralları, platforma gönderilen log verilerini, belirli kriterlere göre daha veri alım aşamasında filtreleyerek düşürmenize (drop etmenize) olanak tanıyan bir özelliktir. Temel amacı, gereksiz logların New Relic’e ulaşmasını engelleyerek hem veri hacmini azaltmak hem de işleme ve depolama maliyetlerinden tasarruf etmektir. Genellikle basit anahtar kelime eşleşmeleri veya temel düzenli ifade (RegEx) desenleri kullanarak çalışır ve “log içeriğinde ‘DEBUG’ kelimesi geçiyorsa bu logu düşür” gibi kurallar tanımlamanıza izin verir.

Tarihsel olarak, Drop Kuralları birçok organizasyon için önemli bir maliyet optimizasyon aracı olmuştur. Ancak zamanla, bu kuralların bazı sınırlamaları ortaya çıktı:

  • Sınırlı Esneklik: Drop Kuralları genellikle yalnızca logların düşürülmesine odaklanmıştır. Logları dönüştürme, zenginleştirme veya farklı hedeflere yönlendirme gibi daha gelişmiş işlemler için yeterli yeteneğe sahip değillerdi.
  • Yönetim Zorluğu: Kuralların sayısı arttıkça, karmaşık RegEx’ler ve çakışan filtreler nedeniyle yönetimleri zorlaşabiliyordu. Özellikle büyük ölçekli altyapılarda, hangi kuralın ne yaptığını takip etmek zahmetli hale geliyordu.
  • Terraform Entegrasyonu Eksikliği: Drop Kuralları genellikle New Relic UI üzerinden manuel olarak yönetiliyordu. Bu durum, “Infrastructure as Code” (IaC) yaklaşımlarına uyumsuzluk gösteriyor, değişiklik yönetimini ve versiyonlamayı zorlaştırıyordu. Otomasyon eksikliği, hatalara açık ve tekrarlanabilirliği düşük bir süreç yaratıyordu.
  • Bağlam Eksikliği: Logları düşürme kararı, genellikle logun kendisindeki belirli bir desenle sınırlıydı. Logun kaynağı, uygulaması veya diğer meta verileri gibi bağlamsal bilgileri kullanarak daha akıllı kararlar almak zordu.

Bu sınırlamalar, New Relic’i daha güçlü, esnek ve otomasyona uyumlu bir log işleme mekanizmasına yöneltti: Pipeline Cloud Kuralları.

Pipeline Cloud Kuralları Nedir ve Hangi Avantajları Sunar?

New Relic Pipeline Cloud Kuralları, log yönetimini bir sonraki seviyeye taşıyan modern ve merkezi bir yaklaşımdır. Bunlar sadece logları düşürmekle kalmaz, aynı zamanda onları dönüştürme, zenginleştirme, yönlendirme ve hatta birden fazla kuralı birleştirerek karmaşık iş akışları oluşturma yeteneği sunar. Pipeline Cloud Kuralları, New Relic Log Management’ın ayrılmaz bir parçasıdır ve veri alımından nihai depolamaya kadar log akışının her aşamasını kontrol etmenizi sağlar.

Sunduğu başlıca avantajlar şunlardır:

  • Gelişmiş Filtreleme ve Dönüştürme: Pipeline Kuralları, logları sadece düşürmekle kalmaz, aynı zamanda belirli alanları ayıklama, yeniden biçimlendirme, hassas verileri maskeleme veya loglara ek meta veriler ekleme gibi çok daha karmaşık işlemler yapabilir. Örneğin, bir logdaki IP adresini çıkarıp yeni bir alan olarak ekleyebilir veya bir hata mesajını daha okunabilir bir hale getirebilirsiniz.
  • Merkezi Yönetim ve Görselleştirme: Tüm kurallar tek bir yerden yönetilir ve log akışı üzerinde gerçek zamanlı etkileri gözlemlenebilir. Bu, sorun gidermeyi ve kural optimizasyonunu kolaylaştırır.
  • Terraform Entegrasyonu: En önemli avantajlardan biri, Pipeline Cloud Kurallarının New Relic’in API’si aracılığıyla tam olarak yönetilebilir olmasıdır. Bu, Terraform gibi Infrastructure as Code (IaC) araçlarıyla tam entegrasyon anlamına gelir. Kuralları kod olarak tanımlayabilir, versiyon kontrol sistemlerinde saklayabilir ve CI/CD süreçleriyle otomatik olarak dağıtabilirsiniz. Bu, değişikliklerin güvenli, tekrarlanabilir ve denetlenebilir olmasını sağlar.
  • Maliyet Optimizasyonu ve Gelişmiş Observability: Gereksiz logları etkin bir şekilde filtreleyerek veya düşük değerli logları dönüştürerek maliyetleri önemli ölçüde düşürebilirsiniz. Aynı zamanda, yalnızca anlamlı ve eyleme geçirilebilir logların saklanması, genel gözlemlenebilirlik kalitesini artırır ve anormalliklerin daha hızlı tespit edilmesine yardımcı olur.
  • Çoklu Koşullar ve Sıralama: Birden fazla eşleşme koşulu tanımlayabilir ve bu kuralların hangi sırada uygulanacağını belirleyebilirsiniz. Bu, daha karmaşık iş mantıklarını ve veri işleme senaryolarını destekler.

Aşağıdaki tablo, iki yaklaşım arasındaki temel farkları özetlemektedir:

Özellik New Relic Drop Kuralları New Relic Pipeline Cloud Kuralları
Temel İşlev Yalnızca logları düşürme Logları düşürme, dönüştürme, zenginleştirme, yönlendirme
Esneklik Düşük Yüksek
Yönetim Genellikle UI üzerinden, manuel UI veya API üzerinden, IaC (Terraform) ile
Otomasyon Desteği Sınırlı/Yok Tam (Terraform ile güçlü entegrasyon)
Karmaşık İşlemler Desteklemez Destekler (alan çıkarma, yeniden biçimlendirme vb.)
Maliyet Optimizasyonu Evet (veri hacmini azaltarak) Evet (veri hacmini azaltarak ve değeri artırarak)
Gözlemlenebilirlik Temel Gelişmiş (daha temiz ve anlamlı verilerle)

Özetle, Drop Kuralları basit bir “ya hep ya hiç” filtreleme sağlarken, Pipeline Cloud Kuralları log verileriniz üzerinde çok daha incelikli ve kontrol edilebilir bir yönetim imkanı sunar. Özellikle Infrastructure as Code (IaC) prensiplerini benimsemiş ekipler için Terraform ile Pipeline Cloud Kuralları yönetimi, log altyapısının çevik, ölçeklenebilir ve denetlenebilir olmasını sağlar.

Terraform ile New Relic Pipeline Cloud Kuralları Nasıl Yönetilir?

Log yönetim süreçlerimizi otomatikleştirmek ve “Infrastructure as Code” (IaC) prensiplerini New Relic log filtrelerimize de uygulamak, Pipeline Cloud Kurallarının en büyük avantajlarından biridir. Terraform, bu otomasyonu sağlamak için mükemmel bir araçtır. Bu bölümde, Terraform ortamınızı nasıl hazırlayacağınızı ve ilk Pipeline Cloud kuralınızı kod ile nasıl oluşturacağınızı adım adım inceleyeceğiz. Bu sayede, log filtrelerinizi versiyon kontrol altında tutabilir, değişiklikleri güvenle uygulayabilir ve tekrarlanabilir dağıtımlar gerçekleştirebilirsiniz.

Terraform Ortamını Hazırlama: Gerekli Adımlar Nelerdir?

Terraform ile New Relic kaynaklarını yönetmeye başlamadan önce, gerekli araçları kurmanız ve kimlik doğrulamasını yapılandırmanız gerekir.

  1. Terraform CLI Kurulumu: Öncelikle sisteminizde Terraform CLI’ın kurulu olduğundan emin olun. Resmi Terraform web sitesinden işletim sisteminize uygun kurulum yönergelerini takip edebilirsiniz. Kurulumdan sonra terminalinizde terraform --version komutunu çalıştırarak başarılı olup olmadığını kontrol edebilirsiniz.
  2. New Relic API Key Temini: Terraform’un New Relic hesabınızda işlem yapabilmesi için bir New Relic API anahtarına ihtiyacınız olacak. Bu, genellikle New Relic One arayüzünden (API Keys bölümü altında) oluşturulan bir ADMIN User Key olmalıdır. Bu anahtarı güvende tutun, zira New Relic hesabınızda tam yetki sağlar.
  3. New Relic Hesap Kimliği (Account ID): Kuralı oluşturacağınız New Relic hesabınızın kimliğini de bilmeniz gerekir. Bu, genellikle New Relic One URL’sinde veya API Anahtarları sayfasında bulunur.
  4. Terraform Proje Dizini Oluşturma: Yerel diskinizde yeni bir dizin oluşturun (örneğin, newrelic-pipeline-rules) ve bu dizine geçin. Tüm Terraform yapılandırma dosyalarınızı burada saklayacaksınız.
  5. New Relic Provider Yapılandırması: main.tf adında bir dosya oluşturarak New Relic sağlayıcısını yapılandırın. Bu dosya, Terraform’un New Relic ile nasıl iletişim kuracağını tanımlar. API anahtarınızı doğrudan buraya yazmak yerine, ortam değişkeni olarak veya bir variables.tf dosyası aracılığıyla sağlamak daha güvenlidir.


provider "newrelic" {
  # New Relic API anahtarınızı ortam değişkeni olarak sağlamanız önerilir:
  # export NEW_RELIC_API_KEY="NRAK-..."
  # Alternatif olarak: api_key = var.new_relic_api_key
  
  # Account ID'nizi ortam değişkeni olarak sağlamanız önerilir:
  # export NEW_RELIC_ACCOUNT_ID="1234567"
  # Alternatif olarak: account_id = var.new_relic_account_id
}

variable "new_relic_api_key" {
  description = "New Relic Admin User Key"
  type        = string
  sensitive   = true
  default     = "" # Ortam değişkeni ayarlanmadıysa boş bırakılabilir
}

variable "new_relic_account_id" {
  description = "New Relic Account ID"
  type        = number
}
        


Yukarıdaki örnekte, new_relic_api_key ve new_relic_account_id değişkenlerini tanımladık. Bu değişkenleri ya bir terraform.tfvars dosyasına yazarak ya da ortam değişkenleri olarak (export NEW_RELIC_API_KEY="..." ve export NEW_RELIC_ACCOUNT_ID="1234567") sağlayarak kullanabilirsiniz. Ortam değişkenleri, hassas verileri doğrudan kod içinde tutmadığı için daha güvenli bir yaklaşımdır.

  1. Terraform Init ve Plan: Yapılandırma dosyalarınızı oluşturduktan sonra, terminalde proje dizininize giderek aşağıdaki komutları çalıştırın:
    • terraform init: Bu komut, New Relic sağlayıcısını indirir ve projeniz için gerekli backend yapılandırmasını yapar.
    • terraform plan: Bu komut, Terraform'un yapacağı değişiklikleri size gösterir. Henüz bir kaynak tanımlamadığımız için, şimdilik sadece sağlayıcının doğru yapılandırıldığını teyit edecektir.

İlk Pipeline Cloud Kuralını Terraform ile Oluşturma

Şimdi, ortamımız hazır olduğuna göre, ilk New Relic Pipeline Cloud kuralımızı Terraform ile tanımlayabiliriz. newrelic_cloud_pipeline_rule kaynağını kullanarak basit bir kural oluşturalım: örneğin, "DEBUG" seviyesindeki tüm logları düşüren bir kural.


resource "newrelic_cloud_pipeline_rule" "drop_debug_logs" {
  account_id  = var.new_relic_account_id
  description = "Uygulama genelindeki DEBUG seviyesi loglarını düşürür."
  enabled     = true
  # 'matching_rules' bloğu, hangi logların bu kurala uyacağını tanımlar.
  # Birden fazla eşleşme kuralı tanımlanabilir ve AND mantığıyla birleşir.
  matching_rules {
    field = "log_level"
    operator = "EQ" # Eşitlik operatörü
    value = "DEBUG"
  }

  # 'actions' bloğu, eşleşen loglar üzerinde yapılacak işlemleri tanımlar.
  # Şu anda sadece 'drop' eylemi desteklenmektedir.
  actions {
    action = "drop"
  }
}
        


Yukarıdaki kod bloğu, drop_debug_logs adında bir Pipeline Cloud kuralı tanımlar.

  • account_id: Kuralın uygulanacağı New Relic hesap kimliği.
  • description: Kuralın ne yaptığını açıklayan kısa bir metin.
  • enabled: Kuralın etkin olup olmadığını belirler (true veya false).
  • matching_rules: Bu blok, kuralın hangi loglara uygulanacağını belirler.
    • field: Log içindeki hangi alanın kontrol edileceğini belirtir (örneğin, log_level, message, hostname).
    • operator: Eşleşme operatörünü belirtir (EQ - eşit, NE - eşit değil, CONTAINS - içerir, NOT_CONTAINS - içermez, MATCHES - RegEx eşleşmesi, NOT_MATCHES - RegEx eşleşmez, STARTS_WITH, ENDS_WITH).
    • value: Eşleştirilecek değeri belirtir.
  • actions: Bu blok, matching_rules ile eşleşen loglar üzerinde yapılacak işlemi tanımlar. Şu anda ana işlem drop'tır. Gelecekte farklı dönüştürme veya zenginleştirme eylemleri de eklenebilir.


Uzman İpucu: matching_rules içindeki operator olarak MATCHES veya NOT_MATCHES kullandığınızda, value alanı bir düzenli ifade (RegEx) olmalıdır. RegEx'ler karmaşık olabileceğinden, New Relic'in kendi RegEx test aracını veya regex101.com gibi siteleri kullanarak test etmek, beklenmedik hataları önlemek açısından kritik öneme sahiptir. Yanlış bir RegEx, ya gereksiz logların geçmesine ya da kritik logların düşürülmesine neden olabilir.

Bu kodu main.tf dosyanıza ekledikten sonra, değişiklikleri uygulamak için tekrar aşağıdaki komutları çalıştırın:

  • terraform plan: Tanımladığınız kuralın oluşturulacağını (+ create) gösteren bir çıktı almalısınız.
  • terraform apply: Terraform'un bu kuralı New Relic hesabınızda oluşturmasını onaylamak için yes yazın.

Başarılı bir uygulamanın ardından, New Relic One arayüzüne (Log Management -> Pipeline Rules) giderek yeni oluşturduğunuz kuralı görebilirsiniz. Bu sayede, log filtreleme stratejilerinizi kod ile yönetmeye başlamış olursunuz. Bu temel adımlar, daha karmaşık geçiş senaryoları için sağlam bir zemin oluşturur.

Gerçek Dünya Senaryosu: Eski Drop Kurallarını Pipeline Cloud Kurallarına Taşıma

Birçok kuruluş, New Relic'teki log yönetimini optimize etmek amacıyla eski Drop Kurallarını kullanmaya başlamıştır. Ancak, bu kuralların sınırlamaları göz önüne alındığında, daha gelişmiş olan Pipeline Cloud Kurallarına geçiş yapmak kaçınılmaz bir hale gelmiştir. Bu geçiş süreci, sadece teknolojik bir yükseltme değil, aynı zamanda log verisi stratejinizi gözden geçirme ve maliyet optimizasyonu için yeni fırsatlar yaratma anlamına da gelir. Bu bölümde, gerçek bir dünya senaryosu üzerinden eski Drop Kurallarını Pipeline Cloud Kurallarına Terraform ile nasıl taşıyacağımızı adım adım inceleyeceğiz. Odak noktamız, veri gürültüsünü azaltmak ve sadece eyleme geçirilebilir logları tutmak olacak.

Mevcut Drop Kurallarını Anlama ve Envanterini Çıkarma

Geçişin ilk ve en kritik adımı, mevcut durumunuzu eksiksiz bir şekilde anlamaktır. New Relic hesabınızda tanımlı olan tüm Drop Kurallarının kapsamlı bir envanterini çıkarmalısınız. Bu envanter, her kuralın ne yaptığını, hangi logları etkilediğini ve ne kadar veri hacmini düşürdüğünü içermelidir.

  1. New Relic UI Üzerinden Gözden Geçirme: New Relic One arayüzünde "Log Management" bölümüne gidin ve "Drop Filter Rules" (veya benzer bir başlık altında) mevcut kurallarınızı listeleyin. Her bir kuralın açıklamasını, filtreleme desenini (genellikle bir RegEx veya anahtar kelime) ve etkin olup olmadığını dikkatlice not alın.
  2. API veya NRQL ile Sorgulama: Eğer çok sayıda Drop Kuralınız varsa, bunları manuel olarak incelemek zaman alıcı olabilir. New Relic API'si veya NRQL (New Relic Query Language) kullanarak bu kuralların bir listesini çekmek daha verimli olabilir. Mevcut Drop kurallarının kendisi API tarafından yönetilemese de, düşürülen logları gözlemlemek için NRQL kullanabilirsiniz:

    
    FROM Log
    SELECT count(*)
    WHERE newrelic.logPattern = 'Dropped by Rule: [Rule Name]'
    FACET newrelic.logPattern
    SINCE 1 week ago
    TIMESERIES
                    



    Bu sorgu, hangi Drop Kurallarının ne kadar log düşürdüğünü anlamanıza yardımcı olabilir.

  3. Amaç ve Etki Analizi: Her kural için aşağıdaki soruları yanıtlamaya çalışın:
    • Bu kural ne tür logları düşürüyor? (Örn: DEBUG logları, belirli bir servisten gelen INFO mesajları, sağlık kontrolü logları.)
    • Bu loglar gerçekten değersiz mi? Düşürülmesi operasyonel görünürlüğümüzü etkiler mi?
    • Kural hangi RegEx'i veya filtreyi kullanıyor? Bu desen, Pipeline Cloud Kuralları için nasıl dönüştürülecek?
    • Bu kuralın tahmini maliyet tasarrufu nedir?

Vaka Analizi: Eski Bir Sistemin Yoğun Hata Loglarını Filtreleme

Diyelim ki, eski bir Java uygulamamız (legacy-app) var ve bu uygulama, belirli bir hata durumunda (örneğin, "Connection timeout to external service") dakikada yüzlerce, hatta binlerce "ERROR" seviyesi log üretiyor. Ancak, bu spesifik hata genellikle kendi kendine çözülüyor ve sürekli olarak uyarı vermek yerine, yalnızca belirli bir frekansın üzerinde tekrarlandığında bildirim almak istiyoruz. Mevcut bir Drop Kuralı, bu logları tamamen düşürüyor ve bu da sorunun gerçekte ne zaman ortaya çıktığını anlamamızı engelliyor. Amacımız, bu logların düşürülmesini sağlamak, ancak Pipeline Cloud Kurallarının esnekliğinden faydalanarak daha sonra bu logları işleyebilir veya farklı bir eşikle uyarı verebilir hale gelmek.

Geçiş Stratejileri ve Dönüştürme Teknikleri

Mevcut Drop Kurallarınızın envanterini çıkardıktan sonra, bunları Pipeline Cloud Kurallarına dönüştürme sürecine geçebiliriz. Bu süreç, stratejik bir yaklaşımla ele alınmalıdır.

  1. Tek Tek Taşıma ve Doğrulama: Özellikle kritik veya karmaşık kurallar için, her birini tek tek Pipeline Cloud Kuralına dönüştürüp, uygulayıp, ardından New Relic üzerinde doğru çalıştığından emin olmak en güvenli yaklaşımdır. Bu, potansiyel hataların etkisini minimize eder.
  2. RegEx ve Filtre Dönüşümü: Drop Kurallarında kullanılan RegEx desenlerini veya anahtar kelime filtrelerini, Pipeline Cloud Kurallarının matching_rules yapısına uygun hale getirmeniz gerekecektir.
    • Basit String Eşleşmesi: Drop Rule'da "DEBUG" anahtar kelimesini düşüren bir kural varsa:

      
      # Drop Rule (konsept)
      # Contains "DEBUG"
      
      # Pipeline Cloud Rule Terraform karşılığı:
      resource "newrelic_cloud_pipeline_rule" "drop_debug_logs_migrated" {
        account_id  = var.new_relic_account_id
        description = "Eski DEBUG drop kuralının yeni Pipeline versiyonu."
        enabled     = true
        matching_rules {
          field    = "message"
          operator = "CONTAINS"
          value    = "DEBUG"
        }
        actions {
          action = "drop"
        }
      }
                              


    • Karmaşık RegEx Eşleşmeleri: Drop Rule'da belirli bir hata desenini (örneğin, "Connection timeout to external service for user ID \d+") içeren logları düşüren bir kural varsa:

      
      # Drop Rule (konsept)
      # Regex: "Connection timeout to external service for user ID \d+"
      
      # Pipeline Cloud Rule Terraform karşılığı:
      resource "newrelic_cloud_pipeline_rule" "drop_legacy_app_connection_errors" {
        account_id  = var.new_relic_account_id
        description = "Legacy uygulamasından gelen belirli bağlantı zaman aşımı hatalarını düşürür."
        enabled     = true
        matching_rules {
          field    = "message"
          operator = "MATCHES"
          value    = "Connection timeout to external service for user ID \\d+" # RegEx'te ters slash'ları çiftleyin
        }
        matching_rules { # Ek koşul: sadece legacy-app'ten gelen loglar
          field    = "entity.name" # Veya 'service.name', 'app.name' log yapınıza göre değişir
          operator = "EQ"
          value    = "legacy-app"
        }
        actions {
          action = "drop"
        }
      }
                              




      Uzman İpucu: RegEx ve Escape Karakterleri: Terraform'da RegEx kullanırken, özellikle ters slash (\) gibi özel karakterleri belirtmek için çift ters slash (\\) kullanmanız gerekebilir. Bu, RegEx motorunun karakteri doğru yorumlamasını sağlar. Her zaman RegEx'inizi bir test aracıyla doğrulayın.

    • Birden Fazla Koşulun Birleştirilmesi: Drop kuralları genellikle tek bir desene odaklanırken, Pipeline kuralları birden fazla matching_rules bloğu ile AND mantığıyla çalışır. Bu, daha hassas filtreleme yapmanızı sağlar. Örneğin, sadece legacy-app servisinden gelen ERROR seviyesindeki logları düşürmek isteyebilirsiniz. Yukarıdaki örnekte entity.name koşulu eklenerek bu gösterilmiştir.

Geçiş Sonrası Doğrulama ve İzleme

Drop kurallarınızı Pipeline Cloud kurallarına dönüştürüp Terraform ile uyguladıktan sonra, her şeyin beklendiği gibi çalıştığından emin olmak için kapsamlı bir doğrulama ve izleme süreci yürütmek hayati önem taşır. Bu adım, potansiyel veri kaybını veya hatalı filtrelemeyi önler.

  1. New Relic Query Language (NRQL) ile Kural Etkinliğini Doğrulama:

    New Relic Log Explorer'da veya bir NRQL sorgu penceresinde, yeni Pipeline kurallarınızın etkinliğini kontrol edebilirsiniz. Örneğin, düşürmeyi hedeflediğiniz logların artık görünmediğini veya belirli bir dönüşümün başarıyla uygulandığını doğrulayabilirsiniz.

    
    # Drop edildiğini beklediğimiz logların gelip gelmediğini kontrol etme
    FROM Log
    SELECT count(*)
    WHERE log_level = 'DEBUG' AND entity.name = 'my-application'
    SINCE 5 minutes ago
    
    # Eski drop kuralının yerine geçen yeni kuralın çalıştığını kontrol etme (eğer kural düşürme yapıyorsa, bu sorgu 0 sonuç dönmelidir)
    FROM Log
    SELECT *
    WHERE message LIKE '%Connection timeout to external service for user ID%' AND entity.name = 'legacy-app'
    SINCE 10 minutes ago
                    


    Ayrıca, newrelic.ingest.log.drop metriğini kullanarak düşürülen logların hacmini de izleyebilirsiniz. Bu metrik, Pipeline kurallarının ne kadar veri düşürdüğünü gösterir.

  2. Maliyet Etkisini İzleme: Geçişin ana motivasyonlarından biri maliyet optimizasyonu olduğundan, New Relic faturanızı ve veri alım hacminizi yakından takip edin. Beklenen düşüşleri gözlemleyebilmelisiniz. New Relic Usage sayfası veya NRQL ile kullanım metriklerini sorgulayarak bu durumu izleyebilirsiniz.
  3. Log Explorer'da Filtrelerin Çalıştığını Görme: New Relic Log Explorer'ı kullanarak canlı log akışını gözlemleyin. Yeni Pipeline kurallarınızın logları doğru şekilde düşürdüğünü veya dönüştürdüğünü görsel olarak doğrulayın. Belirli filtreleri uygulayarak düşürmeyi hedeflediğiniz logların gerçekten görünmediğinden emin olun.
  4. Eski Drop Kurallarını Devre Dışı Bırakma (Aşamalı): Yeni Pipeline Cloud Kurallarının istikrarlı bir şekilde çalıştığından emin olduktan sonra, ilgili eski Drop Kurallarını aşamalı olarak devre dışı bırakabilirsiniz. Bu, bir "geri dönüş" senaryosu için bir süre hem eski hem de yeni kuralların paralel çalışmasına izin vermek anlamına gelebilir. Her şey yolunda gittiğinde, eski Drop kurallarını tamamen silebilirsiniz. Terraform ile yapılan geçişte, eski kurallar New Relic provider tarafından yönetilmediği için manuel olarak devre dışı bırakılmalıdır.

Bu detaylı geçiş stratejisi, log yönetiminizin daha verimli, maliyet-etkin ve geleceğe hazır olmasını sağlarken, operasyonel riskleri minimize etmenize yardımcı olacaktır. Terraform'un gücü sayesinde, bu süreci güvenilir ve tekrarlanabilir bir şekilde gerçekleştirebilirsiniz.

İleri Düzey Kullanım Senaryoları, En İyi Uygulamalar ve Gelecek Perspektifleri

New Relic Pipeline Cloud Kurallarının Terraform ile yönetimi, sadece eski Drop Kurallarından geçiş yapmakla kalmaz, aynı zamanda log yönetimi stratejinizi daha da ileriye taşımanız için yeni kapılar açar. Bu bölümde, daha karmaşık senaryolar, performans optimizasyonu, dinamik kural yönetimi ve modern dashboard entegrasyonu gibi ileri düzey konulara odaklanarak, log verilerinizden en yüksek değeri nasıl elde edebileceğinizi inceleyeceğiz. Bu ipuçları, observability altyapınızın daha esnek, ölçeklenebilir ve maliyet etkin olmasını sağlayacaktır.

Performans Optimizasyonu ve Maliyet Kontrolü

Büyük ölçekli ortamlarda, Pipeline kurallarının performansı ve dolayısıyla maliyet etkisi çok önemlidir.

  • Kural Sıralaması ve Etkisi: Pipeline kuralları, belirli bir sıraya göre uygulanır. En yüksek hacimli logları düşüren veya en sık eşleşen kuralları listenin başına koymak, işleme maliyetlerini önemli ölçüde azaltabilir. Örneğin, tüm "DEBUG" loglarını düşüren bir kuralı, daha spesifik bir uygulama hatası kuralından önce çalıştırarak, daha az logun diğer kurallar tarafından işlenmesini sağlayabilirsiniz.
  • Agresif Filtreleme Stratejileri: Log verilerinizin çoğunun aslında eyleme geçirilemez olduğunu fark ettiyseniz, "varsayılan olarak düşür, önemli olanı tut" yaklaşımını benimseyebilirsiniz. Örneğin, belirli bir uygulama için sadece "ERROR" ve "WARN" seviyesindeki logları tutarken, diğerlerini düşürmek için bir genel kural oluşturabilirsiniz.
  • RegEx Verimliliği: RegEx'ler güçlüdür, ancak aynı zamanda performans maliyeti de taşırlar. Çok karmaşık veya verimsiz RegEx desenleri, binlerce log üzerinde uygulandığında işleme süresini uzatabilir. Mümkün olduğunca spesifik ve basit RegEx'ler kullanmaya çalışın. Alternatif olarak, CONTAINS veya EQ gibi daha basit operatörler, RegEx'lerden daha hızlı çalışır.

Dinamik Kurallar ve Çevik Geliştirme Yaklaşımı

Terraform'un sunduğu programatik yetenekler sayesinde, Pipeline kurallarınızı dinamik olarak oluşturabilir ve yönetebilirsiniz. Bu, özellikle mikroservis mimarilerinde veya hızla değişen ortamlarda büyük avantaj sağlar.

  • Terraform for_each veya count ile Dinamik Kural Setleri: Benzer kuralları birden fazla uygulama veya ortam için tekrarlamak yerine, Terraform'un döngü yapılarını (for_each, count) kullanarak dinamik olarak kurallar oluşturabilirsiniz. Örneğin, bir liste veya harita tanımlayarak her servis için belirli logları düşüren kurallar oluşturabilirsiniz.

    
    locals {
      services_to_monitor = [
        { name = "user-service", environment = "production" },
        { name = "product-service", environment = "staging" },
        # ... diğer servisler
      ]
    }
    
    resource "newrelic_cloud_pipeline_rule" "service_debug_drop" {
      for_each = { for s in local.services_to_monitor : "${s.name}-${s.environment}" => s }
    
      account_id  = var.new_relic_account_id
      description = "DEBUG loglarını düşür: ${each.value.name} (${each.value.environment})"
      enabled     = true
    
      matching_rules {
        field    = "log_level"
        operator = "EQ"
        value    = "DEBUG"
      }
      matching_rules {
        field    = "service.name" # veya loglarınıza göre ilgili alan
        operator = "EQ"
        value    = each.value.name
      }
      matching_rules {
        field    = "environment" # veya loglarınıza göre ilgili alan
        operator = "EQ"
        value    = each.value.environment
      }
    
      actions {
        action = "drop"
      }
    }
                    



    Bu örnek, farklı servisler ve ortamlar için dinamik olarak DEBUG log düşürme kuralları oluşturur.

  • CI/CD Entegrasyonu: Terraform yapılandırmanızı bir versiyon kontrol sisteminde (Git gibi) tutarak, CI/CD işlem hattınıza entegre edebilirsiniz. Bu sayede, bir kural değişikliği yapıldığında, otomatik olarak terraform plan ve terraform apply adımları çalıştırılarak değişiklikler test edilebilir ve güvenli bir şekilde dağıtılabilir. Terraform Cloud veya Atlantis gibi araçlar, bu süreçleri daha da kolaylaştırır.

Mobil Uyumlu Dashboard Entegrasyonu (Media Query Örneği)

Pipeline Cloud Kuralları, log verilerinizi daha anlamlı hale getirerek, New Relic veya özel dashboard'larınızda daha temiz ve odaklanmış görselleştirmeler sunmanızı sağlar. Log verilerinin filtrelenmesi ve dönüştürülmesi, bu dashboard'ların daha hızlı yüklenmesine ve daha alakalı bilgiler sunmasına yardımcı olur. Modern web geliştirme pratiklerinde, bu tür dashboard'ların farklı cihazlarda (mobil, tablet, masaüstü) iyi görünmesi için mobil uyumluluk önemlidir. İşte bu noktada, HTML ve CSS'deki media query'ler devreye girer.

Bu makalenin çıktısı bir HTML içeriği olduğu için, doğrudan kendi çıktımıza medya sorgusu uygulayamasak da, filtrelenmiş log verilerini tüketen ve gösteren bir dashboard'un nasıl mobil uyumlu hale getirilebileceğine dair bir örnekle konuyu somutlaştırabiliriz:






Timestamp Service Level Message
2023-10-27 10:30:00 auth-service INFO User 'john.doe' logged in.
2023-10-27 10:30:01 payment-service WARN Payment gateway response slow.


Bu CSS media query örneği, 768 pikselden daha küçük ekran genişliklerine sahip cihazlar için .log-viewer-table sınıfına sahip tabloların görünümünü nasıl değiştireceğini gösterir. Mobil görünümde, tablo hücreleri blok elementlere dönüştürülerek yatay kaydırma çubukları olmadan içeriğin daha okunaklı bir şekilde sunulması sağlanır. Bu, Pipeline kuralları ile sadeleştirilmiş log verilerinin, kullanıcı dostu ve erişilebilir dashboard'lar aracılığıyla tüm ekip üyelerine ulaştırılmasının ne kadar önemli olduğunu vurgular.

Sonuç: Geleceğin Log Yönetimi ve Sıkça Sorulan Sorular

New Relic Drop Kurallarından Pipeline Cloud Kurallarına Terraform ile geçiş yapmak, modern log yönetiminin kaçınılmaz bir adımıdır. Bu geçiş, sadece maliyetleri optimize etmekle kalmaz, aynı zamanda gözlemlenebilirlik stratejinizi de güçlendirir. Log verilerinizin kalitesini artırarak, daha hızlı sorun tespiti, daha doğru analizler ve daha etkin operasyonel süreçler elde edersiniz. Terraform'un gücü sayesinde, bu karmaşık geçişi otomatize edebilir, kurallarınızı kod olarak yönetebilir ve CI/CD süreçlerinize entegre edebilirsiniz. Bu, log altyapınızı daha çevik, şeffaf ve güvenilir hale getirir. Artık, sadece logları toplamakla kalmayıp, onlardan gerçek değeri çıkarabileceğiniz, daha akıllı ve proaktif bir gözlemlenebilirlik ekosistemine sahipsiniz. Gelecekte, Pipeline Cloud Kuralları daha da gelişerek yapay zeka ve makine öğrenimi destekli filtreleme ve dönüştürme yetenekleriyle entegre olabilir, log yönetimini tamamen otomatik ve öngörücü bir sürece dönüştürebilir.

Sıkça Sorulan Sorular (SSS)

  1. Drop kurallarını tamamen kapatmalı mıyım?

    Hayır, acele etmeyin. Yeni Pipeline Cloud kurallarınızın beklendiği gibi çalıştığından ve istenen logları düşürdüğünden veya dönüştürdüğünden emin olana kadar mevcut Drop kurallarınızı bir süre daha etkin tutun. Bu, bir "güvenli geri dönüş" mekanizması sağlar. Gerekli doğrulamaları yaptıktan ve yeni sistemin istikrarlı çalıştığından emin olduktan sonra, ilgili eski Drop kurallarını aşamalı olarak devre dışı bırakıp silebilirsiniz. Paralel çalışma süresi, riskleri minimize etmek için önemlidir.

  2. RegEx'lerim çok karmaşık, nasıl test edebilirim?

    Karmaşık RegEx'leri doğrudan üretim ortamına uygulamadan önce kapsamlı bir şekilde test etmek hayati öneme sahiptir. New Relic'in kendi RegEx test aracını kullanabilirsiniz. Ayrıca, regex101.com veya regexr.com gibi online RegEx test siteleri, gerçek log örneklerinizle desenlerinizi eşleştirmek ve hataları ayıklamak için harika kaynaklardır. Bu araçlar, RegEx'inizin hangi bölümlerinin neyle eşleştiğini görsel olarak göstererek sorunları kolayca tespit etmenizi sağlar.

  3. Geçiş sırasında veri kaybı yaşar mıyım?

    Doğru bir geçiş stratejisi izlendiğinde veri kaybı riski minimuma indirilebilir. Yeni Pipeline kurallarınızı devreye almadan önce dikkatlice test edin ve eski Drop kurallarınızı hemen kaldırmayın. Bir geçiş periyodu boyunca hem eski hem de yeni kuralların paralel çalışmasına izin verin. Yeni kuralların düzgün çalıştığından emin olduktan sonra eski kuralları devre dışı bırakın. Bu katmanlı yaklaşım, herhangi bir beklenmedik davranış durumunda hızlıca geri dönmenizi sağlar.

  4. Terraform dışından oluşturulan kuralları nasıl yönetirim?

    Eğer bazı Pipeline Cloud kurallarınız Terraform dışında (örneğin New Relic UI üzerinden) oluşturulduysa ve bunları Terraform state'inize dahil etmek istiyorsanız, terraform import komutunu kullanabilirsiniz. Bu komut, mevcut bir New Relic kaynağını Terraform state'inize aktarmanızı sağlar. Ardından, bu kuralı Terraform yapılandırma dosyanızda tanımlayarak gelecekteki değişiklikleri Terraform üzerinden yönetebilirsiniz. Bu, tüm altyapınızın "kod olarak" tutulması prensibini sürdürmek için önemlidir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.