刚刚在中央机器上安装了 nagios,在 10 台远程 Linux 机器上安装了 nrpe,并开始监控它们。效果很好。我可以获取 CPU 负载、当前用户、进程、mysql 等。我找不到使用核心插件监控内存使用情况的方法。我遗漏了什么?我需要一个外部插件来执行此操作吗?
答案1
我建议你最好监控交换使用情况。查看检查_交换插件 - 它是默认提供的[至少在 debian 中]。
答案2
是的,我确实想过为什么他们没有包含一个可以检查内存的插件,而他们已经包含了 check_swap 和 check_disk... 好吧,有些不对劲... 但是 check_memory 插件可从 exchange.nagios.org 获得 http://exchange.nagios.org/directory/Plugins/Operating-Systems/Solaris/check_mem-2Epl/details
这个很好用。它是一个 perl 脚本,所以甚至不需要安装。这是链接http://sysadminsjourney.com/content/2009/06/04/new-and-improved-checkmempl-nagios-plugin/来自上面的插件页面...简单且良好的文档...
$ /usr/local/nagios/libexec/check_mem.pl -w 10 -c 5 -f
警告 - 9.9% (406520 kB) 可用!|总计=4113824KB;;;; 已使用=3707304KB;;;; 可用=406520KB;;;; 缓存=816947KB;;;;
因此,配置步骤很简单:
- 复制 perl 脚本并将其作为“check_memory”(或 check_mem 或适合您的名称)写入与 check_disk、check_load 等相同的目录中
- 更改该 check_memory 的执行权限与其他 check_plugins 类似很重要(我的意思是,应该将执行权限授予 nagios 用户。在我们的开发环境中,我给了 755,请验证您是否需要 754 或 755)
- 使用命令[check_memory]=/usr/lib64/nagios/plugins/check_memory -u -w 8% -c 90% 更新远程客户端 nrpe.cfg 配置文件
答案3
使用 Nagios 服务器和 NRPE 客户端自动重启故障服务 2015 年 1 月 13 日
使用 Nagios 和 NRPE 执行远程命令
1.在远程主机上安装NRPE:
转速http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm yum –enablerepo=epel -y 安装 nrpe nagios-plugins yum –enablerepo=epel -y 列表 nagios-plugins* vim /etc/nagios/nrpe.cfg
服务nrpe启动chkconfig nrpe
2. 要在远程 nagios 客户端上执行命令,请按照以下步骤操作:
- 打开 NRPE 配置文件并进行以下更改:
vim /etc/nagios/nrpe.cfg a. 将 0 改为 1,如下所示: dont_blame_nrpe=1 b. 在 NRPE 中配置命令 在文本编辑器中打开 nrpe.cfg 文件,并添加以下行来定义 NRPE 中的命令。在 nrpe.cfg 文件的命令部分下添加下面提到的命令: command[runcmd]=sudo service $ARG1$ restart
- 授予 NRPE 重启服务的权限 以 root 身份运行以下命令,授予 NRPE 重启服务的权限。对 sudoers 文件进行更改:
vim /etc/sudoers nagios 全部=NOPASSWD:/sbin/service nrpe 全部=NOPASSWD:/sbin/service
从 nagios 服务器测试 runcmd 命令:
从 Nagios 服务器测试命令转到 Nagios 命令行,服务重启脚本将使用 Check_Nrpe 将命令发送到服务的主机。导航到 Nagios 命令行并输入以下命令:
/usr/local/nagios/libexec/check_nrpe -H 192.168.5.180 -p 5666 -c runcmd -a httpd
使用 Nagios NRPE 和事件处理程序执行远程命令 配置 nagios 客户端/远程机器 1. 修改 nrpe.cfg,如下所示: 将 dont_blame_nrpe=0 更改为 don't_blame_nrpe=1 2. 在 nrpe.cfg 中添加以下自定义命令,如下所示: command[event-ntp]=/usr/lib64/nagios/plugins/event-ntp $ARG1$ $ARG2$ $ARG3$ 3. 创建事件处理程序,如下所示: vim /usr/lib64/nagios/plugins/event-ntp
#!/bin/bash
case “$1″ in
OK)
;;
WARNING)
echo -e “Running NTP Query” “\n”
ntpq -p | mailx -s “HOSTNAME – NTP Query” [email protected]
;;
UNKNOWN)
;;
CRITICAL)
case “$2″ in
SOFT)
case “$3″ in
3)
echo -e “Running NTP Query & Restarting NTP Service” “\n”
ntpq -p | mailx -s “HOSTNAME – NTP Query – Restarted NTPD” \
[email protected] &&
/usr/bin/sudo /sbin/service ntpd restart
;;
esac
;;
HARD)
echo -e “Running NTP Query & Restarting NTP Service” “\n”
ntpq -p | mailx -s “HOSTNAME – NTP Query – Restarted NTPD” \
[email protected] &&
/usr/bin/sudo /sbin/service ntpd restart
;;
esac
;;
esac
exit 0
赋予执行权限并更改所有者和组: chmod +x /usr/lib64/nagios/plugins/event-ntp chown nagios:nagios /usr/lib64/nagios/plugins/event-ntp
比较棘手且可能不是最安全的方法是修改 sudoer 文件以允许 nagios 用户执行系统命令
visudo 添加以下内容:User_Alias NAGIOS = nagios,nagcmd Cmnd_Alias NAGIOSCOMMANDS = /sbin/service Defaults:NAGIOS !requiretty NAGIOS ALL=(ALL) NOPASSWD: NAGIOSCOMMANDS
- 一旦一切完成,重新启动nrpe服务,客户端配置就完成了。
在 Nagios 服务器上配置事件处理程序您需要做的第一件事是在 command.cfg 文件中创建一个 event-ntp 命令:
- Vim /usr/local/nagios/etc/objects/commands.cfg
定义命令{ 命令名 事件-ntp 命令行 /usr/local/nagios/libexec/check_nrpe -H $HOSTNAME$ -c 事件-ntp -a $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ }
- 这将由配置文件中的事件处理程序对象调用。现在,在您配置服务/主机定义的地方修改服务描述。在我的例子中,我有一个名为 linux.cfg 的单独配置文件。
定义服务{使用本地服务主机名neeraj测试服务描述时间同步检查事件处理程序事件ntp检查命令检查nrpe!检查ntp}
- 现在重新启动nagios(service nagios restart),并从服务器端测试配置:/usr/local/nagios/libexec/check_nrpe -H REMOTEHOSTNAME -c event-ntp -a CRITICAL HARD
如果一切顺利,您应该会收到一封来自客户端的电子邮件,其中包含来自 ntpq -p 的输出,以及 ntpd 服务的重新启动。如果您遇到任何问题,没有收到电子邮件,或者没有执行上述脚本,请在 nrpe.cfg 上设置调试级别 = 1,重新启动 nrpe,执行上述事件 ntp 测试,然后检查您的日志。正如您所见,执行事件处理程序脚本并不太难,并且当 nagios 可以处理系统/主机关键警报时,可以节省管理员的时间。