両方のサーバーNTPのntp状態を確認するスクリプト

両方のサーバーNTPのntp状態を確認するスクリプト

私たちはサーバークロックをNTPタイムサーバーと同期させたいと思います。このntpサーバーがタイムアウトまたはアウトソーシングされたタイムアウト(ソケットタイムアウト)内に応答しない場合は、NTP要求をタイムサービス(ハエ:ntp-p1.obspm.fr)に送信し、応答を再開するスクリプト(スクリプトbach)を設計します。します。 )たとえば、15秒後に2番目のサーバーに要求を送信します(例:besenson:ntp-p1.obspm.fr)。その人も応答しない場合は、メールで管理者に通知してください。

答え1

理想的には、NTPはデーモンとして実行され、一日中複数のサーバーと通信します。これにより、平均化と統計方法を活用して、異常値と不良サーバーを識別できます。 NTPがこのモードで実行されている場合は、そのピアに関する詳細情報をすでに維持しています。以下を実行してこのデータを表示できます。

$ ntpq -c associations
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 27930  962a   yes   yes  none  sys.peer    sys_peer  2
  2 27931  941d   yes   yes  none candidate              1
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntpserver       .GPS.            1 u  553 1024  377    0.169    0.300   0.223
+ntpserver2      10.41.200.62     2 u  193 1024  377    0.493    0.307   0.168

最後の2行の最初の文字は「カウントコード」と呼ばれ、特に興味があるかもしれません。ここに「」が表示されている場合、ピアは使用されないことを意味します。アクセスできない、または使用を妨げる別の深刻な問題があるためです。よりntpq のマニュアルページもっと学ぶ。次のようにモニタリングに接続できます。

#!/bin/bash
output=`ntpq -p | tail -n +3 | cut -d' ' -f1`

for line in $output; do
  tallycode=${line:0:1}
  host=${line:1}
  if [[ "$tallycode" == [#+\*] ]]; then
    echo "Info: Found good NTP peer $host"
    exit 0
  else
    echo "Warning: bad NTP peer $host"
  fi
done
echo "Error: None of the peers provides useful time!"
exit -1

各サーバーに対して、愚かな単一のテストを実行したい場合は、その出力を解析できますsntp -t 15 <servername>。しかし、上記のアプローチはより強力でなければなりません。

関連情報