এনটিপিডি সফলভাবে শেল ব্যবহার করে মেশিনের সময় আপডেট করে কিনা তা কীভাবে পরীক্ষা করবেন?


21

আমি আমার লিনাক্স মেশিনের সময়কে একটি নির্দিষ্ট এনটিপি সার্ভারে আপডেট করার জন্য এনটিপিডি ব্যবহার করার চেষ্টা করছি।
এই দৃশ্যটি এখানে:

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

আমি চারপাশে অনুসন্ধান করে দেখতে পেয়েছি যে আমার (?) এনটিপিডি ব্যবহার করা উচিত এবং কিছু আদেশ যেমন:

#ntpdate ntp.server.com (এনটিপিডি শুরু করার আগে)
#ntpd some_options_to_start

প্রশ্নগুলি হ'ল:

  1. এই আদেশগুলি দ্বারা সময়টি সফলভাবে আপডেট করা হয়েছে কিনা আমি কীভাবে জানতে পারি?
  2. আমি কী এনটিপিডি থেকে সময় আপডেট করার জন্য ব্যবধানটি সেট করতে পারি? (অথবা আমাকে .. / শেলের sleepসাথে লুপের মতো কিছু ব্যবহার করতে হবে ?)dowhilefor

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

উত্তর:


22

নিরীক্ষণের ntpdজন্য স্ক্রিপ্ট ব্যবহার করা সাধারণত হয় না। সাধারণত মত একটি মনিটরিং টুল nagiosবা muninডেমন নিরীক্ষণ করতে ব্যবহৃত হয়। জিনিসগুলি ভুল হয়ে গেলে সরঞ্জামটি আপনাকে একটি সতর্কতা প্রেরণ করতে পারে। muninঅফসেটটি 15 মিলিসেকেন্ডের বেশি হলে আমি আমাকে ইমেল করি ।

সাধারণত, আপনার একটি বিজোড় সংখ্যক সার্ভার ব্যবহার করা উচিত যাতে ডেমোন সার্ভারগুলির মধ্যে একটি নির্বাচন সম্পাদন করতে পারে one তিনটি সাধারণত পর্যাপ্ত এবং পাঁচজনের বেশি অতিরিক্ত is আপনি যদি এটি নিরীক্ষণ করেন তবে আপনার অভ্যন্তরীণ নেটওয়ার্কের ক্লায়েন্টদের একটি অভ্যন্তরীণ সার্ভারের সাথে যেতে সক্ষম হওয়া উচিত। বৈধ সার্ভার বা আপনার ISPs NTP বা DNS সার্ভারগুলি ঘড়ির উত্স হিসাবে ব্যবহার করুন। পাবলিক পুলের পাশাপাশি পাবলিক সার্ভার রয়েছে।

ntpdস্ব-টিউনিং এবং এটি একবারে কনফিগার হয়ে শুরু হয়ে গেলে আপনার এটি সামঞ্জস্য করার দরকার নেই। সাম্প্রতিক ntpdবাস্তবায়নের সাথে আপনি ntpdateসম্পূর্ণরূপে ব্যবহার বাদ দিতে পারেন কারণ তারা তারিখের প্রাথমিক সেটিংটি করতে পারে।

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

#!/bin/bash
limit=100   # Set your limit in milliseconds here
offsets=$(ntpq -nc peers | tail -n +3 | cut -c 62-66 | tr -d '-')
for offset in ${offsets}; do
    if [ ${offset:-0} -ge ${limit:-100} ]; then
        echo "An NTPD offset is excessive - Please investigate"
        exit 1  
    fi  
done
# EOF

সিস্টেমের সময় পর্যবেক্ষণ করার বিষয়ে কারও কথা শুনেছি এটি প্রথম ঘটনা। দুর্দান্ত উত্তর।
ব্রুস এডিগার

@ বিলথর: দুর্দান্ত উত্তর অনেক ধন্যবাদ. আমার বর্তমান কাজ তা কাজে লাগানোর চেষ্টা করবে
দেখেন

@ ব্রুসএডিগার আমি এটি গ্রহণ করেছি আপনি সময়-বাদামের মেলিং তালিকার লোকদের সম্পর্কে কখনও শুনেন নি।
ডিএফসি

যতক্ষণ পর্যন্ত "এনটিপিডি নিরীক্ষণের জন্য একটি স্ক্রিপ্ট ব্যবহার করা সাধারণত হয় না" যায়; এনটিপি টারবাল এর ভিতরে স্ক্রিপ্ট ডিরেক্টরি বিপরীত উপসংহারে নির্দেশ করে।
dfc

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

