কিভাবে প্রতিক্রিয়াশীল যখন স্বয়ংক্রিয়ভাবে MySQL এবং MongoDB পুনরায় আরম্ভ করবেন?


3

আমি একটি সহজ ডেভেলপমেন্ট সার্ভার (উবুন্টু) চালাচ্ছি যার উপর MySQL এবং MongoDB কখনও কখনও ক্র্যাশ হয়। আমি সবসময় তাদের সঙ্গে পুনরায় আরম্ভ করুন sudo service mysql restart

যদিও আমি জানি তারা কেন ক্র্যাশ করছে তা তদন্ত করতে হবে-এবং আমি বর্তমানে ক্র্যাশ হওয়ার পরে তাদের স্বয়ংক্রিয়ভাবে পুনরায় চালু করার জন্য একটি উপায় খুঁজছি। আমার মনে হয় আমার এমন কোনও ডেমন আছে যা তাদের পিংস করে এবং তাদের পুনরায় প্রতিক্রিয়া দেয় যদি তারা আর প্রতিক্রিয়াশীল না হয় তবে আমি কীভাবে এটি করতে পারি তা সম্পর্কে নিশ্চিত নই।

আমি মত সরঞ্জাম সম্পর্কে পড়া Nagios , কিন্তু আমি অনুমান যে আমার অবস্থা জন্য একটি বিট overkill।

কেউ কি জানেন আমি কিভাবে শুরু করতে পারি?


আমার উত্তর আবার সুনির্দিষ্ট চেক করুন। উদাহরণস্বরূপ কিছু tweaks তৈরি করা এবং আমি আমার বিশ্বাসযোগ্য আছি মাইএসকিউএল উদাহরণ ঠিক যেমন কাজ করবে। সব পরীক্ষা উবুন্টু 12.04.5।
JakeGould

আমি ঠিক একই সমস্যা হচ্ছে!
M_R_K

উত্তর:


10

আমি মত সরঞ্জাম সম্পর্কে পড়া Nagios , কিন্তু আমি অনুমান যে জন্য একটি বিট overkill   আমার অবস্থা.

কেউ কি জানেন আমি কিভাবে শুরু করতে পারি?

সহজ। সঙ্গে পর্যবেক্ষণ কনফিগারেশন সেটিংস সন্ধান করুন Monit । এটি একটি লাইটওয়েট এবং সেটআপ করা সিস্টেমের নিরীক্ষণের সরঞ্জাম যা আপনার বর্ণনা অনুসারে ঠিক পরিস্থিতিতে সেটআপ করা খুবই উপযোগী। সেবা নিচে যায়, এটি পুনরায় আরম্ভ করুন এবং এটি সম্পর্কে সতর্ক।

আমি মূলত অ্যাপাচি ওয়েব সার্ভারের জন্য এটি ব্যবহার করেছি, কিন্তু সেখানে আছে অন্যান্য প্রোগ্রাম / সফ্টওয়্যার জন্য কি করা যেতে পারে উদাহরণ প্রচুর যেমন MySQL এবং যেমন।

Monit সেট আপ।

আমি সেট আপ উপায় এই লাইন। প্রথমে, মনিট প্রোগ্রামটি নিজের মতো ইনস্টল করুন:

sudo apt-get install monit

ইনস্টল করার পরে, এখানে কনফিগার সম্পাদনা করুন; আমি ব্যবহার করতে পছন্দ করি nano তবে আপনি যা পছন্দ করেন তা সম্পাদক ব্যবহার করতে বিনা দ্বিধায়।

sudo nano /etc/monit/monitrc

120 এর প্রারম্ভিক বিলম্বের সাথে প্রতি 60 সেকেন্ডে পরিষেবাগুলি পরীক্ষা করার জন্য ডিফল্ট ডেমন মানগুলি সামঞ্জস্য করুন:

set daemon 60
with start delay 60

তারপর খুঁজে mailserver এলাকাটি হলো monitrc এবং নিম্নলিখিত লাইন যোগ করুন। পোস্টফিক্স বা একটি SMTP এই কাজ করার জন্য সক্রিয় হতে হবে। আমি সাধারণত আমার সার্ভারে পোস্টফিক্স ইনস্টল করেছি তাই আমি নিম্নলিখিত সেটআপটি ব্যবহার করি:

