【问题标题】:NPCD: ERROR: Executed command exits with return code '255'NPCD:错误:执行的命令退出并返回代码“255”
【发布时间】:2018-04-28 14:17:59
【问题描述】:

在更新cpanpnp4nagios/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 模块。

【问题讨论】:

    标签: perl nagios icinga2


    【解决方案1】:

    似乎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/其他地方)。希望这可以为其他人指明正确的方向。

    来自ikegami's评论

    "即使在版本 1.9721 中,第二个参数(如果提供)也必须是 数组引用。似乎唯一的行为变化是添加 输入验证。 process_perfdata.pl 有问题,而且更新 Time::HiRes 的版本让你知道。”

    【讨论】:

    • 即使在version 1.9721 中,第二个参数(如果提供)也必须是数组引用。似乎唯一的行为变化是添加了输入验证。 process_perfdata.pl 有问题,新版本的 Time::HiRes 会让你知道。
    【解决方案2】:

    即使在最新版本的 pnp4nagios 中也是一个问题。 如果您需要快速解决方法,您可以修改 pnp4nagios 脚本 process_perfdata.pl 使其始终传递数组引用,如下所示(差异输出):

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

    我已经这样做了,它似乎可以正常工作并删除非常频繁的错误消息。如果它似乎引起问题,我会在这里发帖。

    【讨论】:

      【解决方案3】:

      问题在于最新的库 Time:HiRes 1.9758 和 tv_interval 边界的第二个值。根据手册,如果省略,则使用实际时间 - 它到底是做什么的。所以你需要将此命令应用到脚本 process_perfdata.pl:

      sed -s 's/tv_interval $t0, $t1/tv_interval $t0/g' -i process_perfdata.pl

      之后一切都会正常进行。 我遇到了 CentOS8 的问题,它不提供旧版本的 HiRes 库。另一个症状是 npcd 无法创建 .pnp-internal 文件夹。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        • 2021-04-08
        相关资源
        最近更新 更多