Youzan on milyarlarca log sistem mimarisi tasarımı

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:

  • İş 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.
  • Çoklu veri günlüğü veri toplama yöntemleri, yüksek işletme ve bakım maliyetleri
  • Depolama açısından,
    • Es varsayılan yönetim stratejisi benimsenmiştir. Tüm dizinler 3 * 2 parçaya (3 birincil, 3 kopya) karşılık gelir ve bazı dizinlerde büyük bir sayı vardır ve tek bir parçaya karşılık gelen veri miktarı büyük olur ve bu da etkin düğümlere neden olur , Reddedilen çok sayıda toplu istek var ve disk GÇ birkaç makinede yoğunlaştı.
    • 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 süreyle tutulur. Depolama ortamı olarak ssd için, işletme büyüdükçe depolama maliyetleri ç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.

    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

    • 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: SDk kullanarak günlüklere erişemeyen bazı hizmetler, Http istekleri aracılığıyla günlük kaydı sistemi tarafından dağıtılan web hizmetine doğrudan gönderilebilir ve web portalı tarafından 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, 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.

    • Dizin günlük olarak oluşturulur. Önceden bir dizin oluşturmak, geçmiş veri miktarına bağlı olarak yarının dizine karşılık gelen parça sayısını belirleyecek ve merkezi oluşturmanın verilerin yazılmamasına neden olmasını önleyecektir. Artık günlük sistemi 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şı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:

    • SDK: ihtiyaçlara göre özelleştirilebilir veya Skynet's TrackAppender veya SkynetClient kullanılabilir
    • Kafka kümesi: paylaşılabilir veya belirlenebilir Kafka kümesi
    • Kıvılcım kümesi: Mevcut Kıvılcım kümesi iplik kümesinin üzerindedir ve kaynaklar yalıtılır.Genel olarak, özel bir yalıtım gerekmez.
    • Depolama: ES ve Hbase dahil, ES ve Hbase, birlikte veya gerektiğinde 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. 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:

  • Kısmi bağlantı izleme eksikliği: Loglar çok seviyeli modüller aracılığıyla oluşturulmuş ve geri getirilmiştir.Artık bunlar toplanır ve log tampon katmanı seri bağlanmaz.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üm 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 uygun değildir. . Aşırı sayıda konu, aşırı bölüm sayısına yol açar ve bu da Kafka için belirli miktarda 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 ik_max_word kullanıyoruz Kelime segmentasyonunun hedefi Çince'dir ve metin en ince ayrıntı düzeyinde bölünecektir, ancak günlüklerin çoğu İngilizcedir ve kelime segmentasyon etkisi çok iyi değildir.
  • 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.

    Manchester United süperstarları yüzlerini tamamen yırttılar: zam yapmadan takımdan ayrılmak için başvurun, Real Madrid en büyük kazanan oldu
    önceki
    Zidane Operasyonu başlıyor! Real Madrid'in 100 milyon süperstarı tasfiye edilmeli, satılacak 4 büyük oyuncu var
    Sonraki
    Mao Xiaotong'un yüz hatları fazla narin, sahilde fotoğraf çekmek için uzun baskılı bir elbise giyiyor, nasıl bakarsanız bakın, bunlar "ilk aşk yüzleri"
    Dağıtım sisteminin gelişimini öğrenin
    Yaşlılara karşılıklı destek, sıcaklık için bir gruba sarılın Harbin'de geride kalan 23 yaşlı anneler gününü birlikte geçiriyor
    Premier Lig'de büyülü bir sahne! Van Dijk takım arkadaşına serbest vuruş yapmasını emretti ve Liverpool 12 saniye sonra bir irfan yarattı
    Binbaşı takla! 60 milyon canavar yıldız Real Madrid'e katılmak üzere olduklarını yalanladı, Zidane yine alay edildi
    Rosamund Kwan gerçekten 57 yaşında mı? Yüksek topuklu beyaz bir elbise giymek 25 yaşındaki bir kızdan bile daha güzel
    Zhihu resimli mobil terminal dinamik mühendislik uygulaması
    Afedersiniz! Real Madrid'in 80 milyon kralı Zidane tarafından göz ardı edildi ve geri dönmeden önce atıldı
    Jiang Xin, öğrenci ruhuyla dolu, 7 noktalı kot pantolonlu siyah beyaz bir ceket giyerek saç stilini ve aurasını değiştirdi.
    Messi Şampiyonlar Ligi finali istikrarlı mı? 150 milyon dev yaşam ve ölüm savaşını kaçırdı, 50.000 insan şimdiden çaresiz durumda
    Zhou Dongyu'nun kısa saç stili ortaya çıkıyor ve siyah elbisenin arkası askılı, büyük harfli yakışıklı ve seksi.
    Futbol gösterisi: Bundesliga'nın güç merkezi 35 dakikada 6 gol attı ve rakiplerini yendi 67 yıllık mucize doğdu
    To Top