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. Esas olarak, dağınık günlüklerin uygunsuz bir şekilde görüntülenmesi, karmaşık ve verimsiz günlük arama işlemleri ve zaman içinde iş anormalliklerinin keşfedilememesi sorunlarını çözmek için.
Youzan işinin gelişmesi ve büyümesiyle, her gün on milyarlarca günlük üretilmektedir (istatistiklere göre, saniyede 800.000 günlük en yüksek değerle saniyede ortalama 500.000 günlük üretilmektedir). 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 oluşturulması, geliştirilmesi ve optimizasyonu konusundaki deneyimini 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ış verisine 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 sürekli olarak HDFS'de depolar veya veri sorgusu sağlamak için ElasticSearch'e yazabilir. Genel yapı aşağıdaki şekilde gösterilmektedir.
Artan sayıda bağlı uygulama ve birbirine bağlı günlük sayısının artmasıyla birlikte, temel olarak aşağıdaki yönlerden bazı sorunlar ve yeni gereksinimler aşamalı olarak ortaya çıkmıştır:
4. Günlük platformu büyük miktarda kullanıcı günlüğü bilgisi topladı.O zamanlar, belirli bir süre içinde hangi hata mesajlarının daha fazla olduğunu doğrudan görmek imkansızdı ve bu da sorunun yerini bulmanın zorluğunu artırıyordu.
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- > Erişim, ayrıntılı yapı aşağıda gösterilmiştir:
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, yüksek performans, güvenlik fonksiyonları ve modüler tasarım sağlayan, sistem günlüklerini hızlı bir şekilde işlemek ve toplamak için bir programdır. Kanalı doğrudan ana bilgisayara dağıtma yöntemi, sistem geliştirme sürecinde kullanıldı.Flume'nin kendisi java tarafından geliştirildiğinden, makine kaynaklarını kullanır ve rsyslog hizmetine yükseltilirdi. Yerel dağıtımın kafka istemcileriyle çok fazla bağlantıya sahip olması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, tüm veri işleme sürecini ayrıştırabilen ve daha sonraki dağıtılmış günlük tüketim hizmetleri için eşzamansız ayırma ve ayırma sağlamak için kafka kümesini günlük platformunun arabellek katmanı olarak kullanabilen, yüksek performanslı, yüksek kullanılabilirlikli ve kolayca ölçeklenebilir dağıtılmış bir günlük sistemidir. 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 bir şekilde işleyebilmek 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ırıldıktan sonra, tek bir görev grubu, ES kümesine çekilen tüm günlükleri eşzamansız 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 tür kuralların bir kopyasını yerel belleğe kaydedecektir. Kurallar tarafından belirlenen süre içinde, sayı alarma ulaşır. Kural tarafından konfigüre edilen eşik değerinin ardından, sorunun zamanında keşfedilmesi için belirtilen kullanıcıya belirtilen kanal üzerinden bir alarm gönderilir. Trafik aniden arttığında, toplu istek reddedilecek günlük, tazminat beklerken kakfa'ya yeniden yazılacaktır.
3.5 Günlük saklama
-Orijinal olarak tüm günlükler SSD diskinin ES kümesine yazılacaktır.LogIndex doğrudan ES'deki dizin yapısına karşılık gelir.İşletme büyüdükçe Es disk kullanım oranının tek bir makinede% 70 ~% 80'e ulaşması sorununu çözmek için mevcut sistem Hbase kullanır Ham günlük verilerinin ve ElasticSearch indeks içeriğinin depolanmasının birleşimi, depolamayı ve indekslemeyi tamamlar.
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şılayabilmek 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ının mimarisi 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. Temel olarak mevcut günlük alma senaryolarının çoğunu karşılayabilen günlük bağlamını görüntüleyin ve bulun, ancak günlük sisteminde hala birçok eksiklik var, özellikle:
Yukarıda belirtilen eksiklikler, gelecekte iyileştirmeye çalışacağımız alanlardır.Ayrıca, günlüklerin daha derin değer madenciliği, işletmenin normal işleyişini korumak için keşiflerimizin yönüdür.