Nagios NRPE не читает пользовательский плагин Python, который работает из командной строки
Я создал собственный плагин для NRPE в Python 3. Сценарий запускается, как и ожидалось, когда я запускаю его из командной строки как root и когда я запускаю его как пользователь nagios. (У меня раньше была проблема, когда у пользователя nagios не было разрешений, но я исправил это файл sudoers). У меня есть Arduino Uno, берущий вход от датчика ветра и выводящий скорость как тип float на последовательный монитор. Скрипт Python на моем Raspberry Pi (по аналогии с Debian 9) читает последовательный вывод и определяет, находится ли скорость в определенном диапазоне, а затем завершается с соответствующим кодом. Вот скрипт Python:
#!/usr/bin/python3
import serial
import sys
import time
port = '/dev/ttyACM0'
baud = 9600
ser = serial.Serial(port,baud)
time.sleep(1) #allow time to connect with serial
def read_sensor():
i = 0
MPH_list = [] #used to find average of wind speed
while i < 5:
try:
speed = ser.readline()
speed = speed.decode("utf-8")
MPH_list.append(float(speed))
i += 1
except:
print('Failed to read Serial Monitor')
sys.exit(3) #unknown exit status
avgMPH = sum(MPH_list) / len(MPH_list) #average wind speed
print("%.2f MPH | 'Wind Speed'=%.2f" % (avgMPH,avgMPH)) #speed | performance data
if avgMPH < float(sys.argv[1]):
exit_code = 0
elif avgMPH >= float(sys.argv[1]) and avgMPH < float(sys.argv[2]):
exit_code = 1
elif avgMPH >= float(sys.argv[2]):
exit_code = 2
else:
exit_code = 3
return exit_code
sys.exit(read_sensor())
Когда у меня есть код, как указано выше, я получаю следующий ответ в Nagios:
Но когда я перехожу из float(sys.argv[1])
в 1.00
он выводит правильно как:
Мне нужно иметь возможность использовать sys.argv[], чтобы я мог передавать аргументы из Nagios.
По какой-то причине он всегда выходит с кодом ошибки "1" (предупреждение) и никогда не вводит оператор if при запуске с сервера nagios. Когда я запускаю программу из командной строки, она отлично работает.
Вывод должен выглядеть примерно так: 0.08 MPH | 'Wind Speed'=0.08
где все после канала игнорируется в Nagios, потому что он идет на создание графа перф данных.
Вот некоторые другие вещи, которые могут помочь: nrpe.cfg defenition:
command[check_MPH]=/usr/bin/sudo /usr/local/nagios/libexec/check_MPH.py $ARG1$ $ARG2$
командная строка, отправленная с nagios:
$USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
где $ARG1$ это 'check_MPH', а $ARG2$ это -a'-w 1.00 -c 15.00'