Status return 使用 sed 的 nagios 插件

Status return nagios plugins using sed

我在 nagios "check_icmp" 中有一个插件 return 4 个值,如果命令可以 ping 请求的主机,但是如果 ping 失败我只得到 1 个值,所以我使用了以下命令:

'/usr/lib64/nagios/plugins/check_icmp -w 1000.0,20% -c 1400.0,60% -H 8.8.4.5 -m 5 | sed 's/pl=100%;20;60;0;100/rta=nan;;;; rtmax=nan;;;; rtmin=nan;;;; pl=100%;20;60;0;100/g'

它 returns

CRITICAL - 8.8.4.5: rta nan, lost 100%|rta=nan;;;; rtmax=nan;;;; rtmin=nan;;;; pl=100%;20;60;0;100

而不是

CRITICAL - 8.8.4.5: rta nan, lost 100%|pl=100%;20;60;0;100

所以它在主机上工作得很好但是如果我把这个命令放在nagiosql中当前状态保持绿色"OK"即使ping失败:

https://ibb.co/LCzvXrV

我猜想,尽管结果是 "CRITICAL",但你得到 OK 的原因是因为 Nagios 唯一关心的是命令的 return code 运行(也称为退出代码)。我猜想 sed 有最后一个词,以 return 代码 0 退出,这意味着 "everything went fine",它显然做到了:对于 sed.

因为你没有解释为什么你在做这些,我无法评论这是否是个好主意,但看起来很奇怪在我看来,在你的检查命令中包含一个到 sed 的管道。我了解到您正在清理由插件 return 编辑的 performance data,但为什么呢?

Nagios 旨在将 return 代码解释为您的检查状态,这就是它的方式。由于此插件行为,您看到的任何问题都可以通过另一种方式解决,而无需 运行 sed 魔法检查,您可能会或可能不会从中获得预期结果。还值得注意的是,如果您将其插入到 RRD 文件中,弄乱值的顺序或数量可能会让人头疼,所以我真的不推荐它。

作为未来的建设性建议,请在提出这些问题时包括是什么让您找到当前的解决方案,因为您永远不知道这是否真的是解决您最初问题的最佳方法。这通常称为 XY Problem.