由于某种原因,Nagios的“长期服务输出”因此而受到欢迎

根据这个页面 $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 

Nagios本身可以处理来自插件的4k输出,但是默认情况下,NRPE被限制为1k。

如果你愿意,你可以在源代码中join这个限制并重新编译。 它在include / common.h中定义为MAX_PACKETBUFFER_LENGTH:

 include/common.h:#define MAX_PACKETBUFFER_LENGTH 1024 

您可能还需要修改check_nrpe以匹配新的大小。 这些更改也logging在这个旧的论坛讨论中 。

或者,您可能会对Opsview中的此修补程序感兴趣, 它会添加类似的function 。

有关详细信息,请参阅此随机博客的“协议”部分 。