ดูบันทึกบนเซิร์ฟเวอร์ระยะไกลลินุกซ์


21

มีเครื่องมือที่ดีสำหรับการทำ 'tail -f' บนเซิร์ฟเวอร์ระยะไกล (linux) หรือไม่? มันจะเป็นการดีถ้าคุณสามารถทำบางอย่างเช่น "taillog server_host / var / log / syslog" เพื่อดูบันทึกบนเซิร์ฟเวอร์ต่าง ๆ โดยไม่ต้องใช้ ssh

แอพที่แสดงหลาย ๆ ไฟล์บันทึกเคียงข้างกันอย่างไร

คำตอบ:


16

หากไฟล์บันทึกถูกสร้างขึ้นบนเซิร์ฟเวอร์ไคลเอ็นต์ผ่านทางเครื่องมือsyslogอำนวยความสะดวกวิธีที่ดีที่สุดคือการตั้งค่าไคลเอนต์ syslog daemon เพื่อส่งต่อบันทึกเหล่านั้นไปยังโฮสต์ที่แยกต่างหาก ตัวอย่างเช่นถ้าฉันมีชื่อภายในsyslog.privateซึ่งชี้ไปยังเซิร์ฟเวอร์ระยะไกลที่ฉันต้องการรับรายการบันทึก ฉันสามารถเพิ่มบรรทัดต่อไปนี้ไปยัง/etc/syslog.confบนไคลเอนต์เซิร์ฟเวอร์

*.*          @syslog.private

จากนั้นรีสตาร์ท syslog daemon บนไคลเอ็นต์

service syslog reload

สิ่งนี้จะทำให้ทุกรายการที่ส่งผ่าน syslog ของไคลเอ็นต์ถูกส่งข้ามสายไปยังsyslog.privateและหากเครื่องนั้นได้รับการกำหนดค่าอย่างถูกต้องรายการก็จะพร้อมใช้งานเช่นกัน ในระบบ RedHat สิ่งนี้จะถูกควบคุมโดย/etc/sysconfig/syslogไฟล์ ตรวจสอบให้แน่ใจว่ามี-rตัวเลือกอยู่

% grep "SYSLOGD" /etc/sysconfig/syslog 
SYSLOGD_OPTIONS="-m 0 -r"

จากนั้นรีสตาร์ท syslog daemon บนเซิร์ฟเวอร์ที่รับ

คุณสามารถควบคุมสิ่งที่ถูกส่งต่อไปยังเซิร์ฟเวอร์ระยะไกลได้โดยการเพิ่มการยกเว้นดูตัวอย่างด้านล่าง

*.*;mail.none   @syslog.private

ซึ่งบอกว่าส่งต่อทุกอย่างไปsyslog.privateด้วยยกเว้นทุกสิ่งที่ส่งไปยังmailศูนย์

หากวิธีนี้เหมาะกับคุณคุณอาจพิจารณาการใช้งาน syslog ทางเลือกอย่างใดอย่างหนึ่งเช่นrsyslogหรือsyslog-ngซึ่งมีตัวเลือกการบันทึกและจัดเก็บเพิ่มเติม


1
+1 การจัดเก็บบันทึกข้อมูลส่วนกลางเป็นสิ่งสำคัญยิ่ง มันดีมากที่มีชุดบันทึกที่สะอาดหลังจากตัวแบ่ง มันไม่รับประกันความสะอาดเพราะพวกมันอาจถูกวางยาพิษโดยผู้โจมตี แต่ผู้โจมตีไม่สามารถลบอะไรได้
ผู้บัญชาการ Keen

แล้วใช้ multitail หรือ sperlunk บนเซิร์ฟเวอร์เข้าสู่ระบบส่วนกลางของคุณเป็นวิธีที่ดีที่จะได้รับความรู้สึกสำหรับเครือข่ายทั้งหมดของคุณ
เดฟเชนีย์

9

