NPCD: ОШИБКА: Выполненная команда завершается с кодом возврата '255' - PullRequest
0 голосов
/ 28 апреля 2018

После обновления модулей в cpan pnp4nagios / NPCD начал регистрировать следующее в моем системном журнале каждый раз, когда вызывался скрипт;

NPCD[19673]: ERROR: Executed command exits with return code '255'
NPCD[19673]: ERROR: Command line was '/etc/pnp4nagios/libexec/process_perfdata.pl -n --bulk /var/spool/icinga2/perfdata/host-perfdata.1524923929'

Похоже, что не было никаких потерь в функциональности или данных, и мои графики были заполнены, как и ожидалось, - но я спамил этим.

Запуск скрипта из cli дал такой результат;

bash-4.1$ /etc/pnp4nagios/libexec/process_perfdata.pl -n --bulk /var/spool/icinga2/perfdata/host-perfdata.1524919009 
tv_interval() 2nd argument should be an array reference at /etc/pnp4nagios/libexec/process_perfdata.pl line 218, <PDFILE> line 111

Единственный полезный google результат для этой ошибки указывает на модуль Time::HiRes.

Ответы [ 2 ]

0 голосов
/ 06 августа 2018

Это проблема даже в последней версии pnp4nagios. Если вам нужен быстрый обходной путь, вы можете изменить сценарий pnp4nagios process_perfdata.pl, чтобы он всегда передавал ссылку на массив, как показано ниже (вывод diff):

 sub main {
     my $job = shift;
     my $t0 = [gettimeofday];
-    my $t1;
+    my @t1=();
+    my $t1=\@t1;
     my $rt;
     my $lines = 0;
     # Gearman Worker

Я сделал это, и, кажется, все работает нормально и удаляет очень частое сообщение об ошибке. Я вернусь сюда, если это может вызвать проблемы.

0 голосов
/ 28 апреля 2018

Похоже, что текущая версия Time::HiRes была / есть проблема. cpan предлагает Time-HiRes-1.9758 в качестве обновления, но, похоже, это версия, вызывающая проблему.

Чтобы устранить ошибку, мне пришлось понизить этот модуль, выполнив следующее:

make clean в папке с установленной версией (у меня был на .cpan/build/Time-HiRes-1.9758), затем выборочная версия из cpan;

cpan JHI/Time-HiRes-1.9721.tar.gz, которая установила более старую (1.9721) версию.

Перезагружен npcd и ошибки куда ушли.

Я не уверен, какая версия Time-HiRes представила эту ошибку / изменение в поведении, так как я не проходил через них и не уверен на 100%, где на самом деле может быть проблема (npcd / Time-HiRes / где-то еще ). Надеюсь, это указывает кому-то еще в правильном направлении.

Из комментария Икегами

"Даже в версии 1.9721 второй аргумент (если есть) должен быть ссылка на массив. Кажется, единственное изменение в поведении это дополнение проверки ввода. process_perfdata.pl глючит и новее версии Time::HiRes сообщат вам об этом. "

...