On milyarlarca log sistemi nasıl yapılandırılır?

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:

  • İş günlükleri için birleşik bir belirtim yoktur ve çeşitli iş günlüğü biçimleri vardır Yeni uygulama erişimi, hiç şüphesiz günlük analizi ve erişim maliyetini büyük ölçüde artırır.
  • Çeşitli veri günlüğü veri toplama yöntemleri, yüksek işletme ve bakım maliyetleri.
  • 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ı, bu da sorunun yerini bulmanın zorluğunu artırıyordu.
  • Depolama:
    • Es varsayılan yönetim stratejisi benimsenmiştir. Tüm dizinler 3 * 2 parçaya karşılık gelir (3 birincil, 3 çoğaltma). Bazı dizinlerin büyük bir sayısı vardır ve tek bir parçaya karşılık gelen veri miktarı büyük olacak ve bu da etkin düğümlere neden olacaktır. Reddedilen çok sayıda toplu istek vardır ve disk GÇ birkaç makinede yoğunlaşmıştır;
    • Toplu istek reddedilen günlükler işlenmedi ve bu da iş günlüklerinin kaybına neden oldu;
    • Günlükler varsayılan olarak 7 gün tutulur. Depolama ortamı olarak ssd için, iş büyüdükçe depolama maliyeti çok yüksektir;
    • Ek olarak, Elasticsearch kümesi fiziksel olarak yalıtılmış değildir.Es kümelenmesi durumunda, kümedeki tüm dizinler normal şekilde çalışamaz ve çekirdek işin çalışmasını koruyamaz.

    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

    • SDK erişimi: Günlük sistemi, SDK'ları farklı dillerde sağlar.SDK, günlüğün içeriğini birleşik bir protokol biçimine göre son ileti gövdesine otomatik olarak kapsülleyecek ve son olarak TCP aracılığıyla günlük yönlendirme katmanına (rsyslog-hub) gönderecektir;
    • Http web hizmeti erişimi: Günlüklere erişmek için SDk kullanamayan bazı hizmetler, Http istekleri aracılığıyla günlük sistemi tarafından dağıtılan web hizmetlerine doğrudan gönderilebilir ve web portalı tarafından birleşik olarak günlük arabellek katmanındaki kafka kümesine iletilebilir.

    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

    • Başlangıçta, 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. İş 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 depolamayı kullanır. Orijinal günlük verileri ve ElasticSearch indeks içeriği, depolamayı ve indekslemeyi tamamlamak için birleştirilir;
    • Dizinler günlük olarak oluşturulur. Önceden bir dizin oluşturmak, geçmiş veri miktarına bağlı olarak yarının dizinine karşılık gelen parça sayısını belirleyecek ve merkezi oluşturmanın verilerin yazılmamasına neden olmasını önleyecektir. Günlük sistemi artık yalnızca iş günlüklerini yaklaşık 7 gün boyunca saklar. Daha uzun bir depolama süresi yapılandırılırsa, arşiv günlüğünde depolanır;
    • Depolama için hem Hbase hem de Es doğrusal olarak ölçeklenebilen dağıtılmış sistemlerdir.

    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:

    • SDK: ihtiyaçlara göre özelleştirilebilir veya Skynet's TrackAppender veya SkynetClient'i kullanabilir;
    • Kafka kümesi: paylaşılabilir veya belirlenebilir Kafka kümesi;
    • Kıvılcım kümesi: Mevcut Spark kümesi iplik kümesinin üzerindedir ve kaynaklar izole edilmiştir.Genel olarak, özel yalıtıma gerek yoktur;
    • Depolama: ES ve Hbase'i içerir ve ES ve Hbase gerektiğinde birlikte veya ayrı ayrı dağıtılabilir.

    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:

  • Kısmi bağlantı izleme eksikliği: Loglar çok seviyeli modüller aracılığıyla oluşturulmuş ve alınmış ve artık toplanmıştır.Günlük tampon katmanı seri olarak bağlanmamıştır ve kayıp durumunu doğru bir şekilde izlemek ve alarmları zamanında itmek imkansızdır.
  • Artık bir günlük modeli bir kafka konusuna karşılık gelir ve konular varsayılan olarak üç bölüme atanır.Günlük modeli tarafından yazılan günlüklerin miktarındaki farklılık nedeniyle, bazı konular yüksek yüke sahiptir ve bazı konular belirli miktarda kaynak israfına neden olur ve dinamik kaynak ölçeklendirmesi için elverişsizdir. . Aşırı sayıda konu, aşırı sayıda bölüme yol açar ve bu da Kafka için belirli bir kaynak israfına neden olur ve ayrıca gecikme ve Broker kesinti kurtarma süresini artırır.
  • Şu anda, Elasticsearch'te Çince kelime segmentasyonu için ikmaxword kullanıyoruz. Kelime segmentasyonunun hedefi Çince'dir ve metin en ince ayrıntı düzeyinde bölünecektir, ancak günlüklerin çoğu İngilizce'dir ve kelime segmentasyon etkisi çok iyi değildir.
  • 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.

    ExclusiveChina Enterprise Yeni Medya Endeksi (Şubat 2018)
    önceki
    "Chinese Soul" yayında! Wu Yifanın "New Rap in China" şarkısı için kaç puan kazanıyorsunuz?
    Sonraki
    Öldürülen uçuş görevlisinin babasının Didi'ye karşı sorumlu tutulacağını söyleyen Didi, "Er Geng Kantini" 7 gün süreyle mühürlendi
    "Doğum ailenin" kapatıldığını duymak canımı yakıyor! 58 yaşından önce ATV'nin "doğan bebeği": ölmek üzere olan bir anne gibi
    1.6T motor K3 spor versiyonlu yeni Kia Forte GT
    Çin parasının yaklaşık% 80'i bir ev satın almaya gitti! Ortalama hanehalkı varlığı 1,6 milyondur. Önemli olan, stokların yalnızca% 1'inin kullanılmasıdır
    "Bu tür bir köprü ancak Çinliler tarafından yapılabilir ..."
    Paris'te ağlama! Milyarlarca verinin doğru şekilde taranması, Quasimodo'nun gül penceresini almasına yardımcı olur
    Tanıdık böcek mi? Pattanın ortak markalı nesnesi aslında ...
    Liu Mingzhong, Çin İlk Ağır Sanayi Başkanı: Reel ekonomi tedarikinin kalitesini iyileştirin ve endüstri rekabetinin hakim zirvelerini yakalayın Yeni devlete ait işletmelerle diyalog
    Ronaldo resmi olarak Juventus'a transfer oldu! Real Madrid'e 9 yıldır veda, en çok ne söylemek istiyorsun?
    Langfang Şehri sokaklarında bir otobüs alev aldı
    5G, Nesnelerin İnterneti, Yapay Zeka, Akıllı Emeklilik ... 5G Endüstrinin genel eğilimini anlamak için!
    Ateşkes öncesi şampiyonluğu kazandığı için Zall'ı tebrikler, ikinci yarıda nasıl oynanır? Li Tie dedi ki ...
    To Top