विषयसूची:

Linux सर्वर के लिए सर्विस मॉनिटर स्क्रिप्ट: 4 चरण
Linux सर्वर के लिए सर्विस मॉनिटर स्क्रिप्ट: 4 चरण

वीडियो: Linux सर्वर के लिए सर्विस मॉनिटर स्क्रिप्ट: 4 चरण

वीडियो: Linux सर्वर के लिए सर्विस मॉनिटर स्क्रिप्ट: 4 चरण
वीडियो: Create a Linux Service Monitoring Script - Learn Bash scripting tutorial 2024, नवंबर
Anonim
Linux सर्वर के लिए सर्विस मॉनिटर स्क्रिप्ट
Linux सर्वर के लिए सर्विस मॉनिटर स्क्रिप्ट

एक स्थिर, हमेशा चलने वाला सिस्टम होना, भले ही आप लिनक्स का उपयोग कर रहे हों, एक मुश्किल काम हो सकता है।

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

चरण 1: Systemd द्वारा प्रदान की गई विधियों का उपयोग करना

जैसा कि आप पहले से ही जानते होंगे, अधिकांश आधुनिक लिनक्स ऑपरेशन सिस्टम सिस्टमड का उपयोग कर रहे हैं।

यदि आप सिस्टमड से परिचित नहीं हैं, तो यह विकिपीडिया के अनुसार है:

"… यूनिक्स सिस्टम V या बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन (BSD) init सिस्टम के बजाय, उपयोगकर्ता स्थान को बूटस्ट्रैप करने और बाद में सभी प्रक्रियाओं को प्रबंधित करने के लिए Linux वितरण में उपयोग किया जाने वाला एक init सिस्टम। …"

बहुत सारे लोग अभी भी बहस कर रहे हैं कि इस अधिक जटिल प्रक्रिया प्रबंधन प्रणाली के साथ अच्छे पुराने init सिस्टम को बदलना क्यों आवश्यक था, लेकिन निम्नलिखित लिंक पर एक अच्छी व्याख्या मिल सकती है:

www.tecmint.com/systemd-replaces-init-in-l…

सबसे महत्वपूर्ण सुधार यह होगा कि यह init के अनुक्रमिक दृष्टिकोण के बजाय बूट पर समवर्ती और समानांतर प्रसंस्करण के कारण, init की तुलना में तेजी से सिस्टम को लाने में सक्षम है।

सिस्टमड की गहराई में जाने के बिना, सिस्टमड में एक प्रक्रिया जोड़ने के लिए, आपको एक सर्विस फाइल बनानी होगी। ऐसी फ़ाइल का सिंटैक्स बहुत सरल से लेकर पूरी तरह से जटिल तक हो सकता है, और हम विवरण में नहीं जाएंगे। एक बुनियादी.service फ़ाइल रखने के लिए, निम्नलिखित प्रविष्टियों का उपयोग करना पर्याप्त है:

[इकाई]विवरण=आवेदन का विवरणदस्तावेज=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/एप्लिकेशन स्टॉप रीस्टार्ट = हमेशा [इंस्टॉल करें] वांटेडबाय = मल्टी-यूजर.टारगेट

इन्हें application.service फ़ाइल में /lib/systemd/system फ़ोल्डर में रखें।

इनमें से प्रत्येक विकल्प क्या करता है, निम्नलिखित लिंक में समझाया गया है:

access.redhat.com/documentation/en-US/Red_…

अपना आवेदन शुरू करने के लिए, निम्न आदेश जारी करें:

sudo systemctl start application.service

नोट:.service एक्सटेंशन को छोड़ा जा सकता है।

एप्लिकेशन को रोकने के लिए:

sudo systemctl स्टॉप application.service

यदि कॉन्फ़िगरेशन फ़ाइल बदल दी गई है और आप सेटिंग्स को पुनः लोड करना चाहते हैं:

sudo systemctl reload application.service

एप्लिकेशन को पुनरारंभ करने के लिए:

sudo systemctl पुनरारंभ application.service

बूट पर स्वचालित प्रारंभ को सक्षम करने के लिए:

sudo systemctl application.service सक्षम करें

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

इसे अक्षम करने के लिए, ऊपर के समान कमांड का उपयोग करें, लेकिन 'अक्षम' पैरामीटर के साथ।

यदि आप रिस्टार्ट = हमेशा सर्विस फाइल में रखते हैं, तो सिस्टमड प्रक्रिया की निगरानी करेगा और यदि यह प्रक्रिया सूची में नहीं पाया जा सकता है, तो यह इसे स्वचालित रूप से पुनरारंभ करने का प्रयास करेगा।

यदि आप जगह

पुनरारंभ करेंसेक = 30

पुनरारंभ निर्देश के बाद, प्रक्रिया को पुनरारंभ करने का प्रयास करने से पहले यह 30 सेकंड तक प्रतीक्षा करेगा। यह उपयोगी हो सकता है, क्योंकि एक असफल सेवा/एप्लिकेशन के निरंतर पुनरारंभ प्रयास से सिस्टम पर उच्च मांग हो सकती है (त्रुटि लॉग लिखना, आदि)

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

यहाँ वह जगह है जहाँ इस निर्देश की स्क्रिप्ट काम आएगी।

चरण 2: सर्विस चेकर लिपियों को कॉन्फ़िगर करना और उनका उपयोग करना