8

এনটিপিস্ট্যাট ব্যবহার করুন।

myserver # ntpstat
synchronised to NTP server (10.89.160.13) at stratum 4
   time correct to within 124 ms
   polling server every 1024 s

1
উবুন্টু 16.04-এ, আমি এনটিপিস্ট্যাট বগী পেয়েছি। আমার নেটওয়ার্ক কেবলটি আনপ্লাগ করার পরে, এটি এখনও রিটার্নের স্থিতি 0 এর সাথে সিঙ্ক্রোনাইজড হিসাবে দেখানো হয়েছিল, যদিও ntpq -pকোনও সমবয়সী না দেখায়। সুতরাং আমি এই ইউটিলিটি বিশ্বাস করছি না।
হিউজেনস

8

প্রথম প্রশ্নের উত্তর দেওয়ার জন্য, ntpdateসাধারণত আপনাকে বলে যে এটি কী করেছে, বা সম্ভবত তা করেনি।

[root@flask rc.d]# ntpdate dagoo
12 Aug 10:04:03 ntpdate[20585]: adjust time server 10.0.0.15 offset -0.042285 sec

এনটিপি ডিমন, ntpdনিয়মিত চলে এবং এনটিপি সার্ভারকে (সাধারণত কনফিগার করা /etc/ntp.conf) প্রতিবার প্রায়শই জিজ্ঞাসা করে। আপনাকে প্রতি 5 মিনিটে আপনার স্ক্রিপ্টটি চালানো উচিত নয়। ntpdateসার্ভারের সাথে মেশিনটিকে কাছাকাছি সিঙ্কে নিয়ে আসা উচিত ntpdএবং এটি ব্যাকগ্রাউন্ডে চলবে এবং সিঙ্কে রাখবে। এনটিপিডি চেষ্টা করে এমন ব্যবধানটি সেট করে না আপনি এটি সার্ভার থেকে স্থানীয় ক্লক ড্রিফটগুলি এবং সার্ভারের সাথে সংযোগের গুণগত মানের উপর ভিত্তি করে ব্যবধানটি সামঞ্জস্য করে।

তথ্য হিসাবে ntpdcকী ntpdরাখে তা দেখতে আপনি নামক একটি প্রোগ্রাম ব্যবহার করতে পারেন :

1 % ntpdc 
ntpdc> peers
     remote           local      st poll reach  delay   offset    disp
=======================================================================
*min-time-01.ine 10.0.0.15        1 1024  377 0.07047  0.014673 0.14360
=dns-01.esd189.o 10.0.0.15        2 1024  377 0.07587  0.022277 0.13660
ntpdc>

আমি মনে করি যে আপনি সাধারণত যে নম্বরটি আগ্রহী তা হ'ল "অফসেট", এটি সার্ভারের ঘড়ি থেকে আপনার স্থানীয় ঘড়িটি কয়েক সেকেন্ড বন্ধ।

"পিয়ার্স" কমান্ডের রাজ্যগুলির manপৃষ্ঠা হিসাবে ntpdc:

the current estimated delay, offset and dispersion of the peer, all in seconds.

সুতরাং, পরিষ্কারভাবে, "অফসেট" কয়েক সেকেন্ডের মধ্যে।

এটি প্রদর্শিত হয় যা ntpdcপ্রত্যাশিত, প্রতিস্থাপিত ntpqntpqএকটি "পিয়ার্স" ইন্টারেক্টিভ কমান্ড রয়েছে যা মিলসেকেন্ডে "অফসেট" দেয়। আমার রেডহ্যাট সার্ভারে উভয়ই রয়েছে ntpdcএবং ntpqতাই আপনাকে সাবধান হওয়া দরকার।


গ্রেট! তবে আমার প্রশ্নের একটি অস্পষ্ট অংশ রয়েছে। আমি একটি সি প্রোগ্রামে একটি শেল স্ক্রিপ্ট কার্যকর করতে যাচ্ছি। এবং রিটার্নের মানটি পরীক্ষা করতে চেয়েছিল (সম্ভবত আমি সিস্টেমটি ("শেলসক্রিপ্ট") ব্যবহার করব)। আপনার উত্তরটি আমাকে একটি ধারণা দেয় যে আমাদের এনটিপিডি-র জন্য বিরতি স্থাপন করা উচিত নয় এবং কেবলমাত্র আমি এনটিপি সার্ভারটি পরিবর্তন করতে চাই, আমাকে এনটিপি কোডফোন ফাইল সম্পাদনা করতে হবে। আপনি কী আমাকে এনটিপিডি সার্ভারের সাথে এনটিপিডি কাজ করে তা বলতে পারেন? আমি কি করতে পুনর্সূচনা ntpd ডেমন সম্পাদনা ntp.conf ফাইল (আবার ব্যবহার করে পরে শেল স্ক্রিপ্ট )
দেখেন

