技术开发 频道

各种性能监测在企业中部署和实现方法

  NRPE v2.12

  但是如果出现一些error信息,则需要检查配置,检查的内容包括主要有下面几项:

  1.nrpe的版本号和nrpe-plugin的版本号是否一致。版本不一致极有可能造成该问题。

  2.SSL是否被关闭。确保NRPE以及check_nrpe插件在编译的时候都加入了SSL支持,同时在运行时都开启SSL。不过一般编译过程中默认都会假如支持SSL选项。

  3.确保NRPE的配置文件nrpe.cfg文件可以被nagios用户读取并且nagios用户可以执行nrpe二进制程序。

  4.确认在/etc/xinetd.d/nrpe文件的“only_from=x.x.x.x”中x.x.x.x是访问NRPE的监测主机的IP地址。

  NRPE的配置文件/usr/local/nagios/etc/nrpe.cfg中实际上已经包含了一些对系统进行监测的命令。由于NRPE安装在本地,这些命令可以直接协助NRPE从被监测主机获取系统和服务运行状况,而且都是在刚才通过nagios-plugin安装的。

  如果从监测主机上运行这些命令进行监测,一切正确可以看到下面的效果。那么不难看出其中的奥妙——实际上完全可以利用在/usr/local/nagios/libexec/中的各种脚本并添加各项参数定制自己的监测内容。

  那么到此为止我们就完成了在远程被监测主机上安装和配置RNPE的任务。现在需要在监测主机,也即是192.168.1.10上面安装和配置check_nrpe插件。

  步骤大概分为:

  第一,安装check_nrpe插件;

  第二,为使用check_nrpe插件建立Nagios命令定义;

  第三,建立Nagios host以及服务定义

  由于我们刚才已经在安装Nagios之后安装了nrpe,所以实际上第一个步骤已经完成。

  现在开始执行第二步骤——建立命令定义:

  这里需要花点时间特别说明一下Nagios利用命令定义进行监测的原理:

  在安装nagios成功之后可以看到在/usr/local/nagios/libexec目录下有很多可执行监控程序或者脚本,其名称类似check_icmp这样的格式。Nagios并没有提供针对这些监控程序的脚本的说明文档,想了解这些脚本如何工作,需要通过--h参数,显示其使用方法和参数,并会给出一些实际的例子。例如:./check-disk –h。

  那么我们可以尝试按照其中一个例子执行该脚本,执行和显示的结果如下:

  # ./check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /dev/sda3

  DISK OK - free space: / 2124 MB (41% inode=90%);| /=2955MB;4820;5088;0;5356

  可以看到状态值“OK”,以及一些详细的数据信息。

  上述操作说明这些插件都是可以独立使用,Nagios有很多个cfg档用来定义各式各样的信息,其中template.cfg是用来定义主机和服务信息的模板文件,在目录/usr/local/nagios/etc/objects下。我们按照这些模板来建立新的配置文件,例如同样目录下的server.cfg来定义监控内容,那么这些插件就会从server.cfg中调用。例如要定义一个需要监控的SSH服务,名称为TestSSH:

  按照其格式:

define service {
host_name x.x.x.x
service_description check_ssh
     ……
check_command check_ssh
}

  host_name项说明该服务所在的主机名,service_description项为服务的说明信息,这项内容会显示在nagios页面中。check_command项说明要使用的命令,这个例子中的命令check_ssh就是一个插件了。这个服务定义,明确了nagios在需要监控的内容和监控的手段,即使用check_ssh插件来监控主机x.x.x.x上的ssh服务情况。

  除了直接使用插件来做check_command项的参数以外,还可以使用自己定义的命令来。例如,定义一个需要监控的主机,名字是localhost.localdomain:

define host {
host_name localhost.localdomain
alias remotehost01
address
192.168.0.1
……
check_command check
-host-alive
     ……
}

  在此例中,check_command项的参数“check-host-alive”并非一个插件,而是在commands.cfg档中定义的一个命令。那么在相同目录的command.cfg中对该命令又被定义为:

# 'check-host-alive' command definition
define command{
command_name check
-host-alive
command_line $USER1$
/check_ping -H 192.168.1.220 -w 300.0,80% -c 500.0,100% -p 1
}

  首先,$USER1$这个参数在resource.cfg中定义,这个值会指向插件的目录(如:/usr/local/nagios/libexec)。“-H 192.168.1.220”定义目标主机的地址,-w说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。“-c 500.0,100%” 其中“-c”说明后面的一对值对应的是" CRITICAL",“100%”是其临界值。“-p 1”说明每次探测发送一个包。

  所以归根结底就是说通过ping这种方式来证明某台主机处于alive状态。

  而至于如何监听非默认埠的服务。下面我也举例说明一下这个问题:

  例如:现需检查的一个运行在8080埠上的http服务。那么我们可以对commands.cfg档中对关于check_http的声明做如下修改。

# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$
/check_http -H 192.168.1.220 -p $ARG1$
}

  其中$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。

  再把services.cfg中,对应服务的检测命令后面加一个参数:

define service {
host_name ...
...
check_command check_http
!8080
}

  这样就可以对8080埠的http服务进行监控了。如果要添加多个参数的时候,也可以类似操作。

  综上,插件的安装和调用方法也就举例介绍完毕了,大家在使用中也可以使用自己写的检测脚本来完成比较特殊的检测功能。

0
相关文章