paint-brush
Günlüklerden Maksimum Değer Nasıl Çıkarılırile@alvinslee
1,525 okumalar
1,525 okumalar

Günlüklerden Maksimum Değer Nasıl Çıkarılır

ile Alvin Lee9m2023/08/25
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Günlüklerin nasıl tasarlanabileceğine, büyük sistemlerde oturum açmanın zorluklarına ve çözümlerine ve günlük tabanlı ölçümler ve uzun vadeli saklama hakkında nasıl düşünüleceğine bakacağız.
featured image - Günlüklerden Maksimum Değer Nasıl Çıkarılır
Alvin Lee HackerNoon profile picture

Günlüğe kaydetme, gözlemlenebilirlik çözümünüzün tartışmasız en önemli unsurudur. Günlükler, sistem davranışı hakkında temel ve zengin bilgiler sağlar. İdeal bir dünyada, günlüğe kaydetmeyle ilgili tüm kararları siz verirsiniz ve tüm sisteminizde tutarlı bir yaklaşım uygularsınız.


Ancak gerçek dünyada, eski yazılımlarla çalışabilir veya her biri günlük kaydı için kendi formatına ve yapısına sahip farklı programlama dilleri, çerçeveleri ve açık kaynak paketleriyle uğraşabilirsiniz.


Sisteminizdeki günlük formatlarındaki bu kadar çeşitlilik varken, tüm günlüklerinizden en fazla değeri elde etmek için hangi adımları atabilirsiniz? Bu yazıda ele alacağımız şey budur.


Günlüklerin nasıl tasarlanabileceğine, büyük sistemlerde oturum açmanın zorluklarına ve çözümlerine ve günlük tabanlı ölçümler ve uzun vadeli saklama hakkında nasıl düşünüleceğine bakacağız.


Günlük düzeylerine ve biçimlerine bir göz atalım.

Günlük Tasarımı

Günlük tasarımında pek çok husus dikkate alınır, ancak en önemli iki husus, günlük düzeylerinin kullanılması ve yapılandırılmış veya yapılandırılmamış günlük formatlarının kullanılıp kullanılmaması gerektiğidir.

Günlük Seviyeleri

Günlük düzeyleri, günlük iletilerini önem derecelerine göre kategorilere ayırmak için kullanılır. Kullanılan belirli günlük düzeyleri, günlük kaydı çerçevesine veya sistemine bağlı olarak değişebilir. Bununla birlikte, yaygın olarak kullanılan günlük düzeyleri şunları içerir (ayrıntı sırasına göre, en yüksekten en düşüğe doğru):


  • TRACE : Kapsamlı bir kaydı yeniden oluşturmak ve herhangi bir durum değişikliğini hesaba katmak için sistemin gerçekleştirdiği her eylemi yakalar.


  • DEBUG : Hata ayıklama amacıyla ayrıntılı bilgileri yakalar. Bu mesajlar genellikle yalnızca geliştirme sırasında geçerlidir ve üretim ortamlarında etkinleştirilmemelidir.


  • BİLGİ : Sistemin yürütülmesindeki önemli olayları veya kilometre taşlarını iletmek için sistemin çalışması hakkında genel bilgi sağlar.


  • UYARI : Dikkat gerektirebilecek potansiyel sorunları veya durumları belirtir. Bu mesajlar kritik değildir ancak not edilmeli ve gerekirse araştırılmalıdır.


  • HATA : Sistemin çalışması sırasında oluşan hataları belirtir. Bu mesajlar genellikle çözülmesi gereken ve sistemin işlevselliğini etkileyebilecek sorunları vurgular.


Uygun düzeyde günlük kaydı yapmak, sistemin davranışını anlamanıza, sorunları tanımlamanıza ve sorunları etkili bir şekilde gidermenize yardımcı olur.


Oluşturduğunuz sistem bileşenleri söz konusu olduğunda, yararlı olan günlük düzeyleri kümesini tanımlamaya biraz zaman ayırmanızı öneririz. Her günlük düzeyindeki iletilere ne tür bilgilerin dahil edilmesi gerektiğini anlayın ve günlük düzeylerini tutarlı bir şekilde kullanın.


