คุณใช้การจัดการบันทึกบนเซิร์ฟเวอร์ของคุณอย่างไร


13

ฉันกำลังพยายามหาวิธีที่คนอื่นใช้ระบบจัดการบันทึกของพวกเขา

ฉันมีเซิร์ฟเวอร์ Linux 20-30 ตัวและกล่อง Windows บางอัน (ส่วนใหญ่เป็นเวอร์ชวลไลเซชัน) เราใช้สคริปต์ Perl และ Bash จำนวนมากเพื่อทำงานส่วนใหญ่โดยอัตโนมัติของเราและฉันพยายามสร้างมาตรฐานการบันทึกของพวกเขา

ฉันได้ดู log4perl และ log4sh สำหรับการบันทึกสคริปต์และ syslog-ng เพื่อรับบันทึกทั้งหมดในเซิร์ฟเวอร์การบันทึกส่วนกลาง ฉันได้อ่านข้อมูลเกี่ยวกับความกล้าหาญด้วยแม้ว่าจะดูเหมือนว่ารุ่นสำหรับองค์กรมีราคาแพงและฉันอาจใช้เกินขีด จำกัด สิทธิ์การใช้งานฟรีกับเซิร์ฟเวอร์ทั้งหมดของฉัน

ฉันเคยเห็นเครื่องมืออื่น ๆ เช่น swatch และ logcheck แต่ฉันไม่แน่ใจว่าชิ้นส่วนเหล่านี้เข้ากันได้อย่างไร ... คำแนะนำใด ๆ จะได้รับการชื่นชมอย่างมาก!


คำตอบ:


8

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

เซิร์ฟเวอร์แอปพลิเคชันของฉันแต่ละตัวรันสคริปต์ perl ขนาดเล็กเพื่อส่งบันทึกไปยัง syslog ซึ่งส่งต่อไปยัง loghost (สคริปต์ perl ด้านล่าง)

จากนั้นใน loghost เรามีสคริปต์ที่กำหนดเองที่คล้ายกับ logcheck ที่โดยทั่วไปดูบันทึกที่เข้ามาสำหรับสิ่งที่น่าสงสัย

นอกจากนี้เรายังมีอีเมลทั้งหมดจากโฮสต์ทุกแห่งที่ไปที่เดียวดังนั้นหากมีโปรแกรมใดบ่นเราก็จะได้รับข้อความทั้งหมด ในทางทฤษฎีสามารถไปที่กล่องจดหมายเดียวที่โปรแกรมสามารถทำงานและวิเคราะห์ได้

นี่คือสคริปต์การบันทึกของฉัน มันทำงานได้โดยการไพพ์เอาท์พุทของโปรแกรมลงไปจากนั้นมันจะ syslogs เอาท์พุทแล้วคายมันออกมาเพื่อให้คุณสามารถส่งมันไปที่อื่น (ฉันส่งไปที่ multilog) คุณสามารถให้ตัวเลือก -q เพื่อไปยัง syslog

#!/usr/bin/perl

use Sys::Syslog;
use Getopt::Long;

$SERVER_NAME = `hostname`;
chomp $SERVER_NAME;
$FACILITY = 'local0';
$PRIORITY = 'info';

GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet);

#print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n";

#Sys::Syslog::setlogsock('unix');
openlog ($SERVER_NAME,'ndelay',$FACILITY);

if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");}

$| = 1;

while (<>) {
    if (!($quiet)) {print $_ unless $_ =~ /^\s+$/};
    chomp;
    syslog($PRIORITY,$_) if $_;
}

closelog;

$| = 0;

สคริปต์นั้นค่อนข้างมีประโยชน์ แต่ด้วย syslog บนไคลเอนต์และ syslog-ng บนเซิร์ฟเวอร์ (หรือแม้แต่ syslog-ng บนไคลเอนต์ด้วย) คุณสามารถรับฟังก์ชั่นนี้ได้ด้วยการควบคุมการกรองบันทึกได้มากขึ้น
thepocketwade

@thepocketwade: จริงมาก ฉันไม่เคยต้องการฟังก์ชั่นเพิ่มเติม
jedberg

2

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

ตอนนี้เพียงแค่ใช้มัน ...


2

ฉันใช้โฮสต์ syslog กลาง ระบบ edge แต่ละระบบจะส่ง * .debug ไปที่ loghost ส่วนกลาง โฮสต์ syslog กลางรัน syslog-ng และมีกฎในการแยกบันทึกเพื่อให้แต่ละเครื่องสร้างไฟล์ของตัวเองที่มีชื่อสำหรับวันนั้น นอกจากนี้ยังทิ้งทุกอย่างไว้ในไฟล์เดียวซึ่งฉันเรียกใช้ลูกหลานของ logcheck.sh

วันละหนึ่งครั้งฉันเรียกใช้ตัวรวบรวมบันทึกซึ่งบีบอัดบันทึกใด ๆ ที่เก่ากว่า 7 วันและลบสิ่งเก่ากว่า 28 วัน ระหว่างสองรายการนี้จะให้อายุการใช้งานที่คาดหวังของ 35 วันบนเซิร์ฟเวอร์ซึ่งหมายความว่าบันทึกทั้งหมดควรทำข้อมูลสำรองรายเดือนซึ่งสามารถกู้คืนได้นานถึงสองปี

มันเป็นพื้นที่เก็บข้อมูลที่เข้มข้น แต่ดูเหมือนจะเป็นวิธีที่ดีที่สุดในการรับประกันความครอบคลุม


ฉันมีระบบที่คล้ายกัน แต่เซิร์ฟเวอร์บันทึกของฉันมีโฟลเดอร์ที่กำหนดไว้ล่วงหน้า (mail, auth, catchall) ที่มีการกรองบันทึก จนถึงจุดหนึ่งฉันกำลังมองหาการใช้ความกล้าหาญ ฉันสามารถส่งต่อข้อมูลจากเซิร์ฟเวอร์บันทึกไปยังเซิร์ฟเวอร์ splunk ได้อย่างง่ายดาย
thepocketwade

1

สำหรับการเข้าสู่ระบบจากส่วนกลาง, ฉันอยากจะแนะนำLogZilla เราใช้มันมานานกว่าหนึ่งปีแล้วและชอบมันมาก UI นั้นง่ายมากในการเรียนรู้และใช้งานและการติดตั้งใช้เวลาประมาณหนึ่งชั่วโมง

แม้ว่าคุณจะไม่ทำเช่นนั้นคุณควรพยายามหลีกเลี่ยงการติดตามโดยใช้สคริปต์เพราะนั่นคือสิ่งที่คุณได้รับ ... การตรวจสอบ สิ่งที่คุณควรพยายามทำคือการจัดการ การแก้ไขปัญหาบน Top talkers ฯลฯ จะช่วยลดจำนวน "ไฟ" ที่เกิดจากการตรวจสอบฐานสคริปต์ได้อย่างมาก นี่เป็นบทความที่ดีมากเกี่ยวกับการจัดการ syslog:

http://www.cisco.com/en/US/technologies/collateral/tk869/tk769/white_paper_c11-557812.html


0

เราใช้เครื่องมือจาก LogLogic สำหรับการบันทึกองค์กรของเรา มันขึ้นอยู่กับ syslog ดังนั้นกล่อง * nix ทั้งหมดจึงไม่มีปัญหาในการใช้งาน มีแอพเล็ก ๆ ที่ต้องติดตั้งบนเซิร์ฟเวอร์ windows ฉันสามารถค้นหาสิ่งใดก็ได้ที่ฉันต้องการรวมถึงการสืบค้น REGEX และดูเหมือนว่าจะสามารถรับภาระได้ค่อนข้างมาก


1
เพียงแค่ระมัดระวังในการประเมินผลิตภัณฑ์ของพวกเขา ... ฉันได้รับประมาณ 10 สาย / อีเมลจากพวกเขาพวกเขาเป็นแบบถาวรมาก
Flamewires

ฉันคิดว่าสิ่งนี้สามารถพูดได้สำหรับผู้ขายเพียงเกี่ยวกับวันนี้และไม่มีผลต่อการทำงานของผลิตภัณฑ์จริง คุณไม่ต้องการที่จะรู้ว่าบ่อยแค่ไหน DELL, EMC และอื่น ๆ มาเคาะ / โทรไปรอบ ๆ ที่นี่ ....
Tatas

0

สำหรับเซิร์ฟเวอร์การบันทึกส่วนกลางคุณสามารถดูโครงการOctopussyของฉัน

มันทำงานมากที่จุดเริ่มต้น แต่หลังจากคุณสามารถทำสิ่งต่าง ๆ มากมายกับบันทึกเหล่านี้!


0

นี่คือบทเรียนที่ฉันเขียนซึ่งครอบคลุมทุกแง่มุมของการบันทึกและการวิเคราะห์จากส่วนกลาง

ลิงก์: http://crunchtools.com/centralizing-log-files/


ฉันกำลังมองหา log4sh สำหรับโครงการที่ฉันมีภายใน (ในที่สุดจะเปิดแหล่งที่มา แต่ทำงานในขณะนี้) เรียกว่า scriptlog เป็นหลักคุณเรียกใช้ก่อนที่คำสั่งที่คุณสนใจเกี่ยวกับผลลัพธ์ของและมันไม่สิ่งมหัศจรรย์เช่นเพิ่มคำเตือน สตริงหรือสตริงที่สำคัญก็ยังมีปลั๊กอิน nagios เพื่อตรวจสอบมัน จะโพสต์เมื่อฉันได้รับมัน
fatherlinux
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.