NerdLog - टाइमलाइन हिस्टोग्राम के साथ तेज़ मल्टी-होस्ट TUI लॉग व्यूअर
(github.com/dimonomid)- बिना किसी केंद्रीय सर्वर के, सिर्फ SSH कनेक्शन से remote logs को collect और analyze करने वाला तेज़ और resource-efficient TUI multi-host log viewer
- टाइमलाइन हिस्टोग्राम visualization और time filtering की मदद से log flow को आसानी से समझा जा सकता है
- बुनियादी
awk,tail,headसंयोजन का उपयोग करके high-speed processing और आसान setup को सपोर्ट करता है - log queries को local download के बिना remote पर process किया जाता है, जिससे network उपयोग कम होता है और बड़े logs को संभालने के लिए optimization मिलता है
- मूल रूप से सरल, लेकिन विभिन्न config files, SSH config, और UI controls के माध्यम से extensibility उपलब्ध
Nerdlog परिचय
- Nerdlog एक text-based UI log viewer है जो बिना केंद्रीय सर्वर के काम करता है
- यह Graylog/Kibana की तरह logs का analysis कर सकता है, लेकिन installation और maintenance के झंझट के बिना एक lightweight alternative tool है
- शुरुआती development motivation धीमे और inefficient Splunk से निराशा से शुरू हुई
- कई remote servers के logs को एक साथ filter और visualize करने के लिए optimized है
- मुख्य रूप से system logs (
/var/log/messages,/var/log/syslog) को process करने के लिए design किया गया है, लेकिन दूसरे formats भी support करता है - 1GB से बड़े logs भी तेज़ी से process किए जा सकते हैं
- मुख्य लक्ष्य multi-node log lookup की speed और efficiency को maximize करना है
डिज़ाइन विशेषताएँ
- बिना केंद्रीय सर्वर के काम करता है, और हर node के लिए ssh connection बनाकर उसे idle state में बनाए रखता है
- पूरे logs download किए बिना, हर query पर अधिकतम 250 log messages और histogram data ही भेजा जाता है
- सभी responses को merge करके एक unified view प्रदान किया जाता है
- transfer के समय Gzip compression का उपयोग करके network cost कम की जाती है
प्रोजेक्ट की स्थिति और इतिहास
- 2022 में एक personal hackathon के दौरान धीमे Splunk के विकल्प के रूप में बनाया गया, और 2025 में open source के रूप में जारी किया गया
- तेज़ implementation के कारण spaghetti code मौजूद है और test coverage कम है
- वास्तविक उपयोग परीक्षण केवल Linux environment में किया गया है
- यह अभी proof-of-concept चरण में है, लेकिन वास्तविक उपयोग के लिए पर्याप्त तेज़ और stable है
उपयोग का संक्षेप
- app चलाने पर query input window दिखाई देती है
- logstream का मतलब ssh से accessible server के लगातार log files से है
- ssh port या log file path को सीधे specify किया जा सकता है, या ssh config और अलग config file का उपयोग किया जा सकता है
- Select field expression में UI पर दिखाने वाले fields को SQL-style में specify किया जाता है
उदाहरण:
myuser@myserver.com
myuser@myserver.com:1234:/some/other/logfile
उदाहरण config file (~/.config/nerdlog/logstreams.yaml):
log_streams:
myhost-01:
hostname: actualhost1.com
port: 1234
user: myuser
log_files:
- /some/custom/logfile
UI संरचना
- Awk pattern input filter:
/foo/,( /bar/ || /baz/ ) && !/qux/आदि supported - Edit button: पूरी query input window खोलता है
- Menu button: back, forward, query copy आदि सुविधाएँ देता है
- Histogram: समय के अनुसार log density की visualization और time range selection संभव
- Log table: सबसे नए logs नीचे दिखते हैं, और दाईं ओर scroll करके detailed fields देखे जा सकते हैं
- Status bar:
- हरा: connected और waiting logstreams की संख्या
- नारंगी: अभी query हो रहे logstreams की संख्या
- लाल: connect हो रहे logstreams की संख्या
- दाईं ओर के नंबर: कुल matching logs / अभी loaded logs / cursor position
- Command line:
:key से access किया जा सकता है और Vim-style commands input किए जा सकते हैं
नेविगेशन के तरीके
- सामान्य keys:
Tab,Shift+Tab,Enter,Esc,PgUp,PgDnआदि - Vim-style keys:
h,j,k,l,g,G,Ctrl+U,Ctrl+D,i,aआदि - input field के अंदर
Up,Down,Ctrl+P,Ctrl+Nसे history navigation Ctrl+K,Ctrl+J: पूरी query history में आगे-पीछे जाना
मुख्य commands
:xcया:xclip: मौजूदा query state को command string के रूप में clipboard में copy करता हैnerdlog --lstreams 'localhost' --time -3h --pattern '/something/':back,:fwd: browser की तरह पिछली/अगली query पर जाना:edit: query edit window खोलना:write [filename]: अभी loaded logs को file में save करना:reconnect,:disconnect: logstream को फिर से connect करना / disconnect करना:set विकल्प=मान: settings बदलना (numlines,timezoneआदि supported):q: program बंद करना
आवश्यकताएँ
- remote hosts के लिए SSH access permissions चाहिए
- local में SSH agent चल रहा होना चाहिए
- hosts पर gawk installed होना चाहिए, mawk supported नहीं है
/var/log/syslogउपयोग करने के लिएrsyslogजैसी system log recording service चल रही होनी चाहिए- अधिक जानकारी के लिए आवश्यकताएँ और सीमाएँ देखें
समापन
- Nerdlog बिना installation के भी remote logs को तेज़ और visual तरीके से देखने का एक efficient tool है
- इसमें complex setup की ज़रूरत नहीं होती, और network resources बचाते हुए real-time analysis संभव है
- खास तौर पर Vim users या CLI tools पसंद करने वालों के लिए यह एक आदर्श log analysis tool है
1 टिप्पणियां
Hacker News टिप्पणियाँ
--mergeका इस्तेमाल करके) उन्हें search कर सके