10 poin oleh GN⁺ 2025-04-23 | 1 komentar | Bagikan ke WhatsApp
  • Pengumpulan dan analisis log jarak jauh hanya lewat koneksi SSH dimungkinkan tanpa server pusat, melalui penampil log multi-host TUI yang cepat dan efisien sumber daya
  • Visualisasi histogram linimasa dan pemfilteran waktu memudahkan pemahaman alur log
  • Menggunakan kombinasi dasar awk, tail, dan head untuk mendukung pemrosesan cepat dan deployment yang sederhana
  • Kueri log diproses di host jarak jauh tanpa unduhan lokal, meminimalkan penggunaan jaringan dan dioptimalkan untuk log berukuran besar
  • Dasarnya sederhana, tetapi tetap punya ekstensibilitas melalui berbagai file konfigurasi, SSH config, dan kontrol UI

Pengenalan Nerdlog

  • Nerdlog adalah penampil log berbasis UI teks yang berjalan tanpa server pusat
  • Dapat menganalisis log seperti Graylog/Kibana, tetapi merupakan alat alternatif ringan tanpa beban instalasi dan pemeliharaan
    • Motivasi pengembangan awalnya berangkat dari kekecewaan terhadap Splunk yang lambat dan tidak efisien
  • Dioptimalkan untuk memfilter dan memvisualisasikan log dari beberapa server jarak jauh secara bersamaan
  • Terutama dirancang untuk memproses log sistem (/var/log/messages, /var/log/syslog), tetapi juga mendukung format lain
  • Log berukuran besar di atas 1GB pun bisa diproses dengan cepat
  • Tujuan utamanya adalah memaksimalkan kecepatan dan efisiensi penelusuran log multi-node

Karakteristik desain

  • Berjalan tanpa server pusat, dengan membuat koneksi ssh ke tiap node dan menjaganya tetap standby
  • Tanpa mengunduh seluruh log, hanya hingga 250 pesan log dan data histogram per kueri yang dikirim
  • Semua respons digabungkan untuk memberikan tampilan terpadu
  • Menggunakan kompresi Gzip saat transmisi untuk mengurangi biaya jaringan

Status dan sejarah proyek

  • Dibuat pada 2022 dalam hackathon pribadi sebagai pengganti Splunk yang lambat, lalu dirilis sebagai open source pada 2025
  • Diimplementasikan dengan cepat sehingga ada spaghetti code dan cakupan pengujian masih kurang
  • Baru diuji dalam penggunaan nyata di lingkungan Linux
  • Masih pada tahap proof-of-concept, tetapi cukup cepat dan stabil untuk penggunaan nyata

Ringkasan penggunaan

  • Saat aplikasi dijalankan, jendela input kueri akan muncul
  • Log stream berarti kumpulan file log berurutan di server yang dapat diakses via ssh
  • Anda bisa menentukan port ssh atau path file log secara langsung, atau memakai ssh config dan file konfigurasi terpisah
  • Select field expression digunakan untuk menentukan field yang ditampilkan di UI dengan gaya SQL

Contoh:

myuser@myserver.com  
myuser@myserver.com:1234:/some/other/logfile  

Contoh file konfigurasi (~/.config/nerdlog/logstreams.yaml):

log_streams:  
  myhost-01:  
    hostname: actualhost1.com  
    port: 1234  
    user: myuser  
    log_files:  
      - /some/custom/logfile  

Komponen UI

  • Filter input pola Awk: mendukung /foo/, ( /bar/ || /baz/ ) && !/qux/, dll.
  • Tombol Edit: membuka jendela input kueri lengkap
  • Tombol Menu: menyediakan fungsi kembali, maju, salin kueri, dll.
  • Histogram: visualisasi kepadatan log per waktu dan memungkinkan pemilihan rentang waktu
  • Tabel log: log terbaru berada di bagian bawah, dan field detail dapat dilihat dengan scroll ke kanan
  • Status bar:
    • Hijau: jumlah log stream yang terhubung dan standby
    • Oranye: jumlah log stream yang sedang dikueri
    • Merah: jumlah log stream yang sedang dalam proses koneksi
    • Angka di kanan: jumlah total log yang cocok / jumlah log yang saat ini dimuat / posisi kursor
  • Command line: diakses dengan tombol : dan mendukung perintah bergaya Vim

Cara navigasi

  • Tombol umum: Tab, Shift+Tab, Enter, Esc, PgUp, PgDn, dll.
  • Tombol gaya Vim: h, j, k, l, g, G, Ctrl+U, Ctrl+D, i, a, dll.
  • Di dalam field input, histori dapat ditelusuri dengan Up, Down, Ctrl+P, Ctrl+N
  • Ctrl+K, Ctrl+J: menelusuri seluruh histori kueri