এনটিপিডি হ'ল ডেমন প্রক্রিয়া - এটি অবিচ্ছিন্নভাবে চলমান। এটি স্থির করে যে বর্তমান সময়ের জন্য কোনও সার্ভারকে কতবার জিজ্ঞাসা করতে হবে এবং স্থানীয় ঘড়িটি কীভাবে প্রবাহিত হবে তার উপর ভিত্তি করে স্থানীয় ঘড়িটি কতবার এবং কত পরিবর্তন করতে হবে: আপনি প্রকৃত কোনও বিরতিতে নিয়ন্ত্রণ করতে পারবেন না। এনটিপিডি পটভূমিতে চলে। একটি এনটিপি সার্ভার পরিবর্তন করতে, আপনি /etc/ntp.conf সম্পাদনা করুন এবং এনটিপিডি শুরু করুন t
ব্রুস এডিগার

আমার এটিও উল্লেখ করা উচিত যে আপনার পোস্ট করা কোডের খণ্ডটি বুট চলাকালীন রানলেভেল 3 বা তার বেশি রান করা উচিত। ntpdate সিস্টেম ঘড়ি সেট করে, তারপরে এনটিপিডি ডিমন প্রক্রিয়াতে পরিণত হয় এবং ক্লকটি সার্ভারের সাথে সিঙ্ক করে রাখে। সাধারণত, আপনি "ঘড়ি সেট করতে" এই 2 লাইন কোডটি চালান না।
ব্রুস এডিগার

আমি বুঝতে পেরেছি. এনটিপিডেট সম্পর্কে কীভাবে যখন এটি ভুল এনটিপসারবার (উদাহরণস্বরূপ) পায় এবং সঠিকভাবে কাজ না করে। আমি কীভাবে এটি শেল স্ক্রিপ্ট থেকে জানতে পারি?
দেখেন

7

ntp-wait এই সমস্যার জন্য তৈরি করা হয়েছিল।

এর সাথে পাঁচ মিনিট man ntp-waitএবং আপনার প্রস্তুত হওয়া উচিত ...


আমি ডিবিয়ানে এনটিপি-ওয়েট পেয়েছি, তবে সেন্টোতে নেই। সাহায্য করুন !
ম্যাসিমো

2

আমি @ বিলথোর বাশ স্ক্রিপ্টে যোগ করেছি এনটিপিডিস্ট্যাট প্রস্থান কোড> 0:

#!/bin/bash
ntpstat > /dev/null
if [ $? -ne 0 ]; then
        echo "NTPD not synchronized - Please investigate"
        exit 1
fi
limit=1000   # Set your limit in milliseconds here
offsets=$(ntpq -nc peers | tail -n +3 | cut -c 62-66 | tr -d '-')
for offset in ${offsets}; do
    if [ ${offset:-0} -ge ${limit:-100} ]; then
        echo "An NTPD offset is excessive - Please investigate"
        exit 1
    fi
done
# EOF

[আপডেট] যেহেতু এনটিপিকিউ আউটপুট ব্যবহার করে স্ক্রিপ্টটি লার্জ অফসেটের জন্য অফসেটযুক্ত ছিল না (অফসেটের 4 টিরও বেশি অঙ্ক) আমি কেবল এনটিপিস্ট্যাট ব্যবহার করে একটি নতুন সংস্করণ চেষ্টা করেছি:

#!/bin/bash
ntpstat > /dev/null
if [ $? -gt 0 ]; then
        echo "NTPD not synchronized - Please investigate"
        exit 1
fi
limit=1000   # Set your limit in milliseconds here
#offsets=$(ntpq -nc peers | tail -n +3 | cut -c 62-66 | tr -d '-')
#offsets=$(ntpq -nc peers | tail -n +3 | tr -s ' ' | cut -d ' ' -f 9 | tr -d '-' |tr -d '.')
offsets=$(ntpstat | tail -n +2 | head -n 1 | cut -c 27- | tr -d ' ms')
for offset in ${offsets}; do
    if [ ${offset:-0} -ge ${limit:-100} ]; then
        echo "NTPD offset is excessive: ${offset:-0} [ms] > ${limit:-100} [ms] - Please investigate"
        exit 1
    fi
done
# EOF`enter code here`

2