Daha sonra, günlük düzeyleri üzerinde hiçbir kontrolünüz olmayan üçüncü taraf uygulamalarla nasıl başa çıkacağınızı tartışacağız. Ayrıca kontrol ettiğiniz ancak standart günlük düzeylerine geçiş yapamayacak kadar kapsamlı olan eski uygulamalara da bakacağız.

Yapılandırılmış ve Yapılandırılmamış Günlükler

Yapılandırılmış günlüklerdeki girişler, genellikle anahtar/değer çiftleri veya JSON nesneleri olarak iyi tanımlanmış bir biçime sahiptir. Bu, tutarlı ve makine tarafından okunabilir günlük girişlerine olanak tanıyarak günlük verilerinin programlı olarak ayrıştırılmasını ve analiz edilmesini kolaylaştırır.


Yapılandırılmış günlük kaydı, gelişmiş günlük sorgulama ve analizine olanak tanıyarak onu özellikle büyük ölçekli sistemlerde kullanışlı kılar.


Öte yandan, yapılandırılmamış (serbest biçimli) günlük kaydı, mesajları önceden tanımlanmış bir yapı olmaksızın, insanlar tarafından daha okunabilir bir biçimde yakalar. Bu yaklaşım, geliştiricilerin mesajları daha doğal ve esnek bir şekilde günlüğe kaydetmesine olanak tanır.


Ancak, ortaya çıkan günlüklerden belirli bilgilerin programlı olarak çıkarılması çok zor olabilir.


Yapılandırılmış ve yapılandırılmamış günlükler arasında seçim yapmak, özel ihtiyaçlarınıza ve sisteminizin gereksinimlerine ve kısıtlamalarına bağlıdır. Gelişmiş günlük analizi veya günlük analiz araçlarıyla entegrasyon ihtiyacını öngörüyorsanız, yapılandırılmış günlükler önemli faydalar sağlayabilir.


Ancak ihtiyacınız olan tek şey basitlik ve okunabilirlik ise yapılandırılmamış günlükler yeterli olabilir.


Bazı durumlarda, önemli olaylar için yapılandırılmış günlükleri ve daha genel mesajlar için yapılandırılmamış günlükleri kullandığınız karma bir yaklaşım da kullanılabilir.


Büyük ölçekli sistemler için mümkün olduğunda yapılandırılmış günlük kaydına yönelmelisiniz ancak bunun planlamanıza başka bir boyut kattığını unutmayın. Yapılandırılmış günlük mesajlarına ilişkin beklenti, sistem bileşenleri genelinde aynı alan kümesinin tutarlı bir şekilde kullanılmasıdır. Bu da stratejik planlamayı gerektirecektir.

Günlüğe Kaydetme Zorlukları

Birden fazla bileşenden oluşan sistemlerde, her bileşenin büyük olasılıkla günlüklerini yönetmek için kendi modeli olacaktır. Bunun getirdiği zorlukları gözden geçirelim.

Farklı Destinasyonlar

Bileşenler farklı hedeflerde (dosyalar, sistem günlükleri, stdout veya stderr) oturum açacaktır. Dağıtık sistemlerde dağınık durumdaki bu logların etkili kullanım için toplanması zahmetlidir.


Bunun için günlük toplama konusunda, Sumo Logic'in kurulu toplayıcılarını ve barındırılan toplayıcılarını kullanmak gibi çeşitli bir yaklaşıma ihtiyacınız olacak.

Çeşitli Formatlar

Bazı bileşenler, özellikle herhangi bir formatı takip etmeyen, yapılandırılmamış, serbest biçimli günlük kaydını kullanır. Bu arada, yapılandırılmış günlükler daha organize olabilir ancak yapılandırılmış günlüklere sahip bileşenler tamamen farklı alan kümelerini kullanabilir.


Çeşitli günlüklerden ve formatlardan aldığınız bilgileri birleştirmek, doğru araçları gerektirir.

Tutarsız Günlük Düzeyleri

Sisteminizdeki bileşenler farklı günlük düzeyi aralıkları kullanabilir. Tüm günlük mesajlarını merkezi bir günlük sisteminde birleştirseniz bile (yapmanız gerektiği gibi), tüm günlük seviyelerinin birleşimiyle ilgilenmeniz gerekecektir.