หากคุณตั้งค่าการตรวจสอบความถูกต้องโดยใช้คีย์ ssh และ sudo บนรีโมตโฮสต์บนรีโมตโฮสต์เพื่ออนุญาตให้รัน tail กับไฟล์บันทึกโดยไม่ต้องแจ้งรหัสผ่าน มันจะค่อนข้างง่ายในการสร้างสคริปต์ taillog ที่ทำในสิ่งที่คุณต้องการด้านล่าง สิ่งนี้ไม่ได้หลีกเลี่ยง ssh แต่ช่วยให้คุณประหยัดได้ไม่กี่ขั้นตอน

#!/bin/bash
ssh $1 sudo tail -f $2

หรือคุณสามารถตั้งค่า syslog เพื่อส่งต่อข้อความบันทึกทั้งหมดไปยังระบบกลางจากนั้นรันคำสั่ง tail ของคุณบนเซิร์ฟเวอร์ syslog เพียงแค่ดูไฟล์บันทึกในระบบกลาง


5

ฉันอยากจะแนะนำmultitailสำหรับการดูบันทึกขั้นสูง ตนเองอธิบายว่าหางบนเตียรอยด์


ฉันเพิ่งลงคะแนนไม่ได้เมื่อ 15 ชั่วโมงก่อนสำหรับข้อเสนอแนะนั้น ผมจะ uncloak การโพสต์ ...
เอเวอรี่เพน

อืมใช่ฉันไม่คิดว่า multitail เป็นคำตอบที่แน่นอนสำหรับคำถาม แต่ฉันคิดว่ามันมีค่ามากพอที่จะรวมอยู่ในคำตอบ คะแนนโหวตสำหรับมันค่อนข้างรุนแรง
gacrux

ตกลงที่ไม่เป็นธรรม .... บันทึกหลายคำตอบครึ่งหนึ่งของคำถามสองส่วนนี้ - ส่วน 'เคียงข้างกัน' (vimdiff ยังทำงานได้ดีหรือ vim -O อย่างน้อย) เพียงเพราะมันไม่ได้แก้ไขส่วนที่อยู่ห่างไกลน่าจะเป็นปัญหา
ericslaw

3

นี่ไม่ใช่การตอบคำถามของคุณอย่างชัดเจน แต่ถ้าคุณมีบันทึกการดูมากกว่าสองสามรายการและน้อยกว่าขีด จำกัด รุ่นฟรีคุณสามารถลองSplunkได้ฟรีเพื่อมีส่วนต่อประสานที่ดีและเป็นประโยชน์ต่อข้อมูลการบันทึกทั้งหมดของคุณ

tail -f รองรับมากกว่าหนึ่งบันทึก แต่ไม่ใช่แบบเคียงข้างกันเท่านั้น


Splunk มีฟีเจอร์ tail ที่คุณสามารถใช้เพื่อทำ remote tail -f บนไฟล์ ฉันไม่เชื่อว่ามันจะเคียงข้างกัน
thepocketwade

2

Multitailจะทำสิ่งที่คุณตามหาในเครื่องของคุณ ไม่ได้ระบุอย่างเจาะจงว่าจะใช้งานข้ามเครือข่ายได้หรือไม่แม้ว่าจะมีหลายวิธีในการแก้ไข (NFS mounts, SMB mounts ฯลฯ ) นอกจากนี้ยังบอกว่ามันจะทำงานเป็นเซิร์ฟเวอร์ syslog ซึ่งหมายความว่ามันอาจจะสามารถ เพื่อรับข้อมูลที่ใช้งานจาก syslog ของเครื่องอื่นแม้ว่าฉันจะไม่เคยใช้คุณสมบัตินั้นและไม่ทราบว่าเป็นกรณีนี้หรือไม่


2

ฉันใช้OtrosLogViewer ( สิทธิ์ใช้งานapache ทั่วไป) สนับสนุนบันทึกการปรับแต่งจากเซิร์ฟเวอร์ระยะไกลโดยใช้ ssh / sftp และ samba / CIFS คุณสามารถรวมไฟล์บันทึกหลายไฟล์ไว้ในหน้าต่างเดียว นี่คือภาพหน้าจอ: สกรีนช็อต OtrosLogViewer


