NRPE локально возвращает 0, но в Icinga возвращает 1?

Вопрос или проблема

У меня есть простой скрипт на Python, который проверяет, существует ли файл:

[me@myserver ~]$ sudo -H -u nrpe bash -c 'python3 /opt/nagios/nagios-plugins/check_illumio'
[sudo] пароль для me:
0
[me@myserver ~]$ cat /opt/nagios/nagios-plugins/check_illumio
#!/usr/bin/python3
import os

value = os.path.isfile('/tmp/illumio_working')
if value:
    print("0")
else:
    print("1")

Тем не менее, в Icinga я всегда получаю результат “1”.
вывод 1

Вот плагин nrpe:

[me@myserver ~]$ cat /etc/nrpe.d/check_illumio_ven_ctl_connectivity.cfg
command[check_illumio_ven_ctl_connectivity]=/opt/nagios/nagios-plugins/check_illumio

Что я здесь упустил? Могу ли яcinga читать строковое значение 0 или 1?

Ответ или решение

Вопрос, который вы подняли, касается различий в выводе скрипта, используемого для проверки существования файла, при его запуске локально и через Icinga с использованием NRPE. Рассмотрим основные аспекты проблемы и возможные решения.

Проблема: Неправильный статус проверки в Icinga

Вы указали, что при запуске скрипта напрямую из командной строки с использованием пользователя nrpe возврат составляет 0 (файл существует), в то время как при выполнении через Icinga результат всегда 1 (файл не существует). Давайте проанализируем возможные причины этого поведения.

Возможные причины проблемы

  1. Путь к файлу:
    Убедитесь, что файл /tmp/illumio_working доступен для пользователя, от имени которого работает NRPE. При запуске через Icinga может использоваться другой путь или контекст выполнения, который не имеет доступа к этому файлу.

  2. Права доступа:
    Проверьте права доступа к файлу /tmp/illumio_working. Убедитесь, что пользователь NRPE (обычно это пользователь nrpe) имеет права на чтение. Выполните команду ls -l /tmp/illumio_working и убедитесь, что права соответствуют требованиям.

  3. Конфигурация NRPE:
    Убедитесь, что ваш NRPE сервер правильно сконфигурирован для выполнения команд. Ваша команда должна корректно прописываться в файл конфигурации NRPE, который вы уже указали. Ваша строка:

    command[check_illumio_ven_ctl_connectivity]=/opt/nagios/nagios-plugins/check_illumio

    должна быть правильно интерпретирована. Проверьте, нет ли синтаксических ошибок и что путь к скрипту корректен.

  4. Запуск NRPE:
    Иногда, если NRPE не перезапускается после внесения изменений в конфигурацию, это может привести к тому, что изменения не вступают в силу. Выполните команду для перезапуска службы NRPE:

    sudo systemctl restart nrpe
  5. Логи NRPE:
    Проверьте логи NRPE для выявления ошибок. Обычно логи можно найти по следующему пути:

    /var/log/syslog

    или

    /var/log/nagios/nrpe.log

    Логи могут содержать подсказки о том, куда может не доходить выполнение скрипта.

  6. Проблема с интерпретацией выхода:
    Убедитесь, что Icinga правильно интерпретирует выходные данные скрипта. Хотя Icinga может обрабатывать цифровые значения, убедитесь, что формат вывода вашего Python-скрипта соответствует требованиям. Рассмотрим небольшой рефакторинг, чтобы скрипт возвращал не числовое значение, а текстовый статус:

    #!/usr/bin/python3
    import os
    
    if os.path.isfile('/tmp/illumio_working'):
       print("OK - File exists")
       exit(0)
    else:
       print("CRITICAL - File does not exist")
       exit(2)  # Возвращаем 2 для состояния "Критическое"

Заключение

Для диагностики и устранения проблемы следует проверить пути, права, конфигурацию NRPE, перезапуск службы и логи. После всех манипуляций и тестов, попробуйте снова запустить проверку в Icinga. Надеюсь, эти рекомендации помогут вам разрешить вашу проблему с NRPE и Icinga.

Оцените материал
Добавить комментарий

Капча загружается...