Genel olarak, günlük analizi senaryoları gerçekleştirmemiz gerekir: grep ve awk doğrudan log dosyasında istediğimiz bilgileri alabilir. Ancak, büyük ölçekli senaryolarda, bu yöntem verimsizdir, karşılaşılan sorunlar arasında çok fazla günlüğün nasıl arşivleneceği, çok yavaş metin aramanın nasıl yapılacağı ve birden çok boyutta nasıl sorgulama yapılacağı yer almaktadır. Merkezi günlük yönetimi gereklidir ve tüm sunucularda günlük toplama ve özetleme gerekir. Ortak çözüm, tüm düğümlerdeki günlükleri birleşik bir şekilde toplamak, yönetmek ve bunlara erişmek için merkezi bir günlük toplama sistemi oluşturmaktır. Açık kaynak merkezi günlük yönetim sistemi, ELK / EFK'yı ilk tanıtan ve ardından herkesin bunu anlamasına izin veren sistemdir.
Genel olarak, büyük ölçekli bir sistem, dağıtılmış bir dağıtım mimarisidir.Farklı sunuculara farklı hizmet modülleri yerleştirilir.Bir sorun oluştuğunda, çoğu durumda, sorunun açığa çıkardığı anahtar bilgilere göre belirli sunucuyu ve hizmet modülünü bulmak ve merkezi bir dizi oluşturmak gerekir. Günlük sistemi, sorunların yerini belirleme verimliliğini artırabilir.
Eksiksiz bir merkezi günlük sistemi aşağıdaki ana özellikleri içermelidir:
ELK, eksiksiz bir çözüm seti sağlar ve bunların tümü, birbirleriyle bağlantılı olarak kullanılan, mükemmel şekilde bağlanan ve birçok durumu verimli bir şekilde tatmin eden açık kaynaklı yazılımlardır. Şu anda ana akım olan bir günlük sistemi.
ELK, üç açık kaynaklı yazılımın kısaltmasıdır, yani Elasticsearch, Logstash, Kibana, hepsi açık kaynaklı yazılımdır. Hafif bir günlük toplama ve işleme aracı (Aracı) olan yeni bir FileBeat eklenir. Filebeat daha az kaynak kullanır ve çeşitli sunucularda günlükleri toplamak ve bunları Logstash'a iletmek için uygundur. Bu araç da resmi olarak önerilir.
Elasticsearch, üç işlev sağlayan açık kaynaklı, dağıtılmış bir arama motorudur: veri toplama, analiz etme ve depolama. Özellikleri şunlardır: dağıtılmış, sıfır yapılandırma, otomatik keşif, otomatik dizin parçalama, dizin kopyalama mekanizması, dinlendirici stil arabirimi, çoklu veri kaynakları, otomatik arama yükü vb.
Logstash temel olarak günlükleri toplamak, analiz etmek ve filtrelemek için kullanılır ve çok sayıda veri toplama yöntemini destekler. Genel çalışma yöntemi c / s mimarisidir.İstemci tarafı, günlükleri toplamaya ihtiyaç duyan ana bilgisayara kurulur ve sunucu tarafı, alınan düğüm günlüklerini filtrelemek ve değiştirmek ve aynı zamanda elasticsearch'e göndermekle sorumludur.
Kibana ayrıca açık kaynak kodlu ve ücretsiz bir araçtır. Kibana, Logstash ve ElasticSearch'e önemli veri günlüklerini özetlemeye, analiz etmeye ve aramaya yardımcı olabilecek günlük analizi dostu bir web arayüzü sağlayabilir.
Filebeat, Beats'in bir parçasıdır. Şu anda Beats dört araç içermektedir:
Packetbeat (ağ trafiği verilerini topla) Topbeat (sistem, işlem ve dosya sistemi düzeyinde CPU ve bellek kullanım verilerini toplayın) Filebeat (dosya verilerini topla) Winlogbeat (Windows olay günlüğü verilerini topla)Bu mimari, logstash'tan daha esnek olan, daha az kaynak tüketen ve daha ölçeklenebilir olan toplama tarafı olarak dosya atımlarını kullanır. Aynı zamanda, Logstash ve Elasticsearch kümeleri, büyük küme sistemlerinin işletim ve bakım günlüğü verilerinin izlenmesini ve sorgulanmasını desteklemek için yapılandırılabilir.
Filebeat iki ana bileşenden oluşur: araştırmacılar ve biçerdöverler. Bu iki bileşen, dosya değişikliklerini belirtilen çıktıya göndermek için birlikte çalışır.
Biçerdöver: Tek bir dosyanın içeriğini okumaktan sorumludur. Her dosya bir Biçerdöver başlatacak, her Biçerdöver her dosyayı satır satır okuyacak ve dosyanın içeriğini belirtilen çıktıya gönderecektir. Harvester, dosyaları açmak ve kapatmaktan sorumludur, bu da Harvester çalışırken dosya tanımlayıcısının açık olduğu anlamına gelir.Eğer dosya toplama sırasında yeniden adlandırılır veya silinirse, Filebeat dosyayı okumaya devam eder. Bu nedenle, Biçerdöver kapatılana kadar disk serbest bırakılmayacaktır. Varsayılan olarak, filebeat, close_inactive'e ulaşılıncaya kadar dosyayı açık tutacaktır (bu seçenek açıksa, filebeat belirtilen süre içinde artık güncellenmeyen dosya tutamacını kapatır ve zaman, hasatçının son satırı okuduğu andan itibaren başlar. Kapandıktan sonra, dosya değişirse yeni bir biçerdöver başlatılacaktır.Dosya tutamacını kapatma zamanı dosyanın değiştirme zamanına bağlı değildir. Bu parametre doğru yapılandırılmamışsa, günlük gerçek zamanlı olmayabilir. Scan_frequency parametresi tarafından belirlenir, varsayılan 10s'dir. .Harvester, dosyanın en son toplandığı zamanı kaydetmek için dahili zaman damgası kullanır. Örneğin: Harvester dosyanın son satırını okuduktan sonra 5 dakika için geri sayım başlar, dosyada 5 dakika içinde herhangi bir değişiklik olmazsa, dosya tanıtıcısı kapatılır. Varsayılan 5m).
Prospector: Harvester'ı yönetmekten ve tüm okuma kaynaklarını bulmaktan sorumludur.
filebeat.prospectors: -input_type: günlük yollar: - / apps / logs / * / info.logProspector, / apps / logs / * dizinindeki tüm info.log dosyalarını bulacak ve her dosya için bir Toplayıcı başlatacaktır. Prospector, Harvester'ın başlatılıp başlatılmadığını, başlatılması gerekip gerekmediğini veya dosyanın göz ardı edilip edilemeyeceğini görmek için her dosyayı kontrol edecektir. Biçerdöver kapalıysa, Prospector denetimleri yalnızca dosya boyutu değiştiğinde gerçekleştirecektir. Yalnızca yerel dosyalar tespit edilebilir.
Filebeat dosya durumunu nasıl kaydeder:
Dosyanın durumunu dosyaya kaydedin (varsayılan / var / lib / filebeat / kayıt defteri). Bu durum, Harvester toplama dosyasının ofsetini hatırlayabilir. ES gibi bir çıkış cihazına bağlanamıyorsanız, filebeat göndermeden önceki son satırı kaydedecek ve yeniden bağlanabildiğinizde göndermeye devam edecektir. Filebeat çalışırken, Prospector durumu belleğe kaydedilecektir. Filebeat yeniden başladığında, yeniden başlatmadan önce durumu geri yüklemek için kayıt defteri tarafından kaydedilen durumu kullanır. Her Arayıcı, bulunan her dosya için bir durum kaydedecektir.Her dosya için, Filebeat dosyanın önceden toplanıp toplanmadığını tespit etmek için benzersiz bir tanımlayıcı saklar.
Filebeat, olayın en az bir kez çıkmasını nasıl sağlar:
Filebeat'in olayın yapılandırılmış çıktıya veri kaybı olmadan en az bir kez teslim edilmesini sağlamasının nedeni, Filebeat'in her olayın teslim durumunu bir dosyaya kaydetmesidir. İhracatçı tarafından onaylanmadığında, filebeat bir yanıt alana kadar göndermeye çalışacaktır. Aktarım sırasında dosya atışı kapatılırsa, kapanmadan önce tüm zaman olayları onaylanmayacaktır. Filebeat kapatılmadan önceki herhangi bir onay süresi, filebeat yeniden başlatıldıktan sonra yeniden gönderilecektir. Bu, en az bir kez gönderilmesini sağlar, ancak tekrarlanabilir. Kapatmadan önce bir olay yanıtı için bekleme süresi, shutdown_timeout parametresi ayarlanarak ayarlanabilir (varsayılan olarak devre dışıdır).
Logstash olay işlemenin üç aşaması vardır: girişler filtreler çıkışlar. Günlükleri almak, işlemek ve iletmek için bir araçtır. Sistem günlüğü, web sunucusu günlüğü, hata günlüğü, uygulama günlüğü, kısaca, atılabilen tüm günlük türleri dahil olmak üzere destekleyin.
Girdi: Logstash'e veri girin.
Yaygın olarak kullanılan bazı girişler şunlardır:
dosya: kuyruk -f komutuna benzer şekilde dosya sistemindeki bir dosyadan okunur
syslog: 514 numaralı bağlantı noktasındaki sistem günlük mesajlarını izleyin ve bunları RFC3164 standardına göre analiz edin
redis: redis hizmetinden okuma
beats: filebeat'ten oku
Filtreler: Veri ara işlemi, verilerin işlenmesi.
Yaygın olarak kullanılan bazı filtreler şunlardır:
grok: Rasgele metin verilerini ayrıştıran Grok, Logstash için en önemli eklentidir. Ana işlevi, metin biçimindeki dizeyi belirli yapılandırılmış verilere dönüştürmek ve bunu normal ifadelerle kullanmaktır. Yerleşik 120'den fazla ayrıştırma sözdizimi
Resmi grok ifadesi: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
grok çevrimiçi hata ayıklama: https://grokdebug.herokuapp.com/
mutate: Alanı dönüştürün. Örneğin, alanları silin, değiştirin, değiştirin ve yeniden adlandırın.
drop: İşlem yapmadan bazı olayları bırakın.
clone: Olayı kopyalayın, bu süreçte alan ekleyebilir veya kaldırabilirsiniz.
geoip: coğrafi bilgi ekleyin (kibana'nın ön masada grafiksel olarak görüntülenmesi için kullanılır)
Çıktılar: Çıktılar, logstash işleme ardışık düzeninin son bileşenidir. Bir olay, işleme sırasında birden fazla çıktıdan geçebilir, ancak tüm çıktılar yürütüldüğünde, olay yaşam döngüsünü tamamlar.
Bazı yaygın çıktılar şunlardır:
Elasticsearch: Verileri verimli bir şekilde depolayabilir ve kolay ve basit bir şekilde sorgulayabilir.
dosya: olay verilerini bir dosyaya kaydedin.
grafit: Olay verilerini, grafik görüntüleme için popüler bir açık kaynak depolama bileşeni olan grafik bileşenine gönderin.
Codec'ler: codec'ler, giriş ve çıkışın bir parçası olarak yapılandırılabilen, veri akışına dayalı bir filtredir . Codec'ler, serileştirilmiş verileri kolayca bölmenize yardımcı olabilir.
Bazı yaygın codec bileşenleri:
json: Verileri kodlamak / kodunu çözmek için json formatını kullanın.
multiline: Birden çok olaydaki verileri tek bir satırda toplayın. Örneğin: java istisna bilgileri ve yığın bilgileri.
Alan sınırlı. Burada ELK / EFK ile ilgili kavramları tanıtacağım. EFK ile ilgili eğitimlerin nasıl oluşturulacağını daha sonra paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~