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ı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 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):
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ış 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ı dikkatli bir şekilde yönetmek, verimli günlük yönetimi ve depolama için çok önemlidir.
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.
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.
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.
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:
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:
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ı