क्रोन कार्यों की निगरानी करने की तकनीक?


22

क्या क्लस्टर पर क्रोन कार्यों की निगरानी के लिए अच्छी तकनीकें हैं?

हम दैनिक अंतराल पर कार्यों को शुरू करने के लिए क्रोन का उपयोग करना शुरू कर रहे हैं। जानकारी की जाँच के लिए कुछ विचार:

  1. एक डीबी की तरह कुछ "नेटवर्क अवगत" जगह में जानकारी लॉग करने वाले विशेष एप्लिकेशन को जोड़ें
  2. एक लॉगफ़ाइल सिस्टम बनाएं जो क्रोन लॉग को समय-समय पर प्रसंस्करण / क्वेरी (अन्य लॉग फ़ाइलों के साथ) के लिए केंद्रीय बिंदु पर स्थानांतरित करता है।

मुझे आश्चर्य है कि अगर लोगों को क्रोन बनाम अन्य चीजों के लिए अलग से काम करने में सफलता मिली है, या, यदि कार्यों को पूरी तरह से एक अलग दृष्टिकोण में एकीकृत किया गया था। मैं # 2 की ओर झुक रहा हूं, लेकिन मैं जानना चाहता हूं कि अधिक अनुभवी लोक क्या प्रयास कर सकते हैं।


क्या आपकी चिंता यह है कि क्रोनोजर नहीं चल रहा है? या आप नौकरी चलाने के लिए 'स्थिति' की निगरानी करने के लिए कह रहे हैं?
एरिक्सलॉ

1
अधिकतर, कि वे असफल नहीं हुए। लेकिन कुछ नौकरियों में लंबा समय लगता है, और हम "उफ़, यह बहुत लंबा समय ले रहे हैं" जैसी जानकारी हथियाना चाहते हैं।
ट्रिस्टन जुरिसक

जवाबों:


16

अन्य उत्तरों के अलावा:

  • जब यह वास्तविक नौकरी से रिटर्न वैल्यू के साथ खत्म हो जाए तो जॉब को किसी फाइल पर टाइमस्टैम्प लिखने दें
  • मूल कॉलर पर वापस लौटें मान का प्रचार करें

हम सबसे पहले इसका उपयोग करने के लिए Nagios ( Icinga ) को जांचने में आसान बनाते हैं , उदाहरण के लिए यदि अंतिम लिखित टाइमस्टैम्प n घंटे से अधिक पुराना है (इसके अलावा आपको जो भी तर्क चाहिए) - हमें पता है कि कुछ गलत हुआ था।


जबकि मुझे हर किसी के जवाब पसंद हैं - मैंने बहुत कुछ सीखा - मैं पूरी तरह से हमारे नागियो की निगरानी के बारे में भूल गया। यह उन लंबे चलने वाले कार्यों के लिए बहुत अच्छा है, जो मैं वास्तव में चिंतित हूं। धन्यवाद।
ट्रिस्टन जुरिसक

16

मेरा आम तरीका इस प्रकार है:

  • जब आपके cron'ed अनुप्रयोग सफलतापूर्वक पूरा हो जाता है तो किसी भी स्टडआउट का उत्पादन न करें।
  • किसी भी आउटपुट को / dev / null में पाइप न करें।
  • जब कुछ गलत हो जाता है तो सार्थक stderr आउटपुट का उत्पादन करें।
  • उस त्रुटि आउटपुट को आवश्यक टीम को भेजने के लिए क्रेस्टैब में $ MAILTO पता सेट करें।

और अगर किसी को वास्तव /dev/nullमें कम से कम || echo "service $service is FUBAR"कमांड लाइन में जोड़ने के लिए आउटपुट को पाइप करना है ...
हबर्ट करियो

4

उपरोक्त के अतिरिक्त:

  • जब कुछ गलत हो जाए तो लिखने वाले के साथ "लकड़हारा" को कॉल करें। केंद्रीय होस्ट, उर्फ ​​"लॉगहॉस्ट" के लिए अतिरिक्त रूप से syslog कॉन्फ़िगर करें। (लकड़हारा डिफ़ॉल्ट रूप से "user.notice" सुविधा का उपयोग करेगा, लेकिन आप इसे बदल सकते हैं।)

1
मुझे यह विचार पसंद है .... हालांकि crond पहले से ही syslog में लॉग करता है (शायद config param के माध्यम से) इसलिए लकड़हारा का उपयोग इस दृष्टिकोण के लिए कड़ाई से आवश्यक नहीं है।
एरिक्सलॉ

