nagios - 内存配置

nagios - 内存配置

我正在尝试配置 nagios 在 ubuntu 服务器上执行内存检查。我已经有了基本配置,但当尝试启动 nagios 时,会显示以下错误消息:

主机“xxxx”的服务“当前内存使用情况”中指定的服务检查命令“check_mem”未在任何地方定义!

除了commands.cfg之外,还有什么地方可以定义要执行的命令?

提前致谢,致以最诚挚的问候!

答案1

芮:

好的,这更清楚了。答案是 NAGIOS 可以在其任何配置文件中采用任何有效的配置语句,并且这些语句的数量可以不受限制。我有一个带有 136 个配置文件的 NAGIOS 服务器;其中任何一个都可以包含命令定义。

因此,如果您有一个正在运行的配置,它在某处定义,但不在commands.cfg中,那么坏消息是它可能在其任何配置文件中,而这些文件可以位于任何地方。

如果我想找到它,我会查看 nagios.cfg 以查看配置文件所在的目录,然后自动执行查找过程,也许使用

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

并查看找到什么匹配项。

答案2

你很可能想使用nagios nrpe 服务器在受监控的机器上并定义哪个插件应该执行此检查。

顺便说一句,也许你应该检查交换使用情况?

答案3

我找不到合适的脚本来检查内存,所以我写了下面的脚本。我按照上面的建议将它与 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

答案4

问题是 nagios 服务器找不到check_nrpe_1arg的定义。您可以在其他地方定义命令,例如 nagios-plugins

这里我通过插件中的define命令来解决问题

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_nrpecheck_nrpe_1arg,必须确保存在。在 Debian 系统中,您可以在 Nagios 服务器上/usr/lib/nagios/plugins/check_nrpe安装包。nagios-nrpe-plugins

相关内容