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


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

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

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

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

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

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

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

37
2018-04-30 16:53


मूल




जवाब:


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

निम्नलिखित किसी भी क्रोन आउटपुट को भेज देंगे /usr/bin/logger (stderr सहित, जो stdout का उपयोग कर परिवर्तित किया जाता है 2>&1), जो 'टैग' के साथ syslog को भेज देगा nsca_check_disk। Syslog इसे वहां से संभालती है। चूंकि इन सिस्टमों (सेंटोस और फ्रीबीएसडी) में पहले से ही अंतर्निहित लॉग रोटेशन तंत्र हैं, इसलिए मुझे लॉग के बारे में चिंता करने की आवश्यकता नहीं है जैसे /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 पसंद है, क्योंकि यह मौजूदा सिसलॉग कॉन्फ़िगरेशन और आधारभूत संरचना के साथ अच्छी तरह से काम करता है, और अधिकांश यूनिक्स डिस्ट्रोज़ के साथ शामिल है। अधिकांश * निक्स वितरण पहले ही लॉग रोटेशन करते हैं और इसे अच्छी तरह से करते हैं।


59
2017-10-04 17:48



2> और 1 कमांड क्या करता है? इसका क्या मतलब है? धन्यवाद। - Brettski
@ ब्रेट्सकी देखें superuser.com/questions/71428/what-does-21-do-in-command-line - Stefan Lasiewski
उबंटू में व्यवस्थित के साथ 00 00 * * * systemd-cat -t "tagname" /path/to/app.sh बाद sudo crontab -u root -e - dashesy


आउटपुट के माध्यम से पाइप लकड़हारा

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

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


5
2018-04-30 16:58



धन्यवाद! मेरे प्रश्न पोस्ट करने के बाद, मैंने देखा कि अपाचे पाइप लॉग आउट आउटपुट / usr / bin / logger पर। मुझे एहसास नहीं हुआ कि हम लॉगर आउटपुट लॉगर (1) कर सकते हैं - यह मैनपेज में नहीं है! - Stefan Lasiewski
"संदेश - लॉग करने के लिए संदेश लिखें; यदि निर्दिष्ट नहीं है, और -f ध्वज प्रदान नहीं किया गया है, मानक इनपुट लॉग है।" - Dennis Williamson


आप भी चला सकते हैं crond विकल्प के साथ -s (या -S Busybox में) ताकि आउटपुट भेजा जा सके syslog


1
2018-03-14 04:18