4

ऐसी कुछ तकनीकें हैं जिनका उपयोग आप क्रोनोजर की निगरानी के लिए कर सकते हैं।

क्रोनजोब विफलताओं के अलर्ट प्राप्त करने के लिए:

  • क्रोन के मानक MAILTO = फ़ंक्शन का उपयोग करें। यदि एक क्रोनजॉब STDERR पर आउटपुट का उत्पादन करता है, तो यह आपके द्वारा चुने गए पते पर भेज दिया जाएगा।
  • क्रोन मेल को ट्रैक करने और उससे निपटने के लिए, आप उन्हें टिकट सिस्टम में निर्देशित कर सकते हैं।

प्रणाली आप का प्रस्ताव एक "नेटवर्क के बारे में पता" जगह की तरह लगता है में जानकारी लॉग इन करने के लिए syslog । syslog लॉग बनाने के लिए एक सरल विधि प्रदान करता है, यह आम तौर पर / var / log / संदेश जैसी फ़ाइलों का प्रबंधन करता है। आप मूल कस्टमाइज़ेशन बना सकते हैं, जैसे कि चुनने के लिए कि कौन सी फाइलें लॉग संदेश प्राप्त करती हैं।

Syslog को नेटवर्क जागरूक मोड में शुरू किया जा सकता है। उदाहरण के लिए, आप इसे कॉन्फ़िगर कर सकते हैं ताकि एक दास एक मास्टर में प्रवेश कर सके:

[root@slave ~]#  echo "hello world from slave" | logger -p local1.info

[root@master ~]# tail /var/log/myapp
Jun 29 13:07:01 192.168.1.2 logger: hello world from slave

Red Hat आधारित वितरण के लिए, एक उदाहरण विन्यास इस प्रकार है:

[root@slave ~]# cat /etc/syslog.conf | grep local1
local1.*                                                @192.168.1.3

[root@master ~]# cat /etc/sysconfig/syslog | grep SYSLOGD_OPTIONS
SYSLOGD_OPTIONS="-m 0 -r"

[root@master ~]# cat /etc/syslog.conf | grep local
local1.* /var/log/myapp

(पहली कॉन्फिगर लाइन लोकल 1 को रीडायरेक्ट करती है। * लॉग ऑन नोटिस @ 192.168.1.3 ("मास्टर")। दूसरा SYSLOGD_OPIONS लाइन का -r फ्लैग नेटवर्क सपोर्ट पर जाता है। आखिरकार, तीसरी कॉन्फिगरेशन लाइन लोकल 1 को निर्देशित करती है। * "मास्टर" पर प्राप्त संदेश। एक फाइल में)।

केवल लॉगिंग त्रुटियों / जानकारी के लिए syslog दृष्टिकोण बेहतर है। लॉग फ़ाइलों में ई-मेल की तुलना में कम दृश्यता होती है, इसलिए आप शायद लॉग को तब तक नहीं देखेंगे जब तक कि कुछ गलत न हो जाए।

यदि आप syslog शैली मार्ग पर जाना चुनते हैं, तो भी syslog-ng पर विचार करें: http://freshmeat.net/projects/syslog-ng/

बेशक, आप दोनों का उपयोग करके दोनों तकनीकों का सबसे अच्छा प्राप्त कर सकते हैं। उदाहरण के लिए, विफलताओं और सफलताओं दोनों को syslog'ing, और विफलताओं के लिए सिर्फ मेलिंग।


उत्तर के लिए धन्यवाद -> मैं एक प्रोग्रामर हूं, जो मुझे थोड़ा सा सिसडमिन नौसिखिया बनाता है। मैं भी syslog की नेटवर्क क्षमताओं के बारे में पता नहीं था।
ट्रिस्टन जुरिसक

3

मैंने StackOverflow ( /programming/21025495/system-for-monitoring-cron-jobs-and-automated-tasks ) पर एक प्रश्न का एक समान उत्तर पोस्ट किया

