10 puan yazan GN⁺ 2025-04-23 | 1 yorum | WhatsApp'ta paylaş
  • 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, head kombinasyonunu 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, PgDn vb.
  • Vim tarzı tuşlar: h, j, k, l, g, G, Ctrl+U, Ctrl+D, i, a vb.
  • Giriş alanlarında Up, Down, Ctrl+P, Ctrl+N ile geçmişte gezinilebilir
  • Ctrl+K, Ctrl+J: tüm sorgu geçmişinde dolaşır

Başlıca komutlar

  • :xc veya :xclip: geçerli sorgu durumunu komut dizgesi olarak panoya kopyalar
    nerdlog --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, timezone vb. 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/syslog kullanımının mümkün olması için rsyslog gibi 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

 
GN⁺ 2025-04-23
Hacker News yorumları
  • Harika bir iş. TUI gerçekten çok temiz ve üstteki histogram hoşuma gitti. Bugün bununla biraz oynayacağım
  • Bugün öğrendiğim şey: awk desenleri basit bir düzenli ifadeden daha fazlasıymış ve boolean operatörlerle birleştirilebiliyormuş. Biraz awk kullandım ama bunu bilmiyordum
  • Gerçekten harika bir proje. Özellikle zaman çizelgesi histogramını, remote-first tasarımın sadeliğini ve TUI yaklaşımını beğendim
    • Birden fazla hostun loglarını işlerken ben de benzer zorluklar yaşadım ve bunun sonucunda Logdy adında bir araç yaptım
    • Logdy web tabanlı; gerçek zamanlı tailing, yapılandırılmış log arama ve birden fazla kaynak üzerinde hızlı filtrelemeye odaklanıyor. Merkezi bir sunucu gerektirmiyor
    • Doğrudan karşılaştırma yapmak istemem ama bu alanı araştırıyorsanız tamamlayıcı bir yaklaşım olarak veya farklı senaryolarda faydalı olabilir
    • Birden fazla host için sorgulama özelliği eklemek üzere çalışmak gerekiyor
    • Her durumda nerdlog'a tebrikler. Birden fazla servis çalıştırmayı gerektirmeyen, sade bir araç görmek her zaman güzel
  • Landing page'de journalctl'den bir kez bahsediliyor ve logların eski usul syslog içinde düz metin olarak saklanması gerektiği ima ediliyor
    • Düz metin log saklamak ve logrotate gibi eski çözümler kullanmak istemiyorum
    • journald'nin kendisi uzak hostlardan log alma ve (--merge kullanarak) bunlarda arama yapma konusunda yerleşik yeteneklere sahip
  • Bunu kesinlikle daha sonra kurcalayacağım. gzipped log arşivlerinin desteklenmemesi benim kullanım senaryolarımı şahsen epey azaltıyor
    • Bunun insanların dikkat edeceğini düşündüğü bir kısıt olarak belirtilmiş olması, yeterince düşünülmüş gibi geliyor. Sonunda desteklemeyi planlayıp planlamadığını merak ediyorum
  • Güzel görünüyor. Daha fazla kullanıcı istiyorsa, büyük Linux dağıtımlarına paketlemek için topluluktan yardım alabilir
  • Çok iyi. Bunu küçük log görüntüleyici listeme ekledim https://github.com/dloss/klp#alternative-tools
  • İyi. Buna birkaç yıl önce ihtiyacım vardı. Lisans dosyası yok mu?
  • İyi görünüyor. Kaynak kodu değiştirmeden RFC 3339 tarih/saat biçimini kullanmanın bir yolu olup olmadığını merak ediyorum
    • runit (Void Linux) ile çalışıp çalışmadığını merak ediyorum
  • Mükemmel. Böyle bir şey arıyordum
  • AWS CloudWatch'tan log görüntüleyip görüntüleyemediğini merak ediyorum