Ortaya çıkan zorluklardan biri, farklı log seviyelerinin aynı şekilde ele alınması gerektiğidir. Örneğin, bir bileşendeki HATA, başka bir bileşendeki KRİTİK ile aynı olabilir ve derhal üst kademeye iletilmesini gerektirebilir.


Farklı bileşenlerdeki aynı günlük düzeyi farklı anlamlara geldiğinde tam tersi bir zorlukla karşı karşıya kalırsınız. Örneğin, bir bileşendeki INFO mesajları sistem durumunu anlamak için gerekli olabilirken, başka bir bileşendeki INFO mesajları çok ayrıntılı olabilir.

Günlük Depolama Maliyeti

Büyük dağıtılmış sistemler çok sayıda günlük biriktirir. Bu günlüklerin toplanması ve saklanması ucuz değildir. Buluttaki log ile ilgili maliyetler, sistemin toplam maliyetinin önemli bir kısmını oluşturabilir.

Bu Zorluklarla Başa Çıkmak

Büyük, dağıtılmış sistemlerde oturum açmanın zorlukları önemli olmakla birlikte, aşağıdaki uygulamalardan bazıları aracılığıyla çözümler bulunabilir.

Günlüklerinizi Birleştirin

Dağıtılmış bir sistem çalıştırdığınızda merkezi bir günlük kaydı çözümü kullanmalısınız. Sisteminizdeki her makinede günlük toplama aracılarını çalıştırdığınızda, bu toplayıcılar tüm günlükleri merkezi gözlemlenebilirlik platformunuza gönderecektir.


Her zaman günlük yönetimi ve analitiğine odaklanan Sumo Logic, günlük toplama konusunda sınıfının en iyisidir.

Birleşik Bir Formata Doğru Gidin

Uygulamalar ve bileşenler arasında analiz ve sorun giderme için günlük verilerini ilişkilendirmek istiyorsanız, farklı formatlardaki günlüklerle uğraşmak büyük bir sorundur. Çözümlerden biri, farklı günlükleri birleşik bir formata dönüştürmektir.


Bu görev için harcanan çaba düzeyi yüksek olabilir; bu nedenle bunu, en önemli bileşenlerinizden başlayarak aşağıya doğru ilerleyerek aşamalı olarak yapmayı düşünün.

Uygulamalarınız Genelinde Bir Günlük Kaydı Standardı Oluşturun

Kendi uygulamalarınız için, tek tip bir günlük düzeyi kümesini, tek bir yapılandırılmış günlük biçimini ve tutarlı semantiği benimseyen standart bir günlük kaydı yaklaşımı oluşturmaya çalışın.


Eski uygulamalarınız da varsa, bunları standardınıza uyacak şekilde geçirmenin risk düzeyini ve maliyetini değerlendirin.


Geçiş mümkün değilse eski uygulamalarınıza üçüncü taraf uygulamaları gibi davranın.

Üçüncü Taraf Kaynaklardan Günlükleri Zenginleştirin

Günlüklerin üçüncü taraf kaynaklardan zenginleştirilmesi, günlük verilerinin harici sistemlerden veya hizmetlerden alınan bağlamsal bilgilerle geliştirilmesini içerir. Bu, günlük olaylarının daha iyi anlaşılmasını sağlayarak sorun giderme, analiz ve izleme etkinliklerine yardımcı olur.