নিম্নলিখিত ইউনিক্স পাইপলাইনের মাধ্যমে এনটিপি অফসেট পাওয়া যাবে:

/usr/sbin/ntpq -pn | /usr/bin/awk 'BEGIN { offset=1000 } $1 ~ /^\*/ { offset=$9 } END { print offset }'

নিম্নলিখিত ইউনিক্স পাইপলাইনের সাথে এনটিপি পিয়ার গণনা পাওয়া যাবে:

/usr/sbin/ntpq -pn | egrep -c '^\*|^\+'

জন্য এনটিপি offet আমরা ব্যবহার করুন:

  • সতর্কতা> 250 মি
  • সমালোচনা> 500 মি

জন্য এনটিপি পিয়ার গণনা আমরা ব্যবহার করুন:

  • কোন সতর্কতা প্রান্তিক
  • সমালোচনা <1

জাব্বিক্স-প্রস্তুত এনটিপি মনিটরিং কনফিগারেশন (উত্স: জয়েন্ট):

# NTP
UserParameter=ntp.offset,/usr/sbin/ntpq -pn | /usr/bin/awk 'BEGIN { offset=1000 } $1 ~ /^\*/ { offset=$9 } END { print offset }'
UserParameter=ntp.peers,/usr/sbin/ntpq -pn | egrep -c '^\*|^\+'

নাগিওস প্রস্তুত এনটিপি মনিটরিং প্লাগইনগুলি:

check_ntp_offset:

#!/bin/bash
# thresholds
thresh_warn=250
thresh_crit=500

# metric
ntp_offset=$(/usr/sbin/ntpq -pn | /usr/bin/awk 'BEGIN { offset=1000 } $1 ~ /^\*/ { offset=$9 } END { print offset }')

# Exit codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

if [[ ! "$ntp_offset" =~ ^[0-9]+$ ]] ; then
   # NTP offset could not be read successfully
   echo "NTP OFFSET UNKNOWN - $ntp_offset"
   exit $STATE_UNKNOWN
elif [[ "$ntp_offset" -gt "$thresh_crit" ]] ; then
   # NTP offset is higher than the critical threshold
   echo "NTP OFFSET CRITICAL - ${ntp_offset}ms (> ${thresh_crit}ms)"
   exit $STATE_CRITICAL
elif [[ "$ntp_offset" -gt "$thresh_warn" ]] ; then
   # NTP offset is higher than the warning threshold
   echo "NTP OFFSET WARNING - ${ntp_offset}ms (> ${thresh_warn}ms)"
   exit $STATE_WARNING
else
   # NTP offset is within thresholds
   echo "NTP OFFSET OK - ${ntp_offset}ms (< ${thresh_warn}ms)"
   exit $STATE_OK
fi

check_ntp_peers:

#!/bin/bash
# thresholds
thresh_warn=1
thresh_crit=1

# metric
ntp_peers=$(/usr/sbin/ntpq -pn | egrep -c '^\*|^\+')

# Exit codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

if [[ ! "$ntp_peers" =~ ^[0-9]+$ ]] ; then
   # NTP peers could not be read successfully
   echo "NTP PEERS UNKNOWN - $ntp_peers"
   exit $STATE_UNKNOWN
elif [[ "$ntp_peers" -lt "$thresh_crit" ]] ; then
   # NTP peers is lower than the critical threshold
   echo "NTP PEERS CRITICAL - $ntp_peers (< $thresh_crit)"
   exit $STATE_CRITICAL
elif [[ "$ntp_peers" -lt "$thresh_warn" ]] ; then
   # NTP peers is lower than the warning threshold
   echo "NTP PEERS WARNING - $ntp_peers (< $thresh_warn)"
   exit $STATE_WARNING
else
   # NTP peers is within thresholds
   echo "NTP PEERS OK - $ntp_peers (> $thresh_warn)"
   exit $STATE_OK
fi

আমার সত্যিই নাগিও স্ক্রিপ্টগুলিতে সতর্কতা এবং সমালোচনামূলক প্রান্তটি -w এবং -c দিয়ে কনফিগারযোগ্য হওয়া উচিত। এগুলি ছাড়া তারা সত্যিই সম্পূর্ণ প্লাগইন-প্রস্তুত নয়। এখানে একটি টিউটোরিয়ালে সে সম্পর্কে আরও গাইডেন্সন: http://www.kernel-panic.it/openbsd/nagios/nagios6.html


1

