Nagios 中的“长服务输出”因某种原因被删除

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

答案1

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

如果需要,您可以在源代码中增加此限制并重新编译。它MAX_PACKETBUFFER_LENGTH在 include/common.h 中定义如下:

include/common.h:#define MAX_PACKETBUFFER_LENGTH    1024

您可能还必须修改 check_nrpe,以匹配新的大小。这些更改记录在这个旧论坛讨论, 也。

或者,您可能感兴趣Opsview 的这个补丁添加了类似的功能

此随机博客的“协议”部分了解详情。

相关内容