Günlüklerinizi zenginleştirmek için, günlük olaylarıyla ilgili ek verileri (kullanıcı bilgileri, müşteri ayrıntıları veya sistem ölçümleri gibi) getirmek üzere harici sistemleri (API'ler veya mesaj kuyrukları gibi) entegre edebilirsiniz.

Günlük Hacmini, Sıklığını ve Saklamayı Yönetme

Günlük hacmini, sıklığını ve saklamayı dikkatli bir şekilde yönetmek, verimli günlük yönetimi ve depolama için çok önemlidir.


  • Birim : Oluşturulan günlük hacmini izlemek, kaynak tüketimini ve performans etkilerini kontrol etmenize yardımcı olur.


  • Sıklık : Olayların kritikliğine ve istenen izleme düzeyine bağlı olarak ne sıklıkta oturum açılacağını belirleyin.


  • Saklama : Uyumluluk gereksinimlerine, operasyonel ihtiyaçlara ve kullanılabilir depolama alanına uygun bir günlük saklama politikası tanımlayın.


  • Döndürme : Günlük dosyası boyutlarını etkili bir şekilde yönetmek için eski günlük dosyalarını düzenli olarak arşivleyin veya temizleyin.


  • Sıkıştırma : Depolama gereksinimlerini azaltmak için günlük dosyalarını sıkıştırın.

Günlük Tabanlı Metrikler

Günlük verilerinin analizinden elde edilen ölçümler, sistem davranışı ve performansına ilişkin öngörüler sağlayabilir. Günlük tabanlı metriklerle çalışmanın yararları ve zorlukları vardır.

Faydalar

  • Parçalı içgörüler : Günlüğe dayalı ölçümler, sistem olaylarına ilişkin ayrıntılı ve ayrıntılı içgörüler sunarak kalıpları, anormallikleri ve olası sorunları belirlemenize olanak tanır.


  • Kapsamlı izleme : Günlük tabanlı ölçümlerden yararlanarak sisteminizi kapsamlı bir şekilde izleyebilir, kullanılabilirlik, performans ve kullanıcı deneyimiyle ilgili kritik ölçümlere ilişkin görünürlük elde edebilirsiniz.


  • Geçmiş analiz : Günlüğe dayalı ölçümler, trend analizi, kapasite planlaması ve performans optimizasyonu için kullanılabilecek geçmiş verileri sağlar. Zaman içindeki günlük eğilimlerini inceleyerek verimliliği ve ölçeklenebilirliği artırmak için veriye dayalı kararlar alabilirsiniz.


  • Esneklik ve özelleştirme : İhtiyaçlarınız için en anlamlı olaylara ve veri noktalarına odaklanarak, günlük tabanlı ölçümlerinizi uygulamanıza veya sisteminize uyacak şekilde uyarlayabilirsiniz.

Zorluklar

  • Anlamlı metriklerin tanımlanması : Tüm bileşenleriniz genelinde kullanabileceğiniz metrik kümesi inanılmaz derecede geniş olduğundan ve bunların hepsini yakalamak mantıklı olmadığından, hangi metriklerin yakalanıp günlüklerden çıkarılacağını belirlemek karmaşık bir iş olabilir.


    Bu tanımlama, sistem davranışının derinlemesine anlaşılmasını ve iş hedeflerinizle yakın uyum gerektirir.


  • Veri çıkarma ve ayrıştırma : Yararlı ölçümleri çıkarmak için günlüklerin ayrıştırılması, özel araçlar veya özel ayrıştırıcılar gerektirebilir. Bu, özellikle günlüklerin yapılandırılmaması veya bir bileşenden diğerine tutarsız bir şekilde biçimlendirilmesi durumunda geçerlidir.


    Bunu ayarlamak zaman alıcı olabilir ve günlük formatları değiştikçe veya yeni günlük kaynakları ortaya çıktıkça bakım gerektirebilir.


  • Gerçek zamanlı analiz ihtiyacı : Günlük tabanlı ölçümlerin işlenmesindeki gecikmeler, güncelliğini yitirmiş veya alakasız ölçümlere yol açabilir. Çoğu durumda, günlük tabanlı ölçümlerden etkili bir şekilde yararlanmak için gelen verilerin hızlı, gerçek zamanlı işlenmesini gerçekleştirebilecek bir platforma ihtiyacınız olacaktır.


  • Performans etkisi : Bileşen profili oluşturma ölçümlerinin sürekli olarak yakalanması, sistem kaynakları üzerinde ek bir yük oluşturur. Yeterli günlük tabanlı ölçümleri yakalamak ile yeterli sistem performansını sürdürmek arasında iyi bir denge bulmanız gerekecektir.


  • Veri gürültüsü ve ilgisizliği : Günlük verileri genellikle çok fazla gürültü ve alakasız bilgi içerir ve anlamlı ölçümlere katkıda bulunmaz. İlgili olaylara ilişkin veri toplamaya odaklanmak için dikkatli günlük filtreleme ve normalleştirme gereklidir.

Uzun Süreli Günlük Tutma

Merkezi bir sistemde günlük toplamaya yönelik adımı attıktan sonra da uzun vadeli günlük saklama politikalarını dikkate almanız gerekecektir. Bu alana ilişkin kritik soruları ele alalım.

Günlükleri Ne Kadar Süre Etrafta Tutmalısınız?

Bir günlüğü ne kadar süreyle tutmanız gerektiği, aşağıdakiler de dahil olmak üzere çeşitli faktörlere bağlıdır:


  • Log tipi : Bazı loglar (erişim logları gibi) kısa bir süre sonra silinebilir. Sorun giderme için gerekli olması durumunda diğer günlüklerin (hata günlükleri gibi) daha uzun süre saklanması gerekebilir.


  • Yasal gereklilikler : Sağlık ve finans gibi sektörlerde, kuruluşların belirli bir süre, hatta bazen birkaç yıl boyunca günlük tutmasını gerektiren düzenlemeler vardır.


  • Şirket politikası : Şirketinizin, günlüklerin ne kadar süre saklanması gerektiğini belirleyen politikaları olabilir.


  • Günlük boyutu : Günlükleriniz büyükse, bunları daha sık döndürmeniz veya silmeniz gerekebilir.


  • Depolama maliyeti : Günlüklerinizi şirket içinde veya bulutta nerede depoladığınıza bakılmaksızın, depolama maliyetini hesaba katmanız gerekecektir.

Eski Günlüklerin Ayrıntı Düzeyini ve Maliyetini Nasıl Azaltırsınız?

Eski günlükleri silmek elbette depolama maliyetlerinizi azaltmanın en basit yoludur. Ancak bu biraz zorlayıcı olabilir ve bazen eski günlüklerdeki bilgileri ortalıkta tutmak isteyebilirsiniz.


Eski günlüklerdeki bilgileri saklamak ve aynı zamanda uygun maliyetli olmak istiyorsanız, aşağıdaki önlemlerden bazılarını almayı düşünün:


  • Günlükleri alt örnekleme : Çok sayıda tekrarlanan günlük ifadesi üreten bileşenler söz konusu olduğunda, ifadelerin yalnızca bir alt kümesini (örneğin, her 10'dan 1'i) alabilirsiniz.


  • Günlükleri kırpma : Büyük iletiler içeren günlükler için bazı alanları atabilirsiniz. Örneğin, bir hata günlüğünde bir hata kodu ve bir hata açıklaması varsa, yalnızca hata kodunu tutarak ihtiyacınız olan tüm bilgilere sahip olabilirsiniz.


  • Sıkıştırma ve arşivleme : Eski günlükleri sıkıştırabilir ve bunları daha ucuz ve daha az erişilebilir bir depolama alanına (özellikle bulutta) taşıyabilirsiniz. Bu, mevzuata uygunluk gereksinimlerini karşılamak için yıllarca saklamanız gereken günlükler için mükemmel bir çözümdür.

Çözüm

Bu yazımızda büyük ölçekli sistemlerde oturum açma işleminden en iyi şekilde nasıl yararlanabileceğinizi inceledik.


Bu sistemlerde oturum açmak benzersiz bir dizi zorluk sunsa da, günlük toplama, günlükleri birleşik bir formata dönüştürme ve günlükleri üçüncü taraf kaynaklardan alınan verilerle zenginleştirme gibi bu zorluklara yönelik potansiyel çözümlere baktık.


Günlüğe kaydetme, gözlemlenebilirliğin kritik bir parçasıdır. Bu makalede özetlenen uygulamaları takip ederek günlüklerinizin etkili bir şekilde yönetilmesini sağlayabilir, sorunları giderebilir, sorunları belirleyebilir ve sisteminizin davranışına ilişkin öngörüler elde edebilirsiniz.


Ve bunu, günlüğe kaydetme maliyetlerinizi uzak tutarken yapabilirsiniz.


Burada da yayınlandı