set mailserver localhost

তারপর আমি নিশ্চিত যে একটি Monit কনফিগ ডিরেক্টরি এই মত সেটআপ করা হয়:

sudo mkdir -p /etc/monit/conf.d

একটি Monit Apache2 পর্যবেক্ষণ নিয়ম সেট আপ করা হচ্ছে।

আমি যেমন বললাম - আমি প্রধানত অ্যাপাচি পর্যবেক্ষণের জন্য মনিট ব্যবহার করি তাই এটি একটি সাধারণ কনফিগারেশন যা আমি ব্যবহার করতে পছন্দ করি কিন্তু মৌলিক ধারণাটি মাইএসকিউএল, মংডোডি বা অন্যান্য জিনিসের জন্য অনুরূপ। আমি এই ফাইল এ সংরক্ষণ করতে হবে:

sudo nano /etc/monit/conf.d/apache2.conf

এবং এই ফাইলের বিষয়বস্তু হবে:

check process apache with pidfile /var/run/apache2.pid
  start "/usr/sbin/service apache2 start"
  stop  "/usr/sbin/service apache2 stop"
  if failed host 127.0.0.1 port 80
    with timeout 15 seconds
  then restart
  alert email_address@example.com only on { timeout, nonexist }

সিনট্যাক্স মোটামুটি স্ব-ব্যাখ্যামূলক, কিন্তু মূলত:

  • প্রক্রিয়া উপর hinges apache2.pid; আপনার প্রকৃত অবস্থান মেলে যে পরিবর্তন করতে ভুলবেন না apache2.pid অথবা httpd.pid আপনার পরিবেশে।
  • তারপর কমান্ডের প্রসেস আছে সংযুক্ত start এবং stop
  • এবং পোর্টে ওয়েব সার্ভার নিরীক্ষণ যে যুক্তি আছে 80 উপর localhost ( 127.0.0.1 )
  • এবং সার্ভারের কাজ মাত্র 15 সেকেন্ডের জন্য নাগালযোগ্য নয়।
  • যদি এটি কাজ করতে হয়, এটি একটি পুনঃসূচনা প্রচেষ্টা।
  • এবং তারপরে সার্ভারের সময়গুলি বা বিদ্যমান না হওয়ার ঘটনাগুলিতে নির্দিষ্ট ইমেল ঠিকানাতে একটি সতর্কতা পাঠায়।

একটি Monit MySQL পর্যবেক্ষণ নিয়ম সেট আপ করা হচ্ছে।

উপর ভিত্তি করে আমি উপরে লিঙ্ক উদাহরণ , আমি একটি কনফিগার অনুমান এই মত MySQL জন্য কাজ করবে। প্রথমে, এর মত একটি ফাইল তৈরি করুন:

sudo nano /etc/monit/conf.d/mysql.conf

এবং আমি উদাহরণটি মাপসই করেছি যাতে আমি অনুপযুক্ত হব - আপাএর জন্য আমি কি সেটআপ করেছি তার অনুরূপ আচরণ করে।

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
  start program = "/usr/sbin/service mysql start"
  stop program = "/usr/sbin/service mysql stop"
  if failed host 127.0.0.1 port 3306 protocol mysql
    with timeout 15 seconds
  then restart
  alert email_address@example.com only on { timeout, nonexist }

অবশ্যই যে আপনার প্রকৃত পরিবেশ পরিবেশের সাথে মেলে tweaked করা উচিত-যেমন অবস্থান সমন্বয় mysqld.pid, ইমেল ঠিকানা এবং যেমন- কিন্তু অতীতে এটি ধারণা / বাস্তবায়নে মোটামুটি সাধারণ।

একবার সেট করা হয়, পুনরায় আরম্ভ করুন monit এবং সব ভাল হতে হবে:

sudo service monit restart

একটি Monit MongoDB পর্যবেক্ষণ নিয়ম সেট আপ।

একটি MongoDB পর্যবেক্ষণ নিয়ম তৈরি করতে, এর মতো একটি ফাইল তৈরি করুন:

sudo nano /etc/monit/conf.d/mongod.conf

