如何在Ubuntu12.10上使用Ruby创建Nagios插件

来自菜鸟教程
跳转至:导航、​搜索

介绍

Ruby 是 Linux 上默认可用的流行命令处理器。

我们之前已经介绍过 如何在 Ubuntu 12.10 x64 上安装 Nagios 监控服务器。 这一次,我们将扩展这个想法并使用 Ruby 创建 Nagios 插件。 这些插件将在客户端 VPS 上运行,并通过 NRPE 执行。

第 1 步 - 在客户端 VPS 上安装 NRPE

apt-get install -y ruby nagios-nrpe-server
useradd nrpe && update-rc.d nagios-nrpe-server defaults

第 2 步 - 创建您的 Ruby 脚本

将您的插件与其他 Nagios 插件(例如 /usr/lib/nagios/plugins/)保存在同一目录中是个好主意。

对于我们的示例,我们将创建一个脚本,通过从 shell 调用“df”来检查当前磁盘使用情况,并在超过 85% used 时发出警报:

#!/usr/bin/ruby
used_space=`df -h / | grep -v "Filesystem" | awk '{print $5}'`
 case used_space.chomp <=> "85%"
 when -1
   puts "OK - #{used_space.chomp!} of disk space used."
   exit 0
 when 0
   puts "WARNING - #{used_space.chomp!} of disk space used."
   exit 1
 when 1
   puts "CRITICAL - #{used_space.chomp!} of disk space used."
   exit 2
 else
   puts "UNKNOWN - #{used_space.chomp!} of disk space used."
   exit 3
end

我们将此脚本保存在 /usr/lib/nagios/plugins/usedspace.rb 中并使其可执行:

chmod +x /usr/lib/nagios/plugins/usedspace.rb

整个 Nagios NRPE 插件归结为使用退出代码来触发警报。

您将您的逻辑级别引入脚本,并且如果您想触发警报(无论是 OK、WARNING、CRITICAL 还是 UNKNOWN) - 您指定一个退出代码。

请参阅以下 Nagios 退出代码:

Nagios 退出代码

退出代码 地位
0 好的
1 警告
2 危急
3 未知

第 3 步 - 将您的脚本添加到客户端主机上的 NRPE 配置

删除原始的 /etc/nagios/nrpe.cfg 并添加以下行:

log_facility=daemon
pid_file=/var/run/nagios/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nagios/nrpe.d/

command[usedspace_ruby]=/usr/lib/nagios/plugins/usedspace.rb

其中 198.211.117.251 是我们之前文章中的监控服务器。 将这些更改为您自己的值。

确保重启 Nagios NRPE 服务:

service nagios-nrpe-server restart

第 4 步 - 将您的新命令添加到 Nagios 监控服务器上的 Nagios 检查

/etc/nagios/objects/commands.cfg 中定义新命令

define command{
        command_name    usedspace_ruby
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_ruby
        }

如您所见,它使用 NRPE 与端口 5666 建立 TCP 连接并运行命令 'usedspace_ruby',我们在该远程主机上的 /etc/nagios/nrpe.cfg 中定义了该命令。

将此检查添加到客户端 VPS 的 Nagios 配置文件中。

对于我们的示例,我们将监控一个名为 UbuntuDroplet 的服务器并编辑 /etc/nagios/servers/UbuntuDroplet.cfg

define service {
        use                             generic-service
        host_name                       UbuntuDroplet
        service_description             Custom Disk Checker In Ruby
        check_command                   usedspace_ruby
        }

重启 Nagios:

service nagios restart

验证新检查是否有效:

你们都完成了!