Cronitor ( https://cronitor.io ) एक उपकरण था जिसे मैंने इस उद्देश्य के लिए बनाया था। यह मूल रूप से एक ट्रैकिंग बीकन होने का दावा करता है जो पिंग के रूप में http अनुरोधों का उपयोग करता है।

हालांकि, ओपी ने अपनी टिप्पणी में उल्लेख किया है कि एक नौकरी की जरूरत है जब एक नौकरी को चलाने के लिए बहुत लंबा समय लगता है।

मुझे इसकी समान आवश्यकता थी, और पाया कि इसी प्रकार के उपकरण आसानी से इस प्रकार की निगरानी का समर्थन नहीं करते थे। Cronitor आपको एक शुरुआती घटना और एक अंतिम घटना को ट्रिगर करने की अनुमति देकर इसे हल करता है ताकि अवधि पर नज़र रखी जा सके।

अवधि की ट्रैकिंग मेरे लिए एक होनी चाहिए क्योंकि मेरे पास एक क्रोनजॉब था जो हर घंटे निर्धारित किया गया था, लेकिन समय के साथ चलने में एक घंटे से अधिक समय लगने लगा। उम्मीद है यह आपको उपयोगी होगा!


2

यह लिखने के समय अभी भी यह काफी भारी विकास के अधीन है, लेकिन मैं https://github.com/jamesrwhite/minicron पर एक नज़र डालने के लिए प्रोत्साहित करूँगा । यह आपके द्वारा वर्णित समस्याओं को हल करने के लिए विकसित किया गया था। आपके द्वारा चलाए जाने वाले कमांड में मामूली संशोधन के साथ, यह नौकरियों के आउटपुट और निकास की स्थिति को रिकॉर्ड कर सकता है और उस डेटा को रीयलटाइम में एक केंद्रीय सर्वर पर वापस भेजता है और जब नौकरी विफल हो जाती है तो ईमेल, एसएमएस और पेजरूट के माध्यम से अलर्ट भेज सकता है (बाहर निकलने की स्थिति> 0) या जब यह करना चाहिए निष्पादित नहीं करता है।

अस्वीकरण: मैं इस पर काम कर रहा हूँ।


0

यह AlertGrid के लिए एक क्लासिक उपयोग के मामले जैसा दिखता है ।

इसे स्थापना की आवश्यकता नहीं है, इस उपकरण से लाभ लेने के लिए आपको बस इतना करना है:

  1. जब भी आपका क्रॉन जॉब समाप्त हो जाए तो अलर्ट पर सिग्नल भेज दें, यह काम है (यह एक्सट्रीम सिंपल एपीआई द्वारा किया जा सकता है, सिग्नल सिर्फ एक HTTP रिक्वेस्ट है)। आप कुछ पैरामीटर भी भेज सकते हैं जैसे execution_time!
  2. फोलोइंग की तरह अधिसूचना नियम स्थापित करें:

अगर my_job ने X मिनटों (आपके मामले में घंटों) में कोई जवाब नहीं दिया -> व्यवस्थापक को एसएमएस भेजें

या

यदि निष्पादन_ समय> 60 सेकंड -> इच्छुक लोगों को ईमेल भेजें

वास्तव में यह सब है। आप अच्छे दृश्य संपादक का उपयोग करके अधिसूचना नियमों का प्रबंधन कर सकते हैं। यदि कुछ बदला है तो आपको स्रोत कोड या कुछ कॉन्फ़िगरेशन फ़ाइलों को संशोधित करने की आवश्यकता नहीं है। यह केंद्रीकृत समाधान है, इसलिए आप एक ही स्थान से नियमों के प्रबंधन से लाभ उठा सकते हैं।

आशा है कि यह किसी की मदद करता है। यदि आप रुचि रखते हैं तो एक निशुल्क खाता उपलब्ध करा सकते हैं ताकि आप AlertGrid का परीक्षण और उपयोग कर सकें। मैं एलर्टग्रिड टीम के सदस्यों में से एक हूं - यह पूछने के लिए स्वतंत्र महसूस करें कि क्या आपके कुछ प्रश्न हैं।


0

आपकी क्रॉन जॉब्स पहले से ही syslog के माध्यम से लॉग इन हैं। वह डेटा किसी अन्य मानक सेवा, syslogd का उपयोग करके एक केंद्रीय सर्वर को भेजा जा सकता है।

http://www.debuntu.org/how-to-remote-syslog-log-on-debian-and-ubuntu/ पर विवरण है कि इसे कैसे सेट किया जाए।


0

मैं http://cronrat.com सिर्फ append && कर्ल का उपयोग करता हूं "... आपका क्रोनट url" आपकी क्रोन नौकरियों के लिए। सबसे अच्छी विशेषता मुझे यह है कि प्रारंभिक खाता बनाने के बाद आपको कुछ भी सेट करने की आवश्यकता नहीं है। प्रत्येक अलर्ट आपके द्वारा उपयोग किए जाने वाले मिनट तक है और चल रहा है। इसलिए मैं अपनी नौकरी शुरू करने के लिए किसी भी स्वचालित उपकरण का उपयोग कर सकता हूं जो अभी तक मौजूद नहीं है, कुछ सेवाओं के विपरीत जहां मुझे पहले नौकरी स्थापित करने की आवश्यकता है।


मैं क्रोनट्रैट के बारे में पढ़ रहा था - सरल और मुक्त। Buuuuut मैं साइन अप करने के तरीके का पता नहीं लगा सकता। क्या यह सेवा मृत है?
रिनोगो

0

मैंने इन सटीक जरूरतों के बाद पावर क्रोन बनाया है । मुझे अपनी क्रोन नौकरियों पर केंद्रीकृत दृष्टिकोण और विभिन्न क्लस्टर सदस्यों की नौकरियों के बीच निर्भरता की धारणा की आवश्यकता थी।

मुझे लॉग में जो कुछ भी मिल सकता है, उससे अधिक जानकारी की आवश्यकता है, और जॉब प्रोफाइलिंग को जोड़ा।


0

हमने इसके लिए PushMon, http://www.pushmon.com का निर्माण किया । कहते हैं कि आपकी दैनिक नौकरी 3 बजे चलती है और सामान्य रूप से 4 बजे समाप्त होती है। आप "हर दिन सुबह 4:00 बजे" का एक पुशमोन शेड्यूल सेट कर सकते हैं। या थोड़ा और अधिक उन्नत शेड्यूल जैसे "1 घंटे के भीतर हर दिन 4:00 बजे"। आपको हर बार जब आपकी नौकरी चलती है, तो पुशमोन URL को "पिंग" करना होगा, और यह आपको लापता पिंग्स से सावधान करेगा। यदि आप जानते हैं कि कोई त्रुटि हो गई है, जैसे कि जब आप एक अपवाद को पकड़ते हैं, जिसे आप संभाल नहीं सकते हैं, तो आप ऑन-डिमांड अलर्ट सुविधा का उपयोग कर सकते हैं।


0

Healthchecks ( https://github.com/healthchecks/healthchecks/ ) एक सेवा और डैशबोर्ड है जिसे क्रोन नौकरियों की निगरानी के लिए बिल्कुल बनाया गया है। यह उत्पादन में उपयोग किया जा रहा है, बनाए रखा गया है और कोड योगदान को स्वीकार करता है।

यह क्रोनिटर, डेड मैन के स्निच और दोस्तों के समान काम करता है: आप अपनी क्रोन नौकरी सेट करने के लिए एक विशेष, अद्वितीय URL के लिए HTTP / HTTPS अनुरोध करते हैं। Healthchecks इन पिंग्स को प्राप्त करता है और लॉग करता है। यह लगातार जाँच करता है कि पिंग अपेक्षित अंतराल पर आता है या नहीं। जब यह किसी समस्या का पता लगाता है, तो यह आपको एक सूचना भेजता है। समर्थित अधिसूचना विधियाँ ईमेल, वेबहूक, स्लैक, टेलीग्राम, डिसॉर्डर, एसएमएस, पुशओवर, पुसबुलेट, पेजरडुट, पेजेट्री, हिपचैट, विक्टरऑप्स, ऑप्सजीनी हैं।

आप यह सब सेट कर सकते हैं और अपने आप को होस्ट कर सकते हैं, लेकिन, किसी भी वेब सेवा के रूप में, यह डोमेन नाम, प्रमाणपत्र सेट करने के लिए कुछ प्रयास करता है, HTTP रिवर्स प्रॉक्सी कॉन्फ़िगर करता है, डेटाबेस बैकअप सेट करता है आदि प्राप्त करने का एक उचित आसान तरीका है। चल रहा है इस Heroku- अनुकूलित संस्करण का उपयोग करने के लिए: https://github.com/iphoting/healthchecks । मैं ऐसे लोगों को जानता हूं जो इस परियोजना को स्वयं चलाते हैं और इसका उपयोग सैकड़ों सेवाओं की निगरानी के लिए करते हैं।

डिस्क्लेमर: मैं लेखक हूं, और मैं हेल्थहैक्स को https://healthchecks.io पर होस्ट की गई सेवा के रूप में चलाता हूं

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