2012-11-17 17 views
6

मैं साइडकीक के लिए मोनीट सेट अप करने की कोशिश कर रहा हूं। यहाँ मैं अब तक मेरी कॉन्फ़िग फ़ाइल के लिए है:रेल साइडकीक पर मोनिट रूबी

check process sidekiq_site 
    with pidfile /var/www/site/tmp/pids/sidekiq.pid 
    start program = "bundle exec sidekiq -C /var/www/site/config/sidekiq.yml -P /var/www/site/tmp/pids/sidekiq.pid" with timeout 90 seconds 
    if totalmem is greater than 200 MB for 2 cycles then restart # eating up memory? 
    group site_sidekiq 

समस्या जब मैं monit पुनः लोड है कि कार्यक्रम "समूह" को अस्तित्व में नहीं है चलाने मैं एक संदेश प्राप्त हो रहा है।

क्या किसी के पास इसका समाधान है?

+2

कोशिश रत्न/बंडलर-1.2.3/बिन/बंडल 'या यहां तक ​​कि गूंगा के पथ के साथ पथ भी उपसर्ग। पूर्ण पथ खोजने के लिए 'कौन सा बंडल' कमांड का उपयोग करें। – taro

उत्तर

4

जाँच करें: https://groups.google.com/forum/?fromgroups=#!topic/rubyversionmanager/0abB9jlqi_Y अगर आप rvm उपयोग करते हैं,

/bin/su - <username> -c 'bundle exec sidekiq -C /var/www/site/config/sidekiq.yml -P /var/www/site/tmp/pids/sidekiq.pid' 

आप अपने .bash_profile में उपयोगकर्ता से monit, सेट $ HOME लांच करता है, तो।

या जांच whis का जवाब: https://github.com/mperham/sidekiq/issues/506

1

यहाँ एक सार मैं GitHub पर लिखा है:

check process sidekiq_production with pidfile /var/run/sidekiq_production.pid 
     depends on redis-server 
     start program = "/etc/init.d/sidekiq_production start" with timeout 90 seconds 
     stop program = "/etc/init.d/sidekiq_production stop" with timeout 90 seconds 
     if totalmem is greater than 200 MB for 2 cycles then restart # eating up memory? 
     if 2 restarts within 3 cycles then timeout 

मैं डेबियन पर sidekiq के लिए यह भी लिखा एक init स्क्रिप्ट: https://gist.github.com/alain75007/5517948

4

पर काम करने के बाद मेरी अपने monit और sidekiq config, मैं साझा कर सकता हूं जो मेरे लिए उबंटू चला रहा है।

सबसे पहले, अगर आप उस डिस्ट्रो पर हैं तो उबंटू के लिए एक साइडकीक अपस्टार्ट स्क्रिप्ट मौजूद है। साइडकीक के लिए स्क्रिप्ट हैं और श्रमिकों के प्रबंधन के लिए: https://github.com/mperham/sidekiq/tree/master/examples/upstart/manage-one

मैं उस डिफ़ॉल्ट अपस्टार्ट स्क्रिप्ट के साथ कुछ त्रुटियों में भाग गया, क्योंकि मैं आरवीएम का उपयोग कर रहा हूं। जांच /var/logs/upstart/sidekiq-0.log ने समस्याओं पर कुछ प्रकाश डाला। यह पंक्ति:

#source $HOME/.rvm/scripts/rvm 
source /usr/local/rvm/scripts/rvm 

:

exec bin/sidekiq -i ${index} -e production -C config/sidekiq.yml -P tmp/pids/sidekiq-${index}.pid

परिवर्तित करने की जरूरत के लिए exec bundle exec sidekiq + विकल्प

फिर, मेरी rvm के साथ लाइन में सब कुछ रखने के लिए स्थापित करते हैं, मैं निम्नलिखित बदल /etc/monit/monitrc में मैं अपस्टार्ट स्क्रिप्ट का संदर्भ देता हूं और:

# sidekiq 
check process sidekiq 
    with pidfile /var/www/apps/myapp/current/tmp/pids/sidekiq-0.pid 
    start program = "/usr/bin/sudo start sidekiq index=0" 
    stop program = "/usr/bin/sudo stop sidekiq index=0" 
    if totalmem is greater than 500 MB for 2 cycles then restart # eating up memory? 
    if 3 restarts within 5 cycles then timeout 
0

आपकी समस्या यह है कि कमांड बंडल गुम है। मुझे लगता है कि अपने उस तरह monit कॉन्फ़िग फ़ाइल लिखना चाहिए:

check process sidekiq 
    with pidfile /srv/www/projects/myapp/shared/log/production.sidekiq.pid 
    start program = "/usr/bin/env /usr/bin/env HOME=/home/USER_NAME RACK_ENV=production RAILS_ENV=production PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH /bin/sh -l -c 'cd /srv/www/rails/myapp/current; bundle exec sidekiq'" as uid USER_NAME 
    stop program = "/usr/bin/env /usr/bin/env HOME=/home/USER_NAME RACK_ENV=production RAILS_ENV=production PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH /bin/sh -l -c 'cd/
    group myapp_workers 

आप क्षुधा निर्देशिका में चलते हैं और बंडल मैं यह काम लगता है कॉल करें।

0

यहाँ config कि rvm

check process sidekiq-th with pidfile /web/vcms/tmp/pids/sidekiq.pid 
    start program = "/home/dimon/.rvm/bin/rvm-shell -c '/web/vcms/sidekiq.sh start'" 
    stop program = "/bin/bash /web/vcms/sidekiq.sh stop &" 

यह एक script का उपयोग करता है के साथ Ubuntu पर काम करता है, मुख्य लाइनों

शुरू

cd /web/vcms; sidekiq -d -e production & 

और रोक रहे हैं

sidekiqctl stop $PIDFILE 

मैं एक शेल पटकथा लेखन गुरु नहीं कर रहा हूँ और किसी भी सलाह के लिए आभारी होंगे =)

1

अंत में इस समाधान आकर्षण :)

check process sidekiq with pidfile path_to_my_pid_file/sidekiq.pid 

start program = "/bin/bash -c 'cd my_app_current && source /home/myuser/.rvm/environments/[email protected] && bundle exec sidekiq -e production -P path_to_my_pid_file/sidekiq.pid -L /my_shared_folder_path/log/sidekiq.log -C my_app_current/config/sidekiq.yml --daemon'" as uid "myuser" and gid "myuser" 

stop program = "/bin/bash -c 'kill -s INT `cat path_to_my_pid_file/sidekiq.pid`'" as uid "myuser" and gid "myuser" 

** मन में अंक का पालन करते रहें जैसे मेरे लिए काम किया: **

  • मैं रूबी संस्करण प्रबंधन के लिए आरवीएम का उपयोग कर रहा हूं कृपया आरबीएनवी के साथ जांचें।
  • यहाँ आप माणिक के वैश्विक स्थान रास्ता पारित करने के लिए की जरूरत है मैं इसे यहाँ से पारित कर दिया: - `/usr/local/lib/ruby/gems/1.9/ तरह बंडलर का पूर्ण पथ, लिखने के लिए /home/myuser/.rvm/environments/[email protected]
संबंधित मुद्दे