คุณมีรูปแบบไฟล์ syslog linux หรือไม่
Edgard Leal

คุณต้องสร้างฐานรูปแบบของคุณเองในตัวอย่าง: code.google.com/p/otroslogviewer/wiki/Log4jPatternLayout
KrzyH

ใช้รูปแบบต่อไปนี้เพื่อเชื่อมต่อใน SFTP (ไม่มีเบราว์เซอร์ UI ในรุ่น 1.4.5):sftp://hostname/path/to/directory
Donatello

1

ฉันเขียน vsConsole เพื่อจุดประสงค์นี้ - การเข้าถึงไฟล์บันทึกได้ง่าย (สิทธิ์การใช้งาน sshing และไฟล์เป็นปัญหาเสมอ) - จากนั้นเพิ่มการตรวจสอบแอพและการติดตามเวอร์ชั่น ฉันอยากรู้ว่าคุณคิดอย่างไร http://vs-console.appspot.com/

นี่หมายถึงเป็นเส้นโค้งการเรียนรู้ที่ง่ายและต่ำโซลูชันการคลิกเพียงครั้งเดียวในการแก้ปัญหาการพัฒนาทั่วไปที่ฉันต้องการเสมอโซลูชันที่เรียบง่ายสำหรับ


0

คุณสามารถใช้บางอย่างเช่น Phplogcon ฉันใช้ rsyslog กับ mysql และส่งบันทึกทั้งหมดจากเซิร์ฟเวอร์อื่นของฉันไปยังมัน Phplogcon จะแสดงผ่านการใช้เว็บแอปพลิเคชัน

มันไม่ใช่อินเทอร์เฟซที่ดูดีที่สุด แต่เป็นวิธีที่ดีสำหรับผู้ดูแลระบบในการเข้าถึงบันทึกโดยไม่ต้องเปิดเผยเซิร์ฟเวอร์ให้เข้าสู่ระบบจากระยะไกลที่ไม่จำเป็น


0

พูดถึงแล้ว แต่ควรพูดถึงอีกครั้ง Splunk!

ฉันมีความสุขในการสร้างการตั้งค่าระบบกลางขนาดใหญ่พร้อมกุยที่ดีในอดีต มันเป็นโลกแห่งความเจ็บปวด Splunk ทำให้มันเป็นคนหัวดื้อโดยเฉพาะอย่างยิ่งเมื่อมีใบอนุญาตขององค์กรคุณจะได้รับการจัดการจากส่วนกลาง หากบันทึกของคุณต่ำกว่า 500M ต่อวันคุณสามารถใช้งานได้ฟรี ถ้าไม่เช่นนั้นอาจมีราคาแพงมาก แต่ก็คุ้มค่าและไม่ใช่เพียงแค่การบันทึกเล็กน้อย - คุณสามารถทำอะไรได้มากกว่านี้ ฉันมักจะให้การสนับสนุนแอปโอเพ่นซอร์ส แต่ Splunk ชนะทุกสิ่งที่ฉันเจอ


0

ลองสิ่งนี้:

ssh servername tail -f /var/log/messages

หากล็อกไฟล์ของคุณได้รับการปกป้อง:

ssh -f servername sudo tail -f /var/log/messages

(คุณไม่จำเป็นต้องใช้ "ssh -f" - เป็นเพียงเพื่อให้รหัสผ่านของคุณไม่ได้สะท้อนไปยัง TTY)

หากคุณชอบที่คุณสามารถใช้คำสั่งเช่นเดียวกันกับSSH คลัสเตอร์


0

คุณยังสามารถใช้Octopussy (โครงการของฉัน) เพื่อรวบรวมบันทึกของคุณจากส่วนกลางดูและสร้างการแจ้งเตือนและรายงาน


-1

นอกจากคำตอบ @KrzyH (Otros)ฉันได้เขียนส่วนเสริมของ Otros เพื่อให้คุณสามารถติดตั้ง WAR บนเครื่องระยะไกลได้ดังนั้นในทางเทคนิคคุณสามารถใช้ Otros เป็นบริการเว็บได้

รายละเอียดเพิ่มเติมที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.