এবং এখানে মংডোডিবি পর্যবেক্ষণের নিয়ম রয়েছে; এটি মন্টোডিবি ডেমোকে সক্রিয় করে এবং একটি পিআইডি নয় (দ্রষ্টব্য: mongod.lock ) যেহেতু এটি যে কাজ করে বলে মনে হচ্ছে না:

check process mongod matching "/usr/bin/mongod"
  start program = "/usr/sbin/service mongod start"
  stop program = "/usr/sbin/service mongod stop"
  if failed host 127.0.0.1 port 27017 protocol http
    with timeout 15 seconds
  then restart
  alert email_address@example.com only on { timeout, nonexist }

অবশ্যই আপনার প্রকৃত পরিবেশের সাথে মিলিত হওয়া উচিত - যেমন প্রকৃত পথ সামঞ্জস্য করা /usr/bin/mongod বাইনারি, ইমেল ঠিকানা এবং যেমন- কিন্তু অতীতে এটি ধারণা / বাস্তবায়নে মোটামুটি সাধারণ।

একবার সেট করা হয়, পুনরায় আরম্ভ করুন monit এবং সব ভাল হতে হবে:

sudo service monit restart

Monitoring Monit।

আপনি এটি অ্যাকশন দেখতে Monit লগ অনুসরণ করতে পারেন:

sudo tail -f -n 200 /var/log/monit.log

এবং একটি পরীক্ষা হিসাবে, আপনি কেবল MySQL বা MongoDB সার্ভারটি বন্ধ করতে পারেন এবং তারপরে সেই লগটিতে কী দেখায় তা দেখুন। যদি সবকিছু ভাল হয় তবে পুরো নজরদারি প্রক্রিয়াটি দেখতে হবে এবং কনফিগারেশনে সেট করা ঠিকানায় পাঠানো ইমেল সহ পুনর্সূচনা ঘটতে হবে।


আমি উবুন্টু 14.04 এ এটি পরীক্ষা করেছি, কিন্তু আমার জন্য এটি কাজ করে না। উদাহরণস্বরূপ কোডটি পেস্ট করার পরে আপনি লিখেছেন এবং পুনরায় পুঙ্খানুপুঙ্খভাবে পুনঃসূচনা করুন /var/log/monit.log। আমি নিজে নিজে MySQL এবং Mongo ( sudo service mysql stop এবং sudo service mongodb stop )। কিছুদিন পর আমি মংডোর মনিট লগে কয়েকটি লাইন দেখতে পাচ্ছি: process is not running, trying to restart, start: /usr/sbin/service, failed to start। এটি মন্টো চলছে না বিজ্ঞপ্তি, কিন্তু এটি আবার শুরু করতে সক্ষম বলে মনে হচ্ছে না। ওহ, এবং আমার এবং msql সম্পর্কে আমি লগ ইন কিছু দেখতে না (আধা ঘন্টা অপেক্ষা)। কোন ধারনা?
kramer65

1
আহ! আমি এটা কাজ পেতে পরিচালিত। আমি শুরু কমান্ড সঙ্গে লাইন পরিবর্তন start program = "/sbin/start mongodb" যা আমার জন্য কাজ করে। এটা এখনও MySQL জন্য কাজ করে না কেন কোন ধারণা।
kramer65

3

একটি সহজ bash স্ক্রিপ্ট (অথবা আপনি যে কোনও স্ক্রিপ্টিং ভাষা নিয়ে যাবেন) কাজটি করবেন (সুডোর সাথে চালানোর জন্য):

while true
do
    # Ping the MySQL server (or run a real SELECT command using mysql client)
    mysqladmin ping
    # Check the return code: should be 0 if server is alive
    if [[ $? != 0 ]]
    then
        service mysql restart
    fi
    # Wait until next check
    sleep 60
done

আপনি কি নিশ্চিত যে একটি স্বয়ংক্রিয়ভাবে চলমান স্ক্রিপ্টের ভিতরে সুডো এমন একটি ভাল ধারণা?
MariusMatutiae

@ মরিয়াস মাতুটিয়া আসলে, স্ক্রিপ্টের ভিতরে সুড ছাড়া পরিষ্কার হবে। আমি সম্পাদনা।
Sébastien
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.