Назад | Перейти на главную страницу

nagios - конфигурация памяти

Я пытаюсь настроить nagios для проверки памяти на сервере ubuntu. У меня уже есть базовая конфигурация, но при попытке запустить nagios отображается следующее сообщение об ошибке:

Команда проверки службы 'check_mem', указанная в службе 'Текущее использование памяти' для хоста 'xxxx', нигде не определена!

Есть ли какое-нибудь место, кроме commands.cfg, для определения выполняемой команды?

Заранее спасибо, С уважением!

скорее всего вы захотите использовать nagios nrpe сервер на контролируемой машине и определите, какой плагин должен выполнять эту проверку.

Кстати, может, вам лучше проверить использование свопа?

Руи:

хорошо, это намного яснее. Ответ заключается в том, что NAGIOS может принимать любой действительный оператор конфигурации в любом из своих файлов конфигурации, и их может быть неограниченное количество. У меня есть сервер NAGIOS со 136 файлами конфигурации; любой из них может содержать определение команды.

Так что, если у вас есть работающая конфигурация, которая где-то определена, но не в commands.cfg, то плохая новость в том, что она может быть в любом из ее файлов конфигурации, а они могут быть где угодно.

Если бы я хотел найти его, я бы посмотрел в nagios.cfg, чтобы увидеть, в каких каталогах находятся файлы конфигурации, а затем автоматизирую процесс его поиска, возможно, с помощью

find /config/directory1 /config/directory2 /you-get-the-idea  -type f -exec grep check_mem {} /dev/null \;

и посмотрите, какие совпадения найдутся.

Я не смог найти достойного скрипта для проверки памяти, поэтому написал следующее. Я использую его с nrpe, как было предложено выше.

Определение службы на сервере в конфигурации хоста:

define service {
       use                     generic-service
       host_name               <hostname>
       service_description     Memory Usage
       check_command           check_nrpe_1arg!check_memory
}

Это необходимо определить в /etc/nagios/nrpe.cfg на клиенте, с поправками на значения, которые вы хотите проверить:

command[check_memory]=/usr/lib/nagios/plugins/check_memory.sh -w 85 -c 90

Пример вывода:

#:~$ ./check_memory.sh -w 80 -c 90
Memory OK. 44% used.


#:~$ ./check_memory.sh -w 40 -c 50
Memory WARNING. 44% used.

Сценарий:

#!/bin/bash
#
# Script to check memory usage on Linux. Ignores memory used by disk cache. 
#
# Requires the bc command
#
print_help() {
    echo "Usage:"
    echo "[-w] Warning level as a percentage" 
    echo "[-c] Critical level as a percentage" 
    exit 0
}

while test -n "$1"; do
    case "$1" in
        --help|-h)
            print_help
            exit 0
            ;;
        -w)
            warn_level=$2
            shift
            ;;
        -c)
            critical_level=$2
            shift
            ;;
        *)
            echo "Unknown Argument: $1"
            print_help
            exit 3
            ;;
    esac
    shift
done

if [ "$warn_level" == "" ]; then
    echo "No Warning Level Specified"
    print_help
    exit 3;
fi

if [ "$critical_level" == "" ]; then
    echo "No Critical Level Specified"
    print_help
    exit 3;
fi


free=`free -m | grep "buffers/cache" | awk '{print $4}'`
used=` free -m | grep "buffers/cache" | awk '{print $3}'`

total=$(($free+$used))

result=$(echo "$used / $total * 100" |bc -l|cut -c -2)

if [ "$result" -lt "$warn_level" ]; then
    echo "Memory OK. $result% used."
    exit 0;
elif [ "$result" -ge "$warn_level" ] && [ "$result" -le "$critical_level" ]; then
    echo "Memory WARNING. $result% used."
    exit 1;
elif [ "$result" -gt "$critical_level" ]; then
    echo "Memory CRITICAL. $result% used."
    exit 2;
fi

Проблема в том, что сервер nagios не может найти check_nrpe_1argОпределить. Есть еще где-то, где вы можете определить команды, например, nagios-plugins

Здесь я решаю проблему, определяя команду в плагинах

deploy@code:/etc/nagios-plugins/config$ pwd
/etc/nagios-plugins/config
deploy@code:/etc/nagios-plugins/config$ cat check_nrpe.cfg 
# this command runs a program $ARG1$ with arguments $ARG2$
define command {
    command_name    check_nrpe
    command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a                 $ARG2$
}


# this command runs a program $ARG1$ with no arguments
define command {
    command_name    check_nrpe_1arg
    command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Использовать check_nrpe или check_nrpe_1argты должен убедиться /usr/lib/nagios/plugins/check_nrpe существует. В системе debian вы можете установить пакет nagios-nrpe-plugins на сервере nagios.