Cronjobs के लिए बेहतर प्रवेश? Syslog को क्रोन आउटपुट भेजें?


43

मैं cronjobs लॉग इन करने के लिए एक बेहतर तरीका ढूंढ रहा हूं। अधिकांश क्रोनॉगरर ईमेल या कंसोल को स्पैम कर देते हैं, अनदेखा कर दिए जाते हैं, या फिर दूसरा लॉगफ़ाइल बनाते हैं।

इस मामले में, मेरे पास एक Nagios NSCA स्क्रिप्ट है जो डेटा को एक केंद्रीय Nagios गंभीर रूप से भेजता है। यह send_nsca स्क्रिप्ट सफलता या विफलता का संकेत देते हुए STDOUT को एक सिंगल स्टेटस लाइन भी प्रिंट करती है।

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk

यह निम्नलिखित संदेश को @ localhost को रूट करने के लिए ईमेल करता है, जिसे बाद में मेरी टीम के sysadmins में भेज दिया जाता है। स्पैम।

अग्रेषित nsca_check_disk: 1 डेटा पैकेट (ओं) को सफलतापूर्वक होस्ट करने के लिए भेजा गया।

मैं एक लॉगिंग विधि की तलाश कर रहा हूँ जो:

  1. ईमेल या कंसोल पर संदेशों को स्पैम न करें
  2. अभी तक एक और krufty logfile का निर्माण न करें जिसके लिए महीनों या वर्षों बाद सफाई की आवश्यकता होती है।
  3. लॉग जानकारी को कहीं कैप्चर करें, इसलिए इसे बाद में यदि चाहें तो देखा जा सकता है।
  4. अधिकांश यूनिक्स पर काम करता है
  5. मौजूदा लॉग इंफ्रास्ट्रक्चर में फिट बैठता है।
  6. 'सुविधा' और 'प्राथमिकता' जैसे आम syslog सम्मेलनों का उपयोग करता है
  7. तृतीय पक्ष स्क्रिप्ट के साथ काम कर सकते हैं जो हमेशा आंतरिक रूप से लॉगिंग नहीं करते हैं।

जवाबों:


69

इस सवाल को लिखने की प्रक्रिया में, मैंने खुद को जवाब दिया। तो मैं अपने आप को " विचित्र-शैली " का जवाब दूंगा । यह डेनिस विलियमसन द्वारा प्रदान किए गए उत्तर पर फैलता है।

निम्नलिखित किसी भी क्रोन आउटपुट को भेजेगा /usr/bin/logger(जिसमें स्टेडर भी शामिल है, जिसे stdout का उपयोग करके परिवर्तित किया जाता है 2>&1), जो 'टैग' के साथ, syslog को भेजेगा nsca_check_disk। Syslog उसे वहीं से संभालता है। चूंकि इन प्रणालियों (CentOS और FreeBSD) में पहले से ही अंतर्निहित लॉग रोटेशन तंत्र हैं, इसलिए मुझे एक लॉग की तरह / var/log/mycustom.logडिस्क को भरने के बारे में चिंता करने की आवश्यकता नहीं है ।

*/5 * * * * root    /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk

/ var / log / संदेशों में अब एक अतिरिक्त संदेश है जो यह कहता है:

Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.

मुझे / usr / bin / logger पसंद है, क्योंकि यह मौजूदा syslog कॉन्फ़िगरेशन और बुनियादी ढांचे के साथ अच्छी तरह से काम करता है, और अधिकांश यूनिक्स डिस्ट्रोस के साथ शामिल है। अधिकांश * निक्स वितरण पहले से ही लॉग रोटेशन करते हैं और इसे अच्छी तरह से करते हैं।


1
2> और 1 कमांड क्या करता है? इसका क्या मतलब है? धन्यवाद।
ब्रेत्स्की


उबंटू में 00 00 * * * systemd-cat -t "tagname" /path/to/app.shsudo crontab -u root -e
सिस्टमड के

5

लकड़हारा के माध्यम से उत्पादन पाइप ।

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice

संपादित करें: आपका अपडेट जाने का सही तरीका है।


धन्यवाद! अपना प्रश्न पोस्ट करने के बाद, मैंने देखा कि अपाचे पाइप / usr / बिन / लकड़हारा को लॉग इन करते हैं। मुझे नहीं पता था कि हम लकड़हारे (1) को आउटपुट दे सकते हैं - यह मैनपेज में नहीं है!
स्टीफन लासिवस्की

2
"संदेश - लॉग करने के लिए संदेश लिखें; यदि निर्दिष्ट नहीं है, और -f ध्वज प्रदान नहीं किया गया है, तो मानक इनपुट लॉग किया गया है।"
डेनिस विलियमसन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.