I. Genel Bakış
Günlük, sistemdeki çeşitli sorun bilgilerini kaydetmenin anahtarıdır ve aynı zamanda ortak bir toplu veridir. Günlük platformu, grubun tüm iş sistemleri için günlük toplama, tüketim, analiz, depolama, indeksleme ve sorgulama için tek noktadan günlük hizmeti sağlar. Temelde dağınık günlüklerin uygunsuz bir şekilde görüntülenmesi, günlük arama işlemlerinin karmaşık ve düşük verimliliği ve zamanında iş anormalliklerinin bulunamaması sorununu çözmek için.
Youzan işinin gelişmesi ve büyümesiyle, her gün on milyarlarca günlük üretiliyor (istatistiklere göre, saniyede 800.000 günlük en yüksek değerle saniyede ortalama 500.000 günlük üretiliyor). Log platformu, işin sürekli gelişmesiyle birlikte birçok değişiklik ve yükseltmeye de uğramıştır. Bu makale, Youzan'ın mevcut günlük sisteminin yapımı, gelişimi ve optimizasyonundaki deneyimini sizinle paylaşıyor. Buradan başlayalım ve herkesi birlikte iletişim kurmaya ve tartışmaya davet edelim.
2. Orijinal günlük sistemi
Youzan, 16 yıldan beri iş sistemleri için birleşik bir günlük platformu oluşturuyor.Tüm sistem günlüklerini ve iş günlüklerini toplamak, bunları akış verilerine dönüştürmek, bunları kanal veya günlük deposu aracılığıyla günlük merkezine (kafka kümesi) yüklemek ve ardından birlikte izleme ve fırtınayı yapmaktan sorumludur. , Spark ve diğer sistemler günlükleri gerçek zamanlı olarak analiz eder ve işler ve günlükleri çevrimdışı veri analizi ve işleme için HDFS'de kalıcı olarak depolar veya veri sorgusu sağlamak için ElasticSearch'e yazabilir. Genel mimari Şekil 2-1'de gösterilmektedir.
Şekil 2-1 Orijinal günlük sistemi mimarisi
Giderek daha fazla uygulamaya erişildikçe, erişilen günlüklerin miktarı artıyor ve bazı sorunlar ve yeni gereksinimler aşamalı olarak, özellikle aşağıdaki yönlerden ortaya çıkıyor:
3. Mevcut sistemin gelişimi
Nesilden erişime kadar, günlük esas olarak aşağıdaki aşamalardan geçer: > bulaşma- > tampon- > uğraşmak- > depolama- > Arama, ayrıntılı yapı Şekil 3-1'de gösterilmiştir.
Şekil 3-1 Mevcut sistem mimarisi
3.1 Günlük erişimi
Günlük erişimi şu anda iki yönteme ayrılmıştır: SDK erişimi ve Http Web hizmeti erişimi
3.2 Günlük toplama
Artık günlük aktarım sistemi olarak rsyslog-hub ve web portalı var. Rsyslog, sistem günlüklerini hızlı bir şekilde işlemek ve toplamak için yüksek performans, güvenlik fonksiyonları ve modüler tasarım sağlayan bir programdır. Kanalı doğrudan ana bilgisayara dağıtma yöntemi, sistem evrimi sürecinde kullanıldı.Faletin kendisi java tarafından geliştirildiğinden, makine kaynaklarını kullanır ve rsyslog hizmetine yükseltilirdi. Yerel dağıtımın çok fazla kafka istemcisini bağlamasını önlemek için, yerel makinedeki rsyslog veriyi aldıktan sonra, verileri çok fazla işlem yapmadan doğrudan rsyslog-hub kümesine iletir ve LVS aracılığıyla yük dengeleme gerçekleştirir.Arka uç rsyslog- Merkez, günlüğün içeriğini analiz ederek arka uca gönderilmesi gereken Kafka konusunu çıkaracaktır.
3.3 günlük arabelleği
Kafka, yüksek performanslı, yüksek kullanılabilirlikli ve kolayca ölçeklenebilir dağıtılmış bir günlük sistemidir.Tüm veri işleme sürecini ayrıştırabilir ve sonraki dağıtılmış günlük tüketim hizmetleri için eşzamansız ayırma sağlamak için kafka kümesini günlük platformunun arabellek katmanı olarak kullanabilir. Zirveleri kesme ve vadileri doldurma yeteneği, aynı zamanda büyük veri birikimi ve yüksek verimli okuma ve yazma özelliklerine sahiptir.
3.4 günlük bölümleme
Verileri daha hızlı, basit ve doğru işlemek için günlük analizi en önemli önceliktir. Günlük platformu, kafka'ya yazılan iş günlüklerini tüketmek için kıvılcım akışlı akış hesaplama çerçevesini kullanır Kaynak tahsisi ve yönetimi için bir kap olarak, farklı işletmelerin günlük seviyelerine göre farklı günlük modellerini işlemek için farklı kaynaklar tahsis edecektir.
Tüm kıvılcım görevi resmi olarak çalıştıktan sonra, tek bir görev grubu, ES kümesine çekilen tüm günlükleri zaman uyumsuz olarak yazacaktır. İş erişiminden önce, yönetim konsolunda farklı günlük modelleri için rastgele filtreleme ve eşleşen alarm kuralları ayarlayabilirsiniz. Kıvılcım görevinin her bir çıkarıcısı, bu kuralın bir kopyasını yerel belleğe kaydedecektir. Kurallar tarafından belirlenen süre içinde, sayı alarma ulaşır. Kural tarafından yapılandırılan eşikten sonra, sorunu zamanında keşfetmek için belirtilen kullanıcıya belirtilen kanal üzerinden bir alarm gönderilecektir. Trafik aniden arttığında, toplu talep reddedilecek günlük, tazminat beklerken kakfa'ya yeniden yazılacaktır.
3.5 Günlük saklama
Dört, çok kiracılı
Günlük sisteminin sürekli geliştirilmesiyle, tüm ağdaki günlüklerin QPS'si gittikçe büyüyor ve bazı kullanıcıların gerçek zamanlı günlük kaydı, doğruluk, kelime bölümleme ve sorgu için gittikçe daha çeşitli gereksinimleri var. Log sistemi, bu kullanıcıların ihtiyaçlarını karşılamak için çoklu kiracılık fonksiyonunu desteklemektedir.Kullanıcıların ihtiyaçlarına göre karşılıklı etkiden kaçınmak için farklı kiracılara tahsis edilmektedir.
Tek bir kiracı için mimari aşağıdaki gibidir:
5. Mevcut sorunlar ve gelecek planlar
Şu anda, Skynet'e entegre işlevsel bir modül olarak Youzan günlük sistemi, zaman aralığı sorgulama, alan filtreleme, DEĞİL / VE / VEYA, bulanık eşleştirme vb. Dahil olmak üzere basit ve kullanımı kolay arama yöntemleri sağlar ve sorgu alanlarını vurgulayabilir. Günlük bağlamını gösterin, bulun, temel olarak mevcut günlük alma senaryolarının çoğunu karşılayabilir, ancak günlük sistemi hala birçok eksikliğe sahiptir, özellikle:
Yukarıda belirtilen eksiklikler, gelecekte iyileştirmeye çalışacağımız alanlardır.Ayrıca, tomrukların daha derin değer madenciliği, işletmenin normal işleyişine eşlik etmek için keşiflerimizin yönüdür.