Linux

Nagios 中的“長期服務輸出”由於某種原因而被扼殺

  • February 2, 2014

根據此頁面,限制$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。

如果需要,您可以在原始碼中提高此限制並重新編譯。它MAX_PACKETBUFFER_LENGTH在 include/common.h 中定義:

include/common.h:#define MAX_PACKETBUFFER_LENGTH    1024

您可能還必須修改 check_nrpe 以匹配新大小。這些更改也記錄在這個舊論壇討論中。

或者,您可能對來自 Opsview 的添加了類似功能的更新檔感興趣。

有關詳細資訊,請參閱此隨機部落格的“協議”部分

引用自:https://serverfault.com/questions/568825