Nagios NTP Time: UNKNOWN: Lookup failure для хоста $ ARG1 $ (us.pool.ntp.org)

В настоящее время мы используем Nagios для мониторинга наших производственных серверов на моем рабочем месте. Наш экземпляр Nagios настроен на сервере Linux, где мы отслеживаем машины как Linux, так и Windows.

Я уже довольно давно столкнулся со следующей проблемой Nagios, связанной с NTP Time на нескольких наших серверах Windows:

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)? Если так, мне просто любопытно, почему на некоторых серверах возникают проблемы с разрешением этого хоста, а на других - нет? Я использую ту же команду на многих других серверах без проблем.

Следует отметить, что все другие операторы мониторинга работают нормально на серверах, на которых возникла эта проблема (дисковое пространство, использование ЦП, использование ОЗУ и т. Д.). Кажется, мне просто мешает команда NTP.

У меня NTP настроен таким же образом на многих других серверах, но у меня нет этой проблемы, поэтому я не понимаю, что может вызывать эту проблему.

Кто-нибудь сталкивался с подобной ошибкой раньше?

Пожалуйста дайте мне знать, если вам потребуется дополнительная информация, и я буду рад уточнить.

Спасибо!

РЕДАКТИРОВАТЬ 1: Если это вообще поможет, я могу nslookup 'us.pool.ntp.org' от пострадавших серверы. Таким образом, серверы, на которых возникают проблемы, могут разрешить это 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
задан 1 May 2018 в 16:36
1 ответ

Я наконец смог заставить эти ошибки NTP исчезнуть.

Во-первых, поскольку у нас включен брандмауэр Windows, я разблокировал порт, необходимый для проверки времени NTP, в настройках исходящего соединения (123). Я заметил, что это проблема, потому что я попытался запустить свой файл check_windows_time.bat из командной строки и получил ошибку.

Благодарность пользователю 'Sorcha' из приведенных выше комментариев за предложение провести это тестирование.

Затем я сравнил проблемный экземпляр NSC.ini с версией, которая, как я знал, работает правильно. Между рабочим файлом .ini и серверами, на которых возникли проблемы, было несколько различий. Я изменил проблемные файлы .ini, чтобы они соответствовали рабочему файлу, и перезапустил службу NSClient ++.

Я также перезапустил Nagios. Через некоторое время мои ошибки исчезли!

Спасибо за вашу помощь.

0
ответ дан 3 December 2019 в 13:57

Теги

Похожие вопросы