आपने अपने सर्वर पर लॉग प्रबंधन कैसे लागू किया?


13

मैं यह पता लगाने की कोशिश कर रहा हूं कि अन्य लोग अपने लॉग मैनेजमेंट सिस्टम को कैसे लागू करते हैं।

मेरे पास 20-30 लिनक्स सर्वर और कुछ विंडोज बॉक्स हैं (उनमें से अधिकांश वर्चुअलाइज्ड हैं)। हम अपनी अधिकांश स्वचालित नौकरियों को करने के लिए बहुत सारे पर्ल और बैश स्क्रिप्ट का उपयोग करते हैं और मैं उनके लॉगिंग को मानकीकृत करने की कोशिश कर रहा हूं।

मैं एक केंद्रीकृत लॉगिंग सर्वर पर सभी लॉग प्राप्त करने के लिए स्क्रिप्ट और syslog- एनजी लॉगिंग के लिए log4perl और log4sh को देख रहा हूं। मैंने स्प्लंक पर भी पढ़ा है, भले ही लगता है कि एंटरप्राइज़ संस्करण बहुत महंगा है और मैं सभी सर्वरों के साथ मुफ्त लाइसेंस सीमा से अधिक हो सकता है।

मैंने स्वैच और लॉगचेक जैसे अन्य उपकरण देखे हैं, लेकिन मुझे पूरा यकीन नहीं है कि ये सभी टुकड़े एक साथ कैसे फिट होंगे ... किसी भी सिफारिश की बहुत सराहना की जाएगी!


जवाबों:


8

मेरे पास लगभग 30 सर्वर हैं, और मैं बस एक लॉगिंग सर्वर पर सभी लॉग भेजने के लिए सीधे ऊपर syslog का उपयोग करता हूं। बैकअप के लिए, सभी मशीनों को कुछ दिनों के लिए स्थानीय रूप से अपने लॉग्स को स्टोर करने के लिए कॉन्फ़िगर किया गया है, पुराने लॉग के रोटेशन और विलोपन का ख्याल रखने के लिए लॉगरोटेट का उपयोग किया जाता है।

मेरे प्रत्येक एप्लिकेशन सर्वर ने अपने लॉग्स को syslog पर भेजने के लिए एक छोटी सी पर्ल स्क्रिप्ट चलाई है, जो तब लॉगहॉस्ट (नीचे दी गई स्क्रिप्ट) को आगे बढ़ाता है।

फिर लॉगहॉस्ट पर हमारे पास कुछ कस्टम स्क्रिप्ट हैं जो लॉगचेक के समान हैं जो मूल रूप से कुछ भी संदिग्ध के लिए आने वाले लॉग को देखते हैं।

हमारे पास सभी होस्ट्स के ईमेल भी हैं जो एक ही जगह पर जा रहे हैं, ताकि अगर कोई भी प्रोग्राम इस तरह से शिकायत करे, तो हमें सारे मैसेज मिल जाएं। यह सैद्धांतिक रूप से एक एकल मेलबॉक्स पर जा सकता है जो एक कार्यक्रम पर कार्य कर सकता है और विश्लेषण कर सकता है।

यहाँ मेरी लॉगिंग पर्ल स्क्रिप्ट है। यह कार्यक्रम के आउटपुट को इसमें पाइप करके काम करता है, और फिर यह आउटपुट को सेट करता है और इसे वापस थूकता है ताकि आप इसे कहीं और भेज सकें (मैं मल्टीगॉग को भेज देता हूं)। आप इसे -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: बहुत सही। मुझे अभी अतिरिक्त कार्यक्षमता की आवश्यकता नहीं थी।
जेडबर्ग

2

हालांकि मैंने इसे अभी तक लागू नहीं किया है, मैं अपने सभी लॉग-जनरेटिंग मशीनों को rsyslog में स्थानांतरित करने की योजना बना रहा हूं, और एक गढ़-प्रकार के सर्वर को लागू कर रहा हूं जो कि syslogs के कलेक्टर के रूप में कार्य करेगा। वहाँ से, मुझे लगता है कि स्प्लंक का मुफ्त संस्करण वह सब कुछ कर सकता है जिसकी मुझे जानकारी खींचने की आवश्यकता है।

अब बस इसे लागू करने के लिए ...


2

मैं एक केंद्रीय syslog होस्ट का उपयोग करता हूं। प्रत्येक एज सिस्टम केंद्रीय लॉगहोस्ट को * .debug भेजता है। केंद्रीय syslog होस्ट syslog-ng चलाता है, और लॉग को विभाजित करने के लिए नियम हैं ताकि प्रत्येक मशीन उस दिन के लिए नाम से अपनी खुद की फाइलें उत्पन्न करे। यह एक फ़ाइल में सब कुछ भी डंप करता है, जिसके खिलाफ मैं logcheck.sh का वंशज चलाता हूं।

