无法读取 nagios 核心中的 nagios 退出状态

无法读取 nagios 核心中的 nagios 退出状态

当我的一个日志文件中的错误计数超过一定限制时,我使用命令抛出特定的退出状态。命令如下:

cd /home/serveradmin/logs/ | ls -trc | grep gateway | tail -1 | xargs cat | grep error | wc -l | awk '{if($1 >= "35000"){print "Critical: ",$1;exit 2} else if ($1 >= "25000") {print "Warning: ",$1;exit 1} else {exit 0} }'

执行命令后,我使用以下命令验证了退出状态(我的命令返回退出代码 1,因为我的文件中的错误计数大于 25000):

echo $?

上述命令返回 1 作为输出。

在我的 nrpe.cfg 文件中,我定义了相同的命令,如下所示:

command[Error_Count]=cd /home/serveradmin/logs/ | ls -trc | grep gateway | tail -1 | xargs cat | grep error | wc -l | awk '{if($1 >= "35000"){exit 2} else if ($1 >= "25000") {exit 1} else {exit 0} }'

我在nagios core中定义了服务如下:

define service {
        host_name               test_vm
        service_description     Error_Count
        check_command           check_nrpe!Error_Count
        use generic-service
        check_interval          1
}

定义服务后,nagios core 无法从客户端的 nrpe.cfg 文件中定义的命令读取退出状态。

我的 nagios 仪表板中的错误返回未知状态:在此输入图像描述

答案1

作为NRPE » 故障排除 » 常见问题 - 无法读取输出说:

此错误意味着 NRPE 未返回任何字符输出。

您的命令退出时带有各种状态代码(2、1 或 0),但它不会发出任何实际输出。

https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/pluginapi.html,“插件输出规范”说:

插件至少应返回至少一种文本输出。

看到那里红色突出显示,表示所需的“文本输出”。

调整您的awk代码以在各种条件下发出某种输出:

awk '{
  if($1 >= "35000")
    { print "Greater than or equal to 35000"; exit 2} 
  else if ($1 >= "25000") 
    { print "Greater than or equal to 25000"; exit 1} 
  else 
    { print "Less than 25000"; exit 0} 
  }'

相关内容