কিছু মারা যাওয়ার ভেবে আগে মনিটকে আরও অপেক্ষা করুন


20

আমি একটি প্রোগ্রাম (রেসকিউ) শুরু করার চেষ্টা করছি তবে পিডফাইল লেখার আগে এটি কিছুটা সময় নেয়। সুতরাং, আমি মনে করি যে মনিট মনে করেন যে প্রোগ্রামটি শুরু হয়নি এবং প্রথমটির পিডফিলটি লেখার আগে আরও একটি বা দুটি প্রোগ্রাম শুরু হয়।

আমি এই প্রক্রিয়াটির জন্য মনিট আবার যাবার সময়টি কীভাবে বিলম্ব করব? বা আমি অন্যভাবে এটি সমাধান করা উচিত?


আমি নীচে একটি নতুন উত্তর যুক্ত করেছি। যদিও চেকগুলির মধ্যে দীর্ঘ অপেক্ষা করা ধীর পরিষেবার জন্য সংঘর্ষগুলি রোধ করবে, এটি গ্রাহকদের পক্ষে সত্যিই খারাপ অভিজ্ঞতা হতে পারে।
এডি

উত্তর:


10

আমি এই প্রক্রিয়াটির জন্য মনিট আবার যাবার সময়টি কীভাবে বিলম্ব করব?


আপনি যা অর্জন করতে চাইছেন তা মনিটের " সার্ভিস পোল টাইম " বৈশিষ্ট্যের মাধ্যমে করা যেতে পারে

মনিট ডকুমেন্টেশন বলে

দ্বারা প্রদত্ত নিয়মিত বিরতিতে পরিষেবাগুলি পরীক্ষা করা হয়

set daemon n

বিবৃতি। .Monitrc ফাইলে যেমন লেখাগুলি লেখা হয় ঠিক তেমনিভাবে চেকগুলি সম্পাদন করা হয়, যদি পরিষেবার মধ্যে নির্ভরতা সেটআপ করা হয় তবে এই ক্ষেত্রে পরিষেবাগুলির স্তরক্রম চেকের ক্রমটিকে বিকল্পতর করতে পারে।

পরিষেবা জরিপ কাস্টমাইজ করার একটি পদ্ধতি হ'ল

  1. পোল চক্র দৈর্ঘ্যের একাধিকের উপর ভিত্তি করে কাস্টম ব্যবধান

সমস্ত [সংখ্যা] সাইক্লিজ

উদাহরণ:

check process resque with pidfile /your/app/root/tmp/pid/resque.pid
   every 2 cycles

বা আমি অন্যভাবে এটি সমাধান করা উচিত?


আমি মনিট সহ রেসকিউ কাজগুলি পর্যবেক্ষণ করার প্রাথমিক প্রচেষ্টাও করেছি কারণ মনিট খুব লাইটওয়েট ডিমন তবে শেষ পর্যন্ত withশ্বরের সাথে স্থায়ী হয়। আমি জানি, আমি জানি যে monশ্বর মনিটের তুলনায় অনেক বেশি ক্ষুধার্ত, তবে রিক্সেসের ক্ষেত্রে আমরা এটি একটি ভাল ম্যাচ বলে মনে করেছি।


ধন্যবাদ! আমি প্রতিটি এক্স সাইকেল ব্যবহার করে শেষ করেছি। আমি সবেমাত্র আমার জন্য কাজ করা নম্বরটি পেয়েছি।
রামন টেয়াগ

19

আপনি ডিফল্টের চেয়ে আলাদা ব্যবধানে একটি নির্দিষ্ট পরিষেবা পরীক্ষা করতে পারেন ...

মনিট ডকুমেন্টেশনে সার্ভিস পোল টাইম দেখুন ।

আপনার রেসকি প্রোগ্রামের একটি উদাহরণ হ'ল বিভিন্ন সংখ্যক চক্র পরীক্ষা করা:

check process resque with pidfile /var/run/resque.pid
   every 5 cycles

বা উদাহরণ বিভাগ থেকে:

Some servers are slow starters, like for example Java based Application Servers. 
So if we want to keep the poll-cycle low (i.e. < 60 seconds) but allow some services to take its time to start, 
the every statement is handy:

 check process dynamo with pidfile /etc/dynamo.pid every 2 cycles
       start program = "/etc/init.d/dynamo start"
       stop program  = "/etc/init.d/dynamo stop"
       if failed port 8840 then alert

অথবা আপনি ক্রোন-শৈলীর চেকগুলি উত্তোলন করতে পারেন।

check process resque with pidfile /var/run/resque.pid
   every 10 * * * *

অথবা আপনি যদি ধীর সূচনাটি অনুভব করছেন, আপনি পরিষেবা শুরু কমান্ডের মেয়াদ বাড়িয়ে দিতে পারেন:

check process apache with pidfile /var/run/httpd.pid
       start program = "/etc/init.d/httpd start" with timeout 90 seconds

একই উত্তর, তাই না?
ইয়েওয়াইট

2
with timeout 90 secondsআমি যা চেয়েছিলাম ঠিক তাই ছিল ধন্যবাদ।
অ্যান্ড্রু

1
টাইমআউট এবং ক্রোন-স্টাইল অন্তর্ভুক্ত করার জন্য কুদোস। এটি সর্বাধিক নির্ভুল এবং সম্পূর্ণ উত্তর।
আরক্রস

9

আপনি সরাসরি এক্স বারের জন্য কিছু ব্যর্থ হয়েছে কিনা তাও পরীক্ষা করতে পারেন:

 if failed 
    port 80 
    for 10 cycles 
 then alert

অথবা ওয়াই পোলের মধ্যে এক্স বারের জন্য:

 if failed 
    port 80
    for 3 times within 5 cycles 
 then alert

অথবা উভয়:

 check filesystem rootfs with path /dev/hda1
  if space usage > 80% for 5 times within 15 cycles then alert
  if space usage > 90% for 5 cycles then exec '/try/to/free/the/space'

( এখান থেকে )


1
এটি অন্য একটি খুব ভাল উত্তর, কারণ এটি দেখায় যে আপনি কীভাবে ডিফল্ট ব্যবধানে পরীক্ষা করতে পারেন তবে কেবলমাত্র আরও ক্ষমা করার ভিত্তিতে ব্যবস্থা গ্রহণ করুন।
আরক্রস

2

আমার দলের একজন সদস্য একটি চতুর সমাধান নিয়ে এসেছিলেন যা মনিটকে ঘন ঘন (প্রতি মিনিটে) পরীক্ষা করতে দেয় , তবে একবার পরিষেবাটি পুনরায় চালু করার চেষ্টা করার পরে (যা ~ 10 মিনিট সময় নেয়) এটি শুরু করার চেষ্টা করার আগে একটি নির্দিষ্ট অনুগ্রহকাল অপেক্ষা করবে আবার।

এটি চেকগুলির মধ্যে দীর্ঘ অপেক্ষা করতে বাধা দেয় যা ধীর গতির সাথে মিলিয়ে গ্রাহকদের জন্য অনেক বড় প্রভাব। এটি মধ্যবর্তী স্ক্রিপ্ট ব্যবহার করে কাজ করে যা মনিটকে চিহ্নিত করতে পতাকা হিসাবে কাজ করে ইতিমধ্যে শেষ ব্যর্থতা থেকে পদক্ষেপ নিচ্ছে।

check host bamboo with address bamboo.mysite.com
   if failed
           port 443 type tcpSSL protocol http
           and status = 200
           and request /about.action
            for 3 cycles
   then exec "/bin/bash -c 'ps -ef | grep -v "$$" | grep -v "grep" | grep restartBamboo.sh >/dev/null 2>&1; if [ $? -ne 0 ]; then /opt/monit/scripts/restartBamboo.sh; fi'"

যদি বাঁশ (ধীরে শুরু হওয়া ওয়েব অ্যাপ্লিকেশন) একটানা 3 মিনিটের জন্য নিচে থাকে তবে পুনরায় চালু করুন, তবে পুনর্সূচনা স্ক্রিপ্ট ইতিমধ্যে চালু না থাকলে তবেই পুনরায় চালু করুন।

