Nagios 基本配置(用于快速添加新机器)

Nagios 基本配置(用于快速添加新机器)

我最近开始使用 Nagios 监控大约 25 台服务器(主要是虚拟服务器,还有一些独立服务器)。大多数服务器(包括 Nagios 主机本身)都运行 Ubuntu 14.04 LTS,少数运行 12.04 LTS。因此,我认为我可以使用 NRPE 来完成它。

对我来说,配置 NRPE 相当复杂。例如,对于一个简单的 check_disk 命令,我必须手动指定要检查的分区,方法是排除所有其他分区/文件系统,如下所示:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

否则,我的警告和严重阈值会立即由 sysfs、proc 或其他分区触发。

然后我查看了 Nagios 主机自身执行的基本服务监视器。它列在 /usr/local/nagios/etc/localhost.cfg 中,包含以下内容(抱歉!我不明白为什么它无法正确格式化!)

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Root Partition
check_command           check_local_disk!20%!10%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

仪表板上显示的结果如下:

惊人的

这对我来说是完美的。这正是我希望我添加的每个主机都显示的内容。与其乱用自定义命令,我到底应该如何通过 NRPE conf 文件将其“复制”到每个主机,以便我可以看到我添加的每个主机的所有这些特定服务?很明显,这已经在这里,并且已经在本地主机上运行。我正在努力弄清楚实现这一目标所需的组织。

感谢您的所有建议。

答案1

不久前,我编写了一个非常棒的 NRPE 自动安装程序脚本,我相信如果您根据自己的需求对其进行编辑,它将对您有所帮助。该脚本包含许多内置检查,这些检查将添加到每个主机的nrpe.cfg文件中。这意味着,您可以配置与您相关的检查,并确保运行该脚本的每个主机也都有这些检查,这是关于客户端的。

脚本链接:这里

关于服务器端(Nagios),您可以安装 Nagios 配置管理器(例如 NagioSQL),它将帮助您通过 GUI 以更方便的方式管理主机和服务。

不仅如此,为了确保所有主机都具有您显示的这些检查,只需创建一个包含您要监控的所有服务(检查)的服务组,然后将该服务组附加到您监控的每个主机。

让我告诉你我在公司做了什么,我想确保每台服务器都受到检查监控check_load,但由于我们公司没有硬件基准,这意味着每台服务器都有不同的规格,并且是check_load按机器中每个核心/CPU 计算的,我已经在我们的 Puppet 服务器中的“Nagios_client”模块中添加了一个,custom_fact它可以识别一台机器中有多少个处理器,并相应地配置 Nagios check_load

例如,假设 server1 有 4 个 cpu,这意味着 2.8 负载是理想的(每个 cpu 0.7)。Puppet 通过facter识别 cpu 的数量,然后编辑服务器,nrpe.cfg如下所示:

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

然后,例如在 NagioSQL 中,您可以使用“导入功能”,该功能允许您导入*.cfg将作为主机和服务加载到 Nagios 的文件。因此,您可以创建一个host.cfg文件,并通过脚本将其复制到您想要监控的每个主机,只需更改每台机器的主机名/ip,它就会带您进入更自动化的配置。

例如,在我的例子中,Puppet 能够理解它是在机器上第一次运行,然后还在host.cfgNagios 中创建了相关文件。

我相信有了 Puppet + NagioSQL,您的 Nagios 管理将会变得更加容易。

关于您在配置任何检查时遇到的困难...您可以随时编写自己的脚本并配置 Nagios 为您运行它。例如,让我们以您的check_disk命令为例,这是一个非常丰富的命令,它允许您显示对您来说不必要的所有类型的数据。

所以我遇到了同样的问题check_procs,另一个非常丰富的命令,它会给你各种各样的数据……我并不需要这些数据,所以我编写了一个简单的检查脚本,它完全满足我的需要,并在 Nagios 中对其进行了配置。例如:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

它提供的信息比真实的要少check_procs,但却提供了我需要的信息。

简而言之,如果您的check_disk命令让您难以配置,那么只需创建自己的脚本,这就是 Nagios 的魅力所在。

我希望我能帮到你。

答案2

您需要某种类型的配置管理软件来在每个远程主机上设置和安装 nrpe 守护程序以及部署配置并最终部署您的插件。

我可以建议Ansible来完成这项任务。

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

相关内容