Тайм-аут сокета NRPE через NRPE, работает как пользователь nrpe - PullRequest
0 голосов
/ 01 апреля 2019

nrpe на сервере Azure - nrpe-srvr, пользователь nrpe, выполнение сценария /usr/local/naemon/libexec/check_curl_http.php Я назову его script

Желаемый вывод после ./script -U www.google.com:

Page OK: HTTP Status Code 200 - 11099 bytest in 0.** seconds | time=0.059 size=11099

Я получаю вышеприведенный вывод, запустив скрипт из root или nrpe

Запуск sudo -u nrpe ./script -U www.google.com возвращает:

Ошибка при открытии страницы!Ошибка: не удалось подключиться к [ipv6 addr]. Сеть недоступна

Однако выполнение su - nrpe -c './script -U www.google.com' работает с желаемым результатом.

Отчеты Naemon:

CHECK_NRPE: Тайм-аут сокета через 30 секунд

Другие проверки NRPE для того же хоста работают, поэтому я думаю, что это как-то связано с выполнением пользователем этого конкретного сценария.У меня был отказ от SELinux, но я изменил контекст.Удаление контекста и установка SELinux на permissive привели к той же ошибке.Включены файлы журналов NRPE, с отладкой, но, кроме Running command, это мало что показывает.В журналах есть:

WARNING: my_system() seteuid(0): Operation not permitted

, но в документации по поддержке указано «нормальное» поведение.

1 Ответ

0 голосов
/ 03 апреля 2019

Я опубликую это на всякий случай, если у кого-то еще возникнет эта проблема, и я помечу Azure / AWS.

По сути, облачные провайдеры (в основном) имеют внутренний прокси-сервер, который хранится в переменной среды http_proxy && https_proxy. NRPE по умолчанию не использует загрузочные переменные окружения. Теперь я не знаю, есть ли опция для этого (в документации указано, что при использовании uid вместо имени пользователя (использовалось имя пользователя) есть ошибка), однако достаточно просто вызвать прокси для таких проверок.

...