Perintah utama

  • :xc atau :xclip: menyalin status kueri saat ini ke clipboard sebagai string perintah
    nerdlog --lstreams 'localhost' --time -3h --pattern '/something/'  
    
  • :back, :fwd: berpindah ke kueri sebelumnya/berikutnya seperti di browser
  • :edit: membuka jendela edit kueri
  • :write [filename]: menyimpan log yang saat ini dimuat ke file
  • :reconnect, :disconnect: menyambungkan ulang / memutuskan koneksi log stream
  • :set opsi=nilai: mengubah pengaturan (mendukung numlines, timezone, dll.)
  • :q: keluar dari program

Persyaratan

  • Memerlukan hak akses SSH ke host jarak jauh
  • SSH agent harus berjalan di lokal
  • gawk harus terpasang di host, dan mawk tidak didukung
  • Layanan pencatatan log sistem seperti rsyslog harus berjalan agar /var/log/syslog dapat digunakan
  • Untuk detail lebih lanjut, lihat bagian Requirements and limitations

Penutup

  • Nerdlog adalah alat efisien untuk memeriksa log jarak jauh secara cepat dan visual tanpa instalasi
  • Tidak memerlukan konfigurasi rumit, dan memungkinkan analisis real-time sambil menghemat sumber daya jaringan
  • Sangat ideal terutama bagi pengguna Vim atau mereka yang menyukai alat CLI

1 komentar

 
GN⁺ 2025-04-23
Komentar Hacker News
  • Keren sekali. TUI-nya sangat rapi dan saya suka histogram di bagian atas. Saya akan mencobanya hari ini
  • Hal yang saya pelajari hari ini: pola awk lebih dari sekadar ekspresi reguler sederhana, dan bisa digabungkan dengan operator boolean. Saya pernah sedikit memakai awk, tetapi tidak tahu soal ini
  • Proyek yang sangat keren. Saya terutama menyukai kesederhanaan histogram timeline, desain yang mengutamakan remote, dan pendekatan TUI-nya
    • Saya pernah mengalami kesulitan serupa saat menangani log dari banyak host, dan akhirnya membuat alat bernama Logdy
    • Logdy berbasis web dan berfokus pada tailing real-time, pencarian log terstruktur, dan pemfilteran cepat untuk banyak sumber. Tidak memerlukan server pusat
    • Bukan bermaksud membandingkan secara langsung, tetapi jika Anda sedang menjelajahi bidang ini, ini mungkin berguna sebagai pendekatan yang saling melengkapi atau untuk skenario yang berbeda
    • Perlu pekerjaan tambahan untuk menambahkan fitur kueri terhadap banyak host
    • Bagaimanapun juga, salut untuk nerdlog. Selalu menyenangkan melihat alat yang ringkas tanpa perlu menjalankan banyak layanan
  • Di landing page, journalctl disebut sekali, dan ada kesan bahwa log harus disimpan sebagai plain text dalam syslog gaya lama
    • Saya tidak ingin menyimpan log plain text dan memakai solusi lama seperti logrotate
    • journald sendiri memiliki kemampuan bawaan untuk menerima log dari host remote dan mencarinya (dengan memakai --merge)
  • Saya pasti akan mencobanya nanti. Arsip log gzipped tidak didukung, dan itu secara pribadi sangat membatasi use case saya
    • Tampaknya ini sudah cukup dipertimbangkan karena disebutkan sebagai keterbatasan yang menurut mereka akan diperhatikan orang. Saya penasaran apakah pada akhirnya ada rencana untuk mendukungnya
  • Terlihat bagus. Jika ingin lebih banyak pengguna, Anda bisa meminta bantuan komunitas untuk memaketkannya ke distro Linux utama
  • Sangat bagus. Saya sudah menambahkannya ke daftar kecil log viewer saya https://github.com/dloss/klp#alternative-tools
  • Bagus. Saya membutuhkannya beberapa tahun lalu. Tidak ada file lisensi?
  • Terlihat bagus. Saya penasaran apakah ada cara memakai format tanggal/waktu RFC 3339 tanpa mengubah source code
    • Saya juga penasaran apakah ini bekerja dengan runit (Void Linux)
  • Luar biasa. Saya sudah mencari sesuatu seperti ini
  • Saya penasaran apakah ini bisa dipakai untuk melihat log di AWS CloudWatch