![Nagios 中的“长服务输出”因某种原因被删除](https://linux22.com/image/625098/Nagios%20%E4%B8%AD%E7%9A%84%E2%80%9C%E9%95%BF%E6%9C%8D%E5%8A%A1%E8%BE%93%E5%87%BA%E2%80%9D%E5%9B%A0%E6%9F%90%E7%A7%8D%E5%8E%9F%E5%9B%A0%E8%A2%AB%E5%88%A0%E9%99%A4.png)
根据这一页的限制$LONGSERVICEOUTPUT$
是 4kB,但就我而言,在输出 970 字节(26 行)后,它会停止显示其余输出,其中有多个换行符,没有长行。我使用 NRPE 2.15 和 Nagios 3.5.1。
问题
知道哪里出了问题吗?
我的 Nagios 插件
#!/usr/gnu/bin/sh
ZPOOL="/sbin/zpool"
if ! [ -x $ZPOOL ]; then
echo "CRITICAL: $ZPOOL not found or not executable."
exit 3
fi
for DEVICE in $($ZPOOL list -H -o name); do
HEALTH="$($ZPOOL list -H -o health $DEVICE)"
case "$HEALTH" in
ONLINE)
T="OK: $DEVICE ONLINE. "
;;
DEGRADED)
T="ERROR: $DEVICE DEGRADED"
;;
FAULTED)
T="ERROR: $DEVICE FAULTED"
;;
OFFLINE)
T="ERROR: $DEVICE OFFLINE"
;;
REMOVED)
T="ERROR: $DEVICE REMOVED"
;;
UNAVAIL)
T="ERROR: $DEVICE UNAVAIL"
;;
FAULTED)
T="ERROR: $DEVICE FAULTED"
;;
*)
T="CRITICAL: $HEALTH is an unknown zpool state for $DEVICE."
;;
esac
M+="$T"
S+="$($ZPOOL status $DEVICE)"
done
echo "$M"
echo "$S"
if grep -q CRITICAL <<< "$M"; then
exit 3
elif grep -qE 'DEGRADED|FAULTED|OFFLINE|REMOVED|UNAVAIL|FAULTED' <<< "$M"; then
exit 2
elif grep -q ONLINE <<< "$M"; then
exit 0
fi
答案1
Nagios 本身可以处理来自插件的 4k 输出,但 NRPE 默认限制为 1k。
如果需要,您可以在源代码中增加此限制并重新编译。它MAX_PACKETBUFFER_LENGTH
在 include/common.h 中定义如下:
include/common.h:#define MAX_PACKETBUFFER_LENGTH 1024
您可能还必须修改 check_nrpe,以匹配新的大小。这些更改记录在这个旧论坛讨论, 也。
或者,您可能感兴趣Opsview 的这个补丁添加了类似的功能。
看此随机博客的“协议”部分了解详情。