Nagios 플러그인은 NRPE를 통해 명령을 실행할 수 없습니다.

Nagios 플러그인은 NRPE를 통해 명령을 실행할 수 없습니다.

핵심 상태가 OK인 다음 플러그인이 있습니다.

#!/usr/local/bin/bash

if [ "$1" = "-w" ] && [ "$2" -lt "101" ] && [ "$3" = "-c" ] && [ "$4" -lt "101" ] ; then
  warn=$2
  crit=$4

  AVAILMEMPERC=$(free -m | grep mem_avail | awk '{print $7}'| tr -d %])

  if [ ${AVAILMEMPERC} -gt $warn ] && [ ${AVAILMEMPERC} -gt $crit ];then
    echo "OK - Available Memory = $AVAILMEMPERC% | Available memory=$AVAILMEMPERC%;$warn;$crit;0;100"
    exit 0
  elif [ ${AVAILMEMPERC} -lt $warn ] && [ ${AVAILMEMPERC} -gt $crit ]; then
    echo "WARNING - Available Memory = $AVAILMEMPERC% | Available memory=$AVAILMEMPERC%;$warn;$crit;0;100"
    exit 1
  else
    echo "CRITICAL - Available Memory = $AVAILMEMPERC% | Available memory=$AVAILMEMPERC%;$warn;$crit;0;100"
    exit 2
  fi
else
  echo "$0 - Nagios Plugin for checking the available memory in a Linux system"
  echo ""
  echo "Usage:    $0 -w <warnlevel> -c <critlevel>"
  echo "  = warnlevel and critlevel is warning and critical value for alerts."
  echo ""
  echo "EXAMPLE:  $0 -w 10 -c 5 "
  echo "  = This will send warning alert when available memory is less than 10%, and send critical when it is less than 5%"
  echo ""
  exit 3
fi

원격 컴퓨터에서 로컬로 실행하면 제대로 작동합니다. 올바른 출력을 얻습니다. 그런데 Web GUI를 보면 Nagios가 변수 AVAILMEMPERC값을 추출할 수 없는 것을 알 수 있습니다.

예를 들어, 플러그인을 다음과 같이 단순화하면

#!/usr/local/bin/bash

warn=$2
crit=$4

AVAIL_MEM_PERCENTAGE="$(free -m)"

echo "OK - ${AVAIL_MEM_PERCENTAGE}"

GUI에서 볼 수 있는 유일한 출력은 다음과 같습니다.

OK -

명령줄에서 이것을 실행하면 전체 free -m출력이 표시됩니다.

다음을 시도했지만 아무것도 쓰지 않습니다. /tmp 및 파일에 777 권한을 부여했습니다.

free -m > /tmp/check_avail_memory.out

권한 문제인 것 같나요? 하지만 Nagios Core에서 실행됩니다. free를 nagios로 바꾸면 top파일에 쓸 수 있습니다.

저는 여기에서 무료로 다운받았어요http://people.freebsd.org/~rse/dist/freebsd-memory. 내가 말했듯이 원격 컴퓨터에서는 잘 작동합니다. FreeBSD의 경로가 정확하고 실행 가능한지 확인했습니다.

플러그인 출력 외에 관련 로그를 찾을 수 없습니다.

관련 정보