यदि आपको अपनी चल रही प्रक्रियाओं/सेवाओं पर अधिक नियंत्रण की आवश्यकता है, तो ये स्क्रिप्ट निश्चित रूप से सहायक होंगी।

चूंकि कोड थोड़ा बड़ा है, इसे जीथब पर अपलोड किया गया है और इसे निम्नलिखित भंडार के तहत पाया जा सकता है:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

पूरे पैकेज का 'दिल' है

checkService.sh

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

स्क्रिप्ट कई प्रक्रियाओं की निगरानी कर सकती है और अतिरिक्त कार्य कर सकती है, जैसा कि नीचे वर्णित है:

यह.serv या.check एक्सटेंशन वाले /services सबफ़ोल्डर से प्रत्येक फाइल के माध्यम से जाता है और जांच करेगा कि क्या 'एप्लिकेशन' नामक एक सक्रिय प्रक्रिया है।

यदि किसी एप्लिकेशन के लिए कोई '.check' फ़ाइल नहीं है, तो केवल application.serv फ़ाइल:

यदि प्रक्रिया सक्रिय है, तो यह प्रक्रिया को सक्रिय होने पर विचार करेगी।

यदि प्रक्रिया निष्क्रिय है, तो यह निम्न आदेश जारी करके सेवा को पुनरारंभ करेगा:

systemctl पुनरारंभ आवेदन

अगर.serv फ़ाइल खाली है!

यदि.serv फ़ाइल खाली नहीं है और उसके पास निष्पादन योग्य अधिकार हैं, तो वह इसे एक सादे BASH स्क्रिप्ट के रूप में चलाने का प्रयास करेगी।

यह उपयोगी है अगर सेवा को फिर से शुरू करने के अलावा कुछ अतिरिक्त करना है।

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

ऐसी सर्व फ़ाइल की सामग्री को आवश्यकता के अनुसार संपादित किया जा सकता है।

एक अन्य उदाहरण pccd.serv फ़ाइल है। इस मामले में कई अन्य प्रक्रियाओं को भी फिर से शुरू/मार दिया गया।

यदि कोई चेक फ़ाइल है, तो यह जाँचने के बाद कि क्या प्रक्रिया चल रही है, यह अतिरिक्त जाँच करने के लिए इस स्क्रिप्ट फ़ाइल को भी चलाएगी।

उदाहरण के लिए, oscam सेवा के लिए, हमने एक चेक फ़ाइल बनाई है जो यह देखने के लिए कि क्या यह सफल है, इसके वेब इंटरफ़ेस से कनेक्ट करने का प्रयास करती है। यदि नहीं, तो, प्रक्रिया सक्रिय होने के बावजूद, सेवा प्रतिसाद नहीं दे रही है और इसे पुनरारंभ करने की आवश्यकता है। सेवा के पुनरारंभ को.check फ़ाइल द्वारा ही निष्पादित/कॉल किया जाना चाहिए।

एक अन्य उदाहरण मीडियाटॉम्ब डीएलएनए सेवा होगा।

यह एक छोटा सर्वर है जो डीएलएनए ग्राहकों को वीडियो/ऑडियो सामग्री प्रदान करता है और नेटवर्क पर ही प्रसारित करता है। कभी-कभी सेवा हैंग हो जाती है और यह अब खोजने योग्य नहीं है, लेकिन प्रक्रिया अभी भी सक्रिय रहेगी। यह जांचने के लिए कि सेवा खोज योग्य है या नहीं, जीएसएसडीपी-डिस्कवर नामक सीएलआई उपयोगिता का उपयोग किया गया था। DLNA सर्वर की जाँच करने वाला पूरा कोड Mediatomb.check स्क्रिप्ट के अंदर रखा गया था।

ये कुछ उदाहरण हैं कि आप.serv और.check फ़ाइलों का उपयोग कैसे कर सकते हैं।

एक नई सेवा की निगरानी के लिए, आपको एक.serv बनाना होगा और यदि आवश्यक हो तो एक चेक फ़ाइल भी बनानी होगी और उनके अंदर संबंधित स्क्रिप्ट लिखनी होगी।

यदि केवल प्रक्रिया की उपस्थिति की जाँच पर्याप्त है, तो एक खाली.serv फ़ाइल पर्याप्त होगी। यदि अतिरिक्त जांच की जानी चाहिए, तो एक.check फ़ाइल बनाई जानी चाहिए और कार्य करने के लिए एक छोटी स्क्रिप्ट लिखी जानी चाहिए।

बेशक,.sh स्क्रिप्ट को समय-समय पर चलाना पड़ता है, इसलिए इसके लिए एक क्रॉन जॉब भी बनाया जाना चाहिए:

#हर 5 मिनट में चल रही सेवाओं की जांच करें*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null

चरण 3: अंतिम विचार

मुझे आशा है कि आप इस पैकेज को उपयोगी पाएंगे क्योंकि यह बहुत आसानी से लिनक्स प्रक्रियाओं की निगरानी कर सकता है और उम्मीद है कि आपकी सेवाओं के डाउनटाइम को कम कर देगा।

यदि आप नई स्क्रिप्ट बनाते हैं, तो बेझिझक अतिरिक्त स्क्रिप्ट को जीथब पर अपलोड करें। बस मुझे बताएं और मैं आपको योगदानकर्ता के रूप में जोड़ूंगा।

सिफारिश की: