NerdLog - Zaman Çizelgesi Histogramına Sahip Hızlı Çoklu Host TUI Log Görüntüleyici
(github.com/dimonomid)- Merkezi bir sunucu olmadan, yalnızca SSH bağlantısıyla uzaktaki logları toplama ve analiz etme imkanı sunan, hızlı ve kaynak verimli bir TUI çoklu host log görüntüleyici
- Zaman çizelgesi histogramı görselleştirmesi ve zaman filtreleme ile log akışını anlamayı kolaylaştırır
- Temel
awk,tail,headkombinasyonunu kullanarak yüksek hız ve kolay kurulum sağlar - Log sorguları yerel indirme olmadan uzakta işlenir, ağ kullanımını en aza indirir ve büyük hacimli loglar için optimize edilmiştir
- Varsayılan olarak basittir, ancak çeşitli yapılandırma dosyaları, SSH config ve UI etkileşimleri ile genişletilebilir
Nerdlog'a giriş
- Nerdlog, merkezi sunucu olmadan çalışan metin tabanlı bir UI log görüntüleyicidir
- Graylog/Kibana gibi log analizi yapabilir, ancak kurulum ve bakım yükü olmayan hafif bir alternatif araçtır
- İlk geliştirme motivasyonu, yavaş ve verimsiz Splunk'a duyulan hayal kırıklığıyla başladı
- Birden fazla uzak sunucudaki logları aynı anda filtreleme ve görselleştirme için optimize edilmiştir
- Esas olarak sistem loglarını (
/var/log/messages,/var/log/syslog) işlemek üzere tasarlanmıştır, ancak başka formatları da destekler - 1GB üzerindeki büyük logları da hızlıca işleyebilir
- Temel hedefi, çok düğümlü log incelemesinde hız ve verimliliği en üst düzeye çıkarmaktır
Tasarım özellikleri
- Merkezi sunucu olmadan çalışır ve her düğüm için bir ssh bağlantısı oluşturup bunu açık tutar
- Tüm logları indirmek yerine, her sorgu için en fazla 250 log mesajı ve histogram verisi gönderir
- Tüm yanıtları birleştirerek birleşik bir görünüm sunar
- Aktarım sırasında Gzip sıkıştırması kullanarak ağ maliyetini düşürür
Proje durumu ve geçmişi
- 2022'de yavaş Splunk'ın yerine geçmesi için kişisel bir hackathon projesi olarak geliştirildi ve 2025'te açık kaynak olarak yayımlandı
- Hızlı geliştirildiği için spaghetti code içeriyor ve test kapsamı yetersiz
- Gerçek kullanım testleri yalnızca Linux ortamında yapıldı
- Proof-of-concept aşamasında olsa da, gerçek kullanım için yeterince hızlı ve kararlı
Kullanım özeti
- Uygulama çalıştırıldığında bir sorgu giriş penceresi görünür
- Log stream, ssh ile erişilebilen sunuculardaki ardışık log dosyalarını ifade eder
- ssh portu veya log dosyası yolu belirtilebilir; ayrıca ssh config ve ayrı yapılandırma dosyaları da kullanılabilir
- Select field expression, UI'de gösterilecek alanları SQL tarzında belirtir
Örnek:
myuser@myserver.com
myuser@myserver.com:1234:/some/other/logfile
Örnek yapılandırma dosyası (~/.config/nerdlog/logstreams.yaml):
log_streams:
myhost-01:
hostname: actualhost1.com
port: 1234
user: myuser
log_files:
- /some/custom/logfile
UI bileşenleri
- Awk desen giriş filtresi:
/foo/,( /bar/ || /baz/ ) && !/qux/vb. desteklenir - Edit düğmesi: tam sorgu giriş penceresini açar
- Menu düğmesi: geri git, ileri git, sorguyu kopyala gibi işlevler sunar
- Histogram: zamana göre log yoğunluğunu görselleştirir ve zaman aralığı seçimine izin verir
- Log tablosu: en yeni loglar altta yer alır, sağa kaydırarak ayrıntılı alanlar görülebilir
- Durum çubuğu:
- Yeşil: bağlı ve beklemede olan log stream sayısı
- Turuncu: şu anda sorgulanan log stream sayısı
- Kırmızı: bağlanmakta olan log stream sayısı
- Sağdaki sayılar: toplam eşleşen log sayısı / şu anda yüklenmiş log sayısı / imleç konumu
- Komut satırı:
:tuşuyla erişilir ve Vim tarzı komutlar girilebilir
Gezinme yöntemleri
- Genel tuşlar:
Tab,Shift+Tab,Enter,Esc,PgUp,PgDnvb. - Vim tarzı tuşlar:
h,j,k,l,g,G,Ctrl+U,Ctrl+D,i,avb. - Giriş alanlarında
Up,Down,Ctrl+P,Ctrl+Nile geçmişte gezinilebilir Ctrl+K,Ctrl+J: tüm sorgu geçmişinde dolaşır
Başlıca komutlar
:xcveya:xclip: geçerli sorgu durumunu komut dizgesi olarak panoya kopyalarnerdlog --lstreams 'localhost' --time -3h --pattern '/something/':back,:fwd: tarayıcıdaki gibi önceki/sonraki sorguya gider:edit: sorgu düzenleme penceresini açar:write [filename]: o anda yüklenmiş logları dosyaya kaydeder:reconnect,:disconnect: log stream'e yeniden bağlan / bağlantıyı kes:set seçenek=değer: ayarları değiştirir (numlines,timezonevb. desteklenir):q: programdan çıkar
Gereksinimler
- Uzak hostlara SSH erişim yetkisi gerekir
- Yerelde SSH agent çalışıyor olmalıdır
- Hostlarda gawk kurulu olmalıdır, mawk desteklenmez
/var/log/syslogkullanımının mümkün olması içinrsysloggibi bir sistem log kayıt hizmeti çalışıyor olmalıdır- Ayrıntılar için gereksinimler ve kısıtlar bölümüne bakın
Sonuç
- Nerdlog, kurulum gerektirmeden uzaktaki logları hızlı ve görsel biçimde incelemeyi sağlayan verimli bir araçtır
- Karmaşık yapılandırma gerektirmez; ağ kaynaklarını korurken gerçek zamanlı analize imkan tanır
- Özellikle Vim kullanıcıları veya CLI araçlarını tercih edenler için ideal bir log analiz aracıdır
1 yorum
Hacker News yorumları
awkdesenleri basit bir düzenli ifadeden daha fazlasıymış ve boolean operatörlerle birleştirilebiliyormuş. Birazawkkullandım ama bunu bilmiyordumjournalctl'den bir kez bahsediliyor ve logların eski usulsyslogiçinde düz metin olarak saklanması gerektiği ima ediliyorlogrotategibi eski çözümler kullanmak istemiyorumjournald'nin kendisi uzak hostlardan log alma ve (--mergekullanarak) bunlarda arama yapma konusunda yerleşik yeteneklere sahiprunit(Void Linux) ile çalışıp çalışmadığını merak ediyorum