2011-01-10 11 views
13

के साथ रूबी प्रक्रियाओं की निगरानी करें मेरे पास रूबी स्क्रिप्ट्स का एक गुच्छा है जो लंबे समय से चल रहे हैं, मैं यह सुनिश्चित करना चाहता हूं कि हर 30 सेकंड या तो ये ऊपर हैं।मॉनिट

मैं सामान्य रूप से बस ruby script-name.rb

मैं monit ये स्क्रिप्ट के बाद देखने के लिए कॉन्फ़िगर कर सकते हैं कैसे द्वारा आदेशों शुरू?

अद्यतन: मैं this method to create a wrapper script जो तब माणिक प्रक्रिया शुरू करेगा अनुसरण करने की कोशिश, लेकिन यह .pid फ़ाइल और टाइपिंग './wrapper-script स्टॉप' किया था कुछ भी नहीं बनाने के लिए नहीं मालूम था:/

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

http://mmonit.com/wiki/Monit/ConfigurationExamples

बस एक साधारण एक लेने और अपनी आवश्यकताओं के अनुसार इसे संशोधित:

+0

यही वह है जो इसके लिए है। – DigitalRoss

उत्तर

6

Monit विकी विन्यास उदाहरण के एक बहुत है।

अद्यतन:

echo $$ > /var/run/xyz.pid; 

आप अपनी आवश्यकताओं के स्क्रिप्ट अनुकूलन है: आवरण स्क्रिप्ट इस पंक्ति में आप के लिए पीआईडी ​​बनाना चाहिए? क्या यह निष्पादन योग्य है (chmod +x)? क्या इसके पास गंतव्य के लिए लेखन अनुमतियां हैं? शायद उस रैपर को पोस्ट करें जिसे आप उपयोग करने का प्रयास कर रहे हैं ताकि मैं आपकी और अधिक मदद कर सकूं।

+0

धन्यवाद, लेकिन मुझे रूबी प्रोसेस के लिए डिस्क पर .pid फ़ाइल नहीं मिल रही है? – Tom

+5

ठीक है, अगर आपकी स्क्रिप्ट एक नहीं बनाती हैं, तो कोई पीआईडी ​​फ़ाइल नहीं है। या तो अपनी स्क्रिप्ट को एक बनाने या एफएक्यू एंट्री का पालन करने के लिए संशोधित करें: http://mmonit.com/wiki/Monit/FAQ#pidfile –

+0

टॉम, क्या आप इस पर कोई प्रगति कर रहे हैं? क्या लिंक मदद करते थे? यदि नहीं, तो शायद हमें यह बताने के लिए अपना प्रश्न संपादित करें कि आपको कितना दूर मिला। –

0

आपकी रूबी स्क्रिप्ट में पिड फ़ाइल लिखना आपके लिए सबसे आसान हो सकता है (बस एक फ़ाइल खोलें और इसमें $$ लिखें)। उस ने कहा, रैपर स्क्रिप्ट दृष्टिकोण ठीक काम करना चाहिए। क्या आपकी स्क्रिप्ट को /var/run (या जहां भी आप पिडफाइल डाल रहे हैं) में फ़ाइल में लिखने की अनुमति है?

4

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

कल्पना कीजिए कि आप एक वर्ग कार्यकर्ता एक विधि "रन" है कि एक अनंत लूप सॉकेट या ऐसा कुछ से पढ़ने में प्रवेश करती है है कि है, यहाँ कैसे आप अपने डेमॉन आवरण लिखते हैं कि:

# this is file my_worker_control.rb 
require 'rubygems' 
require 'daemons' 
require 'worker' 

Daemons.run_proc(:app_name => 'my_worker', :dir_mode => :system, :log_output => true) do 
    Worker.run 
end 

एक बार स्क्रिप्ट किया जाता है, बस अपने आदेश पंक्ति या एक init.d स्क्रिप्ट से इसे कहते:

my_worker_control.rb रन | शुरू | रोक | पुनः आरंभ

इस config के तहत एक "my_worker.pid" फाइल उत्पन्न करेगा "/var/run "और आप प्रक्रिया को देखने के लिए monit का उपयोग कर सकते हैं इस फाइल का उपयोग करके।

+0

से जोड़ने के लिए बस एक अपडेट – Tom

+0

अद्यतन उत्तर। –

+0

सिरों में जो सिर्फ एक रैपर स्क्रिप्ट है, एक रूबी मणि में समेकित है। मोनीट विकी का बैश संस्करण इस से अधिक "काला जादू" नहीं है। –

0

वैकल्पिक (मॉनीट) के रूप में, bluepill पर एक नज़र डालें।

0

(निश्चित रूप से विषय से बाहर) क्योंकि यह रूबी के बारे में है, आप इसका उपयोग क्यों नहीं करते: http://god.rubyforge.org/?

+0

मैं एक छोटे से वीपीएस का उपयोग कर रहा हूं, गॉड्स मेमोरी उपयोग मुझे जितना महंगा हो सकता है उससे अधिक महंगा लग रहा था। – Tom

1

फ़ाइल को संशोधित करें:

/etc/init.d/skeleton 

आप थोड़ा इसे संशोधित करने की आवश्यकता होगी, और उसके बाद:

chmod +x /etc/init.d/process_name 
sudo update-rc.d process_name defaults 
sudo /etc/init.d/process_name (start| stop| reload) 

अब बस /var/run/process.pid

पर पीआईडी ​​के साथ Monit का उपयोग

प्रारंभ स्थल: sudo शुरू /etc/init.d/process

स्टॉप स्थान: sudo /etc/init.d/process

चीयर्स

0

अपने गहरे लाल रंग का स्क्रिप्ट yourapp.rb को यह पंक्ति जोड़ें रुकेंगे, तो उस नाम के एक pid फ़ाइल बनाता है yourapp.pid

File.open('/somepath/yourapp.pid', 'w') {|f| f.write Process.pid }

कॉन्फ़िगर Monit /etc/monit/conf.d/yourapp

जांच प्रक्रिया yourapp बुद्धि में पीआईडी ​​के लिए जाँच करने के लिए एच pidfile /somepath/yourapp.pid