NerdLog - penampil log TUI multi-host cepat dengan histogram linimasa
(github.com/dimonomid)- 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, danheaduntuk 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
:xcatau:xclip: menyalin status kueri saat ini ke clipboard sebagai string perintahnerdlog --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 (mendukungnumlines,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
rsyslogharus berjalan agar/var/log/syslogdapat 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
Komentar Hacker News
--merge)