NerdLog - โปรแกรมดูล็อกหลายโฮสต์แบบ TUI ที่รวดเร็วพร้อมฮิสโตแกรมไทม์ไลน์
(github.com/dimonomid)- โปรแกรมดูล็อกหลายโฮสต์แบบ TUI ที่รวดเร็วและใช้ทรัพยากรอย่างมีประสิทธิภาพ ซึ่งสามารถ รวบรวมและวิเคราะห์ล็อกระยะไกลได้ด้วยการเชื่อมต่อ SSH เพียงอย่างเดียว โดยไม่ต้องมีเซิร์ฟเวอร์กลาง
- เข้าใจการไหลของล็อกได้ง่ายด้วย การแสดงผลฮิสโตแกรมไทม์ไลน์และการกรองตามเวลา
- รองรับ การประมวลผลความเร็วสูงและการติดตั้งที่เรียบง่าย โดยใช้การผสมผสานพื้นฐานของ
awk,tail,head - คำสั่งคิวรีล็อกจะ ประมวลผลบนเครื่องระยะไกลโดยไม่ต้องดาวน์โหลดลงเครื่องโลคัล ช่วยลดการใช้เครือข่ายและเหมาะกับการจัดการล็อกขนาดใหญ่
- พื้นฐานเรียบง่าย แต่มีความยืดหยุ่นผ่าน ไฟล์ตั้งค่าหลากหลาย, SSH config, และการควบคุม UI
แนะนำ Nerdlog
- Nerdlog คือ โปรแกรมดูล็อกแบบ UI บนข้อความที่ทำงานได้โดยไม่ต้องมีเซิร์ฟเวอร์กลาง
- สามารถวิเคราะห์ล็อกได้คล้าย Graylog/Kibana แต่เป็น เครื่องมือทางเลือกแบบเบาที่ไม่สร้างภาระด้านการติดตั้งและการบำรุงรักษา
- แรงบันดาลใจเริ่มต้นของการพัฒนามาจากความผิดหวังกับ Splunk ที่ช้าและไม่มีประสิทธิภาพ
- เหมาะอย่างยิ่งสำหรับการ กรองและแสดงผลล็อกจากหลายเซิร์ฟเวอร์ระยะไกลพร้อมกัน
- ออกแบบมาหลัก ๆ เพื่อจัดการ system log (
/var/log/messages,/var/log/syslog) แต่รองรับฟอร์แมตอื่นด้วย - ประมวลผลล็อกขนาดใหญ่เกิน 1GB ได้อย่างรวดเร็ว
- เป้าหมายหลักคือ เพิ่มความเร็วและประสิทธิภาพสูงสุดในการดูล็อกจากหลายโหนด
ลักษณะการออกแบบ
- ทำงานได้โดยไม่ต้องมีเซิร์ฟเวอร์กลาง โดยสร้างการเชื่อมต่อ ssh สำหรับแต่ละโหนดและคงสถานะรอไว้
- ไม่ดาวน์โหลดล็อกทั้งหมด แต่จะ ส่งเฉพาะข้อความล็อกสูงสุด 250 รายการต่อหนึ่งคำถามพร้อมข้อมูลฮิสโตแกรม
- รวมทุกคำตอบเข้าด้วยกันเพื่อ แสดงผลเป็นมุมมองเดียวแบบรวมศูนย์
- ใช้ การบีบอัด Gzip ระหว่างการส่งข้อมูล เพื่อลดต้นทุนเครือข่าย
สถานะและประวัติโครงการ
- สร้างขึ้นในปี 2022 ระหว่างแฮกกาธอนส่วนตัวเพื่อใช้แทน Splunk ที่ช้า และเปิดซอร์สในปี 2025
- พัฒนาอย่างรวดเร็ว จึงมีโค้ดแบบสปาเกตตีอยู่และมี test coverage ไม่มาก
- ผ่านการทดสอบใช้งานจริงเฉพาะบนสภาพแวดล้อม Linux
- แม้อยู่ในขั้น proof-of-concept แต่ก็เร็วและเสถียรพอสำหรับการใช้งานจริง
สรุปการใช้งาน
- เมื่อรันแอป จะมีช่องป้อนคิวรีปรากฏขึ้น
- logstream หมายถึงไฟล์ล็อกแบบต่อเนื่องของเซิร์ฟเวอร์ที่เข้าถึงได้ผ่าน ssh
- สามารถระบุพอร์ต ssh หรือพาธไฟล์ล็อกได้โดยตรง หรือใช้ ssh config และไฟล์ตั้งค่าแยกต่างหากก็ได้
- Select field expression ใช้ระบุฟิลด์ที่จะแสดงใน UI ในรูปแบบสไตล์ SQL
ตัวอย่าง:
myuser@myserver.com
myuser@myserver.com:1234:/some/other/logfile
ตัวอย่างไฟล์ตั้งค่า (~/.config/nerdlog/logstreams.yaml):
log_streams:
myhost-01:
hostname: actualhost1.com
port: 1234
user: myuser
log_files:
- /some/custom/logfile
องค์ประกอบของ UI
- ตัวกรองอินพุตแพตเทิร์น Awk: รองรับ
/foo/,( /bar/ || /baz/ ) && !/qux/เป็นต้น - ปุ่ม Edit: เปิดหน้าต่างป้อนคิวรีแบบเต็ม
- ปุ่ม Menu: มีฟังก์ชันย้อนกลับ ไปข้างหน้า คัดลอกคิวรี เป็นต้น
- ฮิสโตแกรม: แสดงความหนาแน่นของล็อกตามช่วงเวลาและเลือกช่วงเวลาได้
- ตารางล็อก: ล็อกล่าสุดอยู่ด้านล่าง และสามารถเลื่อนแนวนอนทางขวาเพื่อดูฟิลด์รายละเอียดได้
- แถบสถานะ:
- สีเขียว: จำนวน logstream ที่เชื่อมต่อและอยู่ในสถานะรอ
- สีส้ม: จำนวน logstream ที่กำลังถูกคิวรีอยู่ในขณะนี้
- สีแดง: จำนวน logstream ที่กำลังเชื่อมต่อ
- ตัวเลขด้านขวา: จำนวนล็อกที่ตรงทั้งหมด / จำนวนล็อกที่โหลดอยู่ตอนนี้ / ตำแหน่งเคอร์เซอร์
- บรรทัดคำสั่ง: เข้าถึงด้วยปุ่ม
:และสามารถป้อนคำสั่งสไตล์ Vim ได้
วิธีนำทาง
- ปุ่มทั่วไป:
Tab,Shift+Tab,Enter,Esc,PgUp,PgDnเป็นต้น - ปุ่มสไตล์ Vim:
h,j,k,l,g,G,Ctrl+U,Ctrl+D,i,aเป็นต้น - ภายในช่องป้อนข้อมูล ใช้
Up,Down,Ctrl+P,Ctrl+Nเพื่อดูประวัติ Ctrl+K,Ctrl+J: วนดูประวัติคิวรีทั้งหมด
คำสั่งหลัก
:xcหรือ:xclip: คัดลอกสถานะคิวรีปัจจุบันเป็นสตริงคำสั่งไปยังคลิปบอร์ดnerdlog --lstreams 'localhost' --time -3h --pattern '/something/':back,:fwd: ย้ายไปยังคิวรีก่อนหน้า/ถัดไปเหมือนเบราว์เซอร์:edit: เปิดหน้าต่างแก้ไขคิวรี:write [filename]: บันทึกล็อกที่โหลดอยู่ในปัจจุบันลงไฟล์:reconnect,:disconnect: เชื่อมต่อ logstream ใหม่ / ตัดการเชื่อมต่อ:set 옵션=값: เปลี่ยนการตั้งค่า (numlines,timezoneเป็นต้น):q: ปิดโปรแกรม
ข้อกำหนด
- ต้องมีสิทธิ์เข้าถึงโฮสต์ระยะไกลผ่าน SSH
- บนเครื่องโลคัล ต้องมี SSH agent ทำงานอยู่
- บนโฮสต์ ต้องติดตั้ง gawk และ ไม่รองรับ mawk
- ต้องมีบริการบันทึก system log เช่น
rsyslogทำงานอยู่ จึงจะสามารถใช้/var/log/syslogได้ - รายละเอียดเพิ่มเติมดูได้ที่หัวข้อ Requirements and limitations
สรุป
- Nerdlog เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการดูล็อกระยะไกลได้อย่างรวดเร็วและเป็นภาพโดยไม่ต้องติดตั้ง
- ไม่ต้องมีการตั้งค่าซับซ้อน และสามารถวิเคราะห์แบบเรียลไทม์ได้พร้อมทั้งประหยัดทรัพยากรเครือข่าย
- เหมาะอย่างยิ่งสำหรับ ผู้ใช้ Vim หรือผู้ที่ชื่นชอบเครื่องมือ CLI
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
--merge)