ক্রোনিকে আপনার ব্যবহারের কেস এনটিপিডি (নেটওয়ার্ক এবং মেশিন চালু / বন্ধ, সাসপেন্ড ইত্যাদি) চেয়ে ভাল পরিচালনা করার জন্য দাবি করা হয়েছে। দেখ

http://fedoraproject.org/wiki/Features/ChronyDefaultNTP

আর কেন আমি ক্রোননিটি ভাল বলে মনে করি: এটি আমার ফেডোরা মেশিনে প্রাক ইনস্টলড হয়েছিল এবং এটি নিয়ে আমার কোনও সমস্যা হয়নি (এটি এখন বছরের পর বছর ধরে ব্যবহৃত হয়েছে)। আমি অতীতে কখনও এনটিপিডির সাথে সমস্যা ছিল না তবে আপনি যে লিঙ্কটি দিয়েছিলেন তা যদি আপনি পড়ে থাকেন তবে কেন মেশিনে সর্বদা অবিরামের জন্য ক্রোনী আরও ভাল as সে সম্পর্কে কিছু তথ্য রয়েছে। এ কারণেই আমি চেষ্টা করার জন্য অপটিকে পরামর্শ দিয়েছিলাম, এটি তার পক্ষে আরও ভাল কাজ করতে পারে বা নাও পারে। সুতরাং এনটিপিডিকে খুব বেশি টিউনিং করার আগে চেষ্টা করার জন্য এটি অন্য একটি ভাল বিকল্প try


1
আপনি যদি আপনার যুক্তিবাদী হিসাবে
ডাউনটি করেন

ক্রোনিকে কেন ভাল মনে হয়?
dfc

@ ডিএফসি, এটি আমার ফেডোরা মেশিনে প্রাক-ইনস্টল করা হয়েছিল এবং এটি নিয়ে আমার কোনও সমস্যা হয়নি (এটি এখন বছরের পর বছর ধরে ব্যবহৃত হয়েছে)। আমি অতীতে কখনও এনটিপিডির সাথে সমস্যা ছিল না তবে আপনি যে লিঙ্কটি দিয়েছিলেন তা যদি আপনি পড়ে থাকেন তবে কেন মেশিনে সর্বদা অবিরামের জন্য ক্রোনী আরও ভাল as সে সম্পর্কে কিছু তথ্য রয়েছে। এ কারণেই আমি চেষ্টা করার জন্য অপটিকে পরামর্শ দিয়েছিলাম, এটি তার পক্ষে আরও ভাল কাজ করতে পারে বা নাও পারে। সুতরাং এনটিপিডিকে খুব বেশি টিউনিং করার আগে চেষ্টা করার জন্য এটি অন্য একটি ভাল বিকল্প try
akostadinov 10

বরং এই উত্তরটি নিজেই যুক্ত করুন। এটি যথেষ্ট মূল্যবান এবং আপনি সম্ভবত ভোটটি বিপরীত পেতে পারেন।
tshepang

আপনার উত্তরটি প্রকৃত প্রশ্নের সাথে মেলে না, আমার মতে প্রশ্নটিতে মন্তব্য করার পক্ষে এটি আরও উপযুক্ত।
জাইমে হাবলুটজেল

1
#!/bin/bash

limit=100   # Set your limit in milliseconds here

offsets=$(ntpq -nc peers | tail -n +3 | awk '{print $9 }' | tr -d '-')

for offset in ${offsets}; 
do

    if [ ${offset:-0} -ge ${limit:-100} ];
    then
        echo "An NTPD offset is excessive - Please investigate"

        exit 1

    fi  
done

0
#!/usr/bin/bash
#set -x
NTPLIMIT=100   # Set your NTPLIMIT in milliseconds here
offsets=$(ntpq -nc peers | tail -3 | cut -c 62-66 | tr -d '-')
for offset in ${offsets}; do
    if [ ${offset:-0} -ge ${NTPLIMIT:-100} ]; then
        echo "An NTPd offset is excessive Please investigate" exit;
        else
                echo "NTP is within 0.1 second of time server"
                exit;
        fi
done

উপরের উত্তরটি একই, তবে সামান্য পরিবর্তনের সাথে পূর্ববর্তী কমান্ডটি যদি অনেক অফসেটের জন্য if স্টেটমেন্ট চালায়, অর্থাত্ যদি অফসেটটি 3 হয় তবে এটি এনটিপি বন্ধ হবে তার আগে 0.1 এর মধ্যে .... 3 বার প্রিন্ট করবে। আপনার যদি এমন একটি সার্ভার থাকে যা সিঙ্ক থেকে অনেক দূরে। লুপটি অপসারণ করার একটি উপায় সম্ভবত রয়েছে ...

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