В соответствии с эта страница предел $LONGSERVICEOUTPUT$
составляет 4 КБ, но в моем случае он перестает показывать остальную часть вывода после 970 байт вывода (26 строк), где есть несколько новых строк и нет длинных строк. Я использую NRPE 2.15 и Nagios 3.5.1.
Вопрос
Есть идеи, что не так?
Плагин My 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 может обрабатывать 4 КБ вывода от плагинов, но NRPE по умолчанию ограничен 1 КБ.
Вы можете увеличить это ограничение в исходном коде и перекомпилировать, если хотите. Это определяется как MAX_PACKETBUFFER_LENGTH
в include / common.h:
include/common.h:#define MAX_PACKETBUFFER_LENGTH 1024
Возможно, вам также придется изменить check_nrpe, чтобы он соответствовал новому размеру. Эти изменения задокументированы в это старое обсуждение форума, слишком.
В качестве альтернативы вам может быть интересно этот патч от Opsview, который добавляет аналогичную функциональность.
Видеть Раздел "Протокол" этого случайного блога для подробностей.