web-dev-qa-db-ja.com

Nagios NTP時間:不明:ホスト$ ARG1 $のルックアップに失敗しました(us.pool.ntp.org)

現在、Nagiosを使用して、職場の本番サーバーを監視しています。 Nagiosインスタンスは、LinuxマシンとWindowsマシンの両方を監視するLinuxサーバー上に構成されています。

いくつかのWindowsServerで、NTPしばらくの間、次のNagiosの問題が発生しています。

enter image description here

私に問題を与えている以下のコマンドを見てください:

enter image description here

check_windows_time!us.pool.ntp.org!3000!6000

$ ARG1 $は「us.pool.ntp.org」のようです。 「ホスト$ ARG1 $のルックアップ失敗」は何に対応しますか?これらのサーバーはNTPホスト(us.pool.ntp.org))の解決に問題がありますか?もしそうなら、一部のサーバーがこのホストの解決に問題があるのに、他のサーバーは問題がないのはなぜですか?他の多くのサーバーで同じコマンドを問題なく使用しています。

この問題が発生しているサーバーでは、他のすべての監視ステートメントが正常に機能していることに注意してください(ディスク容量、CPU使用率、RAM使用量など)。NTPコマンドが問題を引き起こしています。

他の多くのサーバーでも同じようにNTPを構成していますが、この問題は発生していないため、この問題の原因について途方に暮れています。

誰かが以前に同様のエラーを経験したことがありますか?

追加情報が必要な場合はお知らせください。明確にさせていただきます。

ありがとうございました!

編集1:それがまったく役立つ場合は、影響を受けるサーバーから「us.pool.ntp.org」をnslookupできます。したがって、問題が発生しているサーバーは、そのDNS名を解決できます。

編集2:NSC.ini'check_windows_time '構成:

check_windows_time=check_windows_time.bat $ARG1$ $ARG2$ $ARG3$

check_windows_time.bat:

@echo off
SETLOCAL
rem ***************************************************
rem Check_Windows_Time.bat
rem
rem Author: Michael van den Berg
rem Copyright 2012 - PCS-IT Services B.V. (www.pcs-it.nl)
rem
rem This Nagios plugin will check the time offset
rem against a specified time server.
rem ***************************************************

if [%1]==[] (goto usage) else (set time_server=%1)
if [%1]==[/?] (goto usage) else (set time_server=%1)
if [%2]==[] (set warn_offset=nul) else (set warn_offset=%2)
if [%2]==[$ARG2$] set warn_offset=nul
if [%3]==[] (set crit_offset=nul) else (set crit_offset=%3)
if [%3]==[$ARG3$] set crit_offset=nul

for /f "tokens=*" %%t in ('w32tm /stripchart /computer:%time_server% /samples:1 /dataonly') do set output=%%t

if not "x%output:0x80072af9=%"=="x%output%" goto Host_error
if not "x%output:0x800705B4=%"=="x%output%" goto comm_error
if not "x%output:error=%"=="x%output%" goto unknown_error
if not "x%output:)=%"=="x%output%" goto unknown_error

set time_org=%output:*, =%
set time=%time_org:~1,-9%

if %warn_offset% == nul (set warn_perf=0) else (set warn_perf=%warn_offset%)
if %crit_offset% == nul (set crit_perf=0) else (set crit_perf=%crit_offset%)
set perf_data='Offset'=%time%s;%warn_perf%;%crit_perf%;0

if %time% geq %crit_offset% goto threshold_crit
if %time% geq %warn_offset% goto threshold_warn
if %time% lss %warn_offset% goto okay
goto unknown_error

:usage
echo %0 - Nagios plugin that checks time offset against a specified ntp server.
echo.
echo Usage:    %0 ^<timeserver^> ^<warning threshold in seconds^> ^<critical threshold in seconds^>
echo Examples: %0 us.pool.ntp.org 120 300
echo           %0 my-domain-controller.local 120 300
exit /b 3

:Host_error
echo UNKNOWN: Lookup failure for Host %time_server%
exit /b 3

:comm_error
echo UNKNOWN: Unable to query NTP service at %time_server% (Port 123 blocked/closed)
exit /b 3

:threshold_crit
echo CRITICAL: Time is %time_org% from %time_server%^|%perf_data%
exit /b 2

:threshold_warn
echo WARNING: Time is %time_org% from %time_server%^|%perf_data%
exit /b 1

:okay
echo OK: Time is %time_org% from %time_server%^|%perf_data%
exit /b 0

:unknown_error
echo UNKNOWN: Unable to check time (command error)
exit /b 3

編集3:私が受け取っているエラーメッセージは、次の条件が満たされた結果であるように見えます:

if not "x%output:0x80072af9=%"=="x%output%" goto Host_error

これが何を意味するのか、またはこれをどのように解決できるのか、誰かが何か考えを持っていますか?

2
MotoDave452

私はついにこれらのNTPエラーを消すことができました。

まず、Windowsファイアウォールを有効にしているので、アウトバウンド接続設定(123)でNTP時間を確認するために必要なポートのブロックを解除しました)。実行しようとしたため、これが問題であることに気付きました。コマンドラインから「check_windows_time.bat」ファイルを取得し、エラーを受け取りました。

このテストを実行することを提案するために、上記のコメントからユーザー「Sorcha」に叫び声が出ます。

次に、問題のあるNSC.iniインスタンスを、正常に機能していることがわかっているバージョンと比較しました。動作中の.iniファイルと問題が発生しているサーバーの間にはいくつかの違いがありました。問題のある.iniファイルを作業ファイルと一致するように変更し、NSClient ++サービスを再起動しました。

Nagiosも再起動しました。しばらくすると、エラーが解消されました。

ご協力ありがとうございました。

0
MotoDave452