जॉब आउटपुट न होने की स्थिति में केवल अधिसूचना कैसे भेजें


12

हम एक सेवा के लिए लॉगफ़ाइल्स को स्कैन करने के लिए रंडेक का उपयोग कर रहे हैं, और जो कुछ वहां पाया जाता है, उसके आधार पर कार्रवाई करें। मूल रूप से, प्रत्येक आइटम के लिए, जिसके लिए कोई रिकॉर्ड मौजूद नहीं है, एक गिट रिपॉजिटरी को आरंभीकृत किया जाता है और कुछ बाकी समापन बिंदुओं को बुलाया जाता है, लेकिन यह बात नहीं है।

हम काम को निर्धारित करने के लिए सेट कर रहे हैं, हर दो घंटे में, और असफलता पर अधिसूचना भेजने के लिए, और इसके अतिरिक्त केवल सफलता पर अधिसूचना भेजने के लिए जब कम से कम एक कार्रवाई की गई है (यानी कार्य में शेल स्क्रिप्ट दर्ज की गई है। कम से कम एक बार लूप)। स्क्रिप्ट इसलिए लिखी जाती है कि यह केवल स्टडआउट पर आउटपुट का उत्सर्जन करता है जब कार्रवाई की जाने वाली वस्तुओं को पाया जाता है।

क्या इस आवश्यकता के साथ सूचना को ट्रिगर करने के लिए रंडेक में एक तरीका है? या स्क्रैच से प्लगइन लिखने के बिना इसे स्क्रिप्ट करने का एक तरीका?

विफलता नोटिफ़िकेशन ट्रिगर को बंद करने के लिए एक संभव समाधान होगा, और बिना किसी आइटम के मामले में स्क्रिप्ट को गैर-शून्य वापस करना, लेकिन मैं ऐसा करने में सहज नहीं हूं।


क्या आउटपुट वास्तव में खाली है, या इसमें कुछ ब्लेंक लाइनें या एक गाड़ी वापसी हो सकती है?
तेंसिबाई

हाशिये से खाली है; मेरी स्क्रिप्ट के साथ एक सिंगल शेल स्टेप है, सुनिश्चित नहीं है कि मैं रंडेक इसे आउटपुट के साथ
सजाऊंगा

क्या स्क्रिप्ट से सूचना भेजना स्वयं एक विकल्प होगा? और इसलिए रंडेक केवल असफलता पर सूचित करते हैं और स्क्रिप्ट अपना "मैं कुछ किया" अधिसूचना करता है?
तैंसीबाई

यह वास्तव में एक अच्छा विचार है!
ᴳᵁᴵᴰᴼ

जवाबों:


7

जिस तरह से मैं सोच सकता था:

अधिसूचना प्लगइन उदाहरण पृष्ठ से अपना स्वयं का प्लगइन लिखना, उदाहरण के लिए मेल अधिसूचना कोड को अपनाना एक तरीका हो सकता है।

Rundeck में सफलता की सूचनाओं को अक्षम करना, और अपनी स्क्रिप्ट में ही सफलता अधिसूचना भाग को संभालना। इस तरह यह चेतावनी देने के लिए आपकी स्क्रिप्ट जिम्मेदारी है कि यह सामान्य स्थिति में कुछ किया है और यह अभी भी स्क्रिप्ट को विफल करने की चेतावनी देने की जिम्मेदारी है।


1
धन्यवाद; जब आप एक सुविधा है जो आपको सामने है उपकरण के द्वारा ऊपर लपेट मिलता है, यह इतना आम कभी कभी भूल जाते हैं आप इसके लिए सीधे जा सकते हैं ....
ᴳᵁᴵᴰᴼ

1

मैं इस मुद्दे को थोड़ा डोडी तरीके से कमांड को बदलकर प्राप्त करने में सक्षम था:

/bin/bash -c "your-command-here | { ! grep '^'; }"

यह आउटपुट को इसके माध्यम से पाइप करता है grepऔर विफल रहता है यदि कोई आउटपुट है, लेकिन फिर grepभी इसे पास करता है तो आपको अभी भी विफलता पर रंडेक में आउटपुट देखने को मिलता है।

एक दोष यह है कि मेरा मानना ​​है कि आप किसी भी खाली लाइनों को खो देते हैं, लेकिन हम अपने लिए कोई बड़ा सौदा नहीं करते हैं, और जब तक हम एप्लिकेशन को एक उचित निकास कोड के साथ समाप्त करने के लिए अपडेट नहीं कर सकते, तब तक यह हमारे ऊपर टिक जाएगा।

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