যে স্ক্রিপ্টটি বলা হয় তাতে একটি নির্দিষ্ট ঘুম থাকে যা দীর্ঘ সময়ের জন্য অপেক্ষা করে তারপরে পরিষেবাটির জন্য ধীরতম সূচনার সময় (আমাদের ক্ষেত্রে আমরা 10 ডলারে শেষ করার প্রত্যাশা করি, তাই আমরা 15 এর জন্য ঘুমাই)

#!/bin/bash
echo "Retarting bambo by calling init.d"
/etc/init.d/bamboo stop
echo "Stopped completed, calling start"
/etc/init.d/bamboo start
echo "Done restarting bamboo, but it will run in background for sometime before available so, we are sleeping for 15 minutes"
sleep 900
echo "done sleeping"

2

মনিতের বর্তমান সংস্করণ (5.16) সিনট্যাক্সের সাহায্যে প্রারম্ভিক স্ক্রিপ্টগুলির জন্য একটি সময়সীমা সমর্থন করে:

 <START | STOP | RESTART> [PROGRAM] = "program"
    [[AS] UID <number | string>]
    [[AS] GID <number | string>]
    [[WITH] TIMEOUT <number> SECOND(S)]

ডক্স রাজ্য:

প্রক্রিয়া চেকের ক্ষেত্রে, মনিট হাল ছেড়ে দেওয়ার আগে শেষ করতে এবং থামাতে অ্যাকশনটি শেষ করতে 30 সেকেন্ড অবধি অপেক্ষা করবে এবং ত্রুটির প্রতিবেদন করবে। আপনি এই সময়সীমা টিআইএমইউটি বিকল্পটি ব্যবহার করে ওভাররাইড করতে পারেন।

"টাইমআউট" মানটি যা করবে।


সময়সীমা বাড়ানো যদি আসল শুরুতে দীর্ঘ সময় নেয় তবে মূল প্রশ্নে মনে হয় প্রোগ্রামটি দ্রুত শুরু হয়েছে (অর্থাত্ ফিরে এসেছে) তবে তাত্ক্ষণিকভাবে পিআইডি লিখেনি। পুনরায় চালু হওয়ার পরে নির্দিষ্ট সময়ের জন্য পরিষেবাটি পরীক্ষা না করার জন্য মনিটকে বলার উপায় আছে কি?
পিটারভেরমন্ট

timeoutউভয় শুরু হয় এবং পুনরায় আরম্ভ করার জন্য আবেদন করা উচিত নয়। আমি যতদূর বুঝতে পেরেছি, এটি মনিট যাচাই করার আগে একটি বিলম্বের মধ্যে রাখে এটির: ক) চলমান, খ) প্রত্যাশিত পিআইডি ফাইল তৈরি হয়েছে এবং গ) প্রত্যাশিত পিআইডি সহ একটি প্রক্রিয়া বর্তমানে চলছে। নির্দিষ্ট অ্যাপ্লিকেশনটি এমন একটি স্ক্রিপ্ট ছিল যেখানে এটি কার্যকর হয়ে কাজ করার জন্য আমার কিছু সমস্যা হয়েছিল যেখানে আসল প্রক্রিয়াটি কাঁটাচামচ করে প্রক্রিয়াটির সাথে কী ঘটছে তা না জেনে ফিরে এসেছিল। এই ক্ষেত্রে এটি কাজ করা একটি ব্যথা ছিল।
জেটিয়ন

সিস্টেমটি পুনরায় বুট করা এবং পরিষেবাগুলি শুরু করার বিষয়ে কী? প্রতিটি চেকের জন্য সেকেন্ডে প্রাথমিক বিলম্ব নির্দিষ্ট করার কোনও উপায় আছে কি? স্টার্ট / স্টপ স্টেটমেন্ট ছাড়াই প্যাসিভ চেকগুলি
ম্যাসিমো

আমি বিশ্বাস করি যে ক্ষেত্রে আপনি খুঁজছেন হতে পারে START DELAY
জেটিয়ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.