दिन में एक बार मैं एक लॉग बैक्टीरिया चलाता हूं, जो 7 दिनों से अधिक पुराने किसी भी लॉग को ज़िप करता है, और 28 दिनों से अधिक पुरानी किसी भी चीज को हटा देता है। दोनों के बीच, यह सर्वर पर 35 दिनों का एक अपेक्षित जीवन देता है, जिसका अर्थ है कि सभी लॉग को मासिक बैकअप में करना चाहिए, जहां उन्हें दो साल तक पुनर्प्राप्त किया जा सकता है।

यह भंडारण-गहन है, लेकिन कवरेज को आश्वस्त करने का सबसे अच्छा तरीका है।


मुझे एक समान प्रणाली मिली है, लेकिन मेरे लॉग सर्वर में पूर्वनिर्धारित फ़ोल्डर (मेल, ऑक्टा, कैटचेल) हैं जो लॉग को फ़िल्टर किए जाते हैं। एक बिंदु पर मैं छींटे का उपयोग कर रहा था। मैं लॉग सर्वर से स्पंक सर्वर में आसानी से डेटा अग्रेषित कर सकता था।
thepocketwade

1

केंद्रीकृत लॉगिंग के लिए, मैं अत्यधिक LogZilla की सिफारिश करूंगा । हम इसे एक साल से अधिक समय से उपयोग कर रहे हैं और इसे पूरी तरह से पसंद करते हैं। UI सीखने और उपयोग करने में बेहद आसान है और स्थापना ने मुझे लगभग एक घंटे का समय दिया।

यहां तक ​​कि अगर आप नहीं करते हैं, तो आपको वास्तव में स्क्रिप्ट-आधारित निगरानी से दूर होने की कोशिश करनी चाहिए, क्योंकि वास्तव में आपको यही मिलता है ... निगरानी। आपको जो हासिल करने की कोशिश करनी चाहिए वह प्रबंधन है। शीर्ष वार्ताकारों आदि की समस्याओं की मरम्मत, स्क्रिप्ट-बेस निगरानी द्वारा ट्रिगर "आग" की मात्रा को बहुत कम कर देगा। यहाँ syslog प्रबंधन पर एक बहुत अच्छा लेख है:

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


0

हम अपने एंटरप्राइज़ लॉगिंग के लिए LogLogic से एक उपकरण का उपयोग करते हैं। यह syslog पर आधारित है, इसलिए सभी * निक्स बॉक्सों को इसके इस्तेमाल से कोई समस्या नहीं है; एक छोटा सा ऐप है जिसे विंडोज़ सर्वर पर इंस्टॉल करना होगा। मैं कुछ भी खोज कर सकता हूं, जिसमें REGEX क्वेश्चन शामिल हैं, और यह काफी हद तक लोड को संभालने में सक्षम प्रतीत होता है (हमारा एक्टिव डायरेक्ट्री सेटअप अकेले ट्रैफिक का दिमाग बनाने वाली राशि उत्पन्न करता है)।


1
बस उनके उत्पादों का मूल्यांकन करने में सावधानी बरतें ... मुझे उनसे लगभग 10 कॉल / ईमेल मिले, वे बहुत स्थायी हैं।
फलावेज़

मुझे लगता है कि यह इन दिनों किसी भी विक्रेता के बारे में कहा जा सकता है, और वास्तविक उत्पाद की कार्यक्षमता पर इसका कोई असर नहीं है। आप यह नहीं जानना चाहते कि DELL, EMC, आदि कितनी बार दस्तक दे रहे हैं / इधर उधर बुला रहे हैं ....
Tatas

0

केंद्रीकृत लॉगिंग सर्वर के लिए, आप मेरे ऑक्टोपसी प्रोजेक्ट पर एक नज़र डाल सकते हैं ।

यह भीख मांगने का काम बहुत है, लेकिन आप इन लॉग के साथ बहुत कुछ कर सकते हैं!


0

यहाँ एक ट्यूटोरियल है जो मैंने लिखा है कि केंद्रीकृत लॉगिंग और विश्लेषण के सभी पहलुओं को शामिल किया गया है।

लिंक: http://crunchtools.com/centralizing-log-files/


मैं एक प्रोजेक्ट के लिए log4sh को भी देख रहा हूं जो मेरे पास आंतरिक रूप से है (अंततः खट्टा होने के लिए खुला है, लेकिन अब काम कर रहा है), जिसे स्क्रिप्टोग्राफ कहा जाता है, अनिवार्य रूप से आप इसे कमांड से पहले चलाते हैं जिसे आप आउटपुट के बारे में परवाह करते हैं और यह कुछ जादुई सामान की तरह जोड़ता है स्ट्रिंग या CRITICAL स्ट्रिंग, इसकी निगरानी के लिए इसमें एक nagios प्लगइन भी है। पोस्ट करूँगा जब मैं इसे बाहर
निकालूंगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.