所以按照上面所叙述的原理,我们开始第二步和第三步的配置,为使用check_nrpe插件建立Nagios命令定义以及服务定义:
修改配置文件/usr/local/nagios/etc/objects/command.cfg并增加下面的内容:
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
然后针对要监测的目标主机建立主机定义,主机定义的项目和内容有很多,所以定义的项目如下:
alias alias # 别名,可以更详细的说明主机
address address # ip地址,当然如果DNS服务可用也可以写名称。如果你不定义该值,nagios将会用host_name去寻找主机。
parents host_names # 上一节点的名称,也就是指从nagios服务器到被监控主机之间经过的节点,可以是路由器、交换机、主机等等。这个节点也要定义并且要被nagios监控。
hostgroups # 简短的主机组名称
check_command # 检查命令的简短名称,如果此项留空,nagios将不会去判断该主机是否alive。
max_check_attempts # 当检查命令的返回值不是“OK”时,重试的次数
check_interval # 循环检查的间隔时间。
active_checks_enabled # 是否启用“active_checks”
passive_checks_enabled # 是否启用“passive_checks”,及“被动检查”
check_period # 检测时间段简短名称,此处只是名称,具体的时间段要写在其它的配置文件
obsess_over_host # 是否启用主机操作系统探测。
check_freshness # 是否启用freshness测试。freshness测试是对于启用被动测试模式的主机而言的,其作用是定期检查该主机报告的状态信息,如果该状态信息已经过期,
freshness将会强制作主机检查。
freshness_threshold # fressness的临界值,单位为秒。 如果定义为0,则为自动定义。
event_handler # 当主机发生状态改变时,采用的处理命令的简短的名字
(可以在commands.cfg中对其定义)
event_handler_enabled # 是否启用event_handler
low_flap_threshold # 抖动的下限值。所谓抖动,主要定义了这样一种现象:在一段时间内,主机(或服务)的状态值频繁发生变化,类似一个问题风暴或者一个网络问题。
high_flap_threshold # 抖动的上限值
flap_detection_enabled # 是否启用抖动检测
process_perf_data # 是否启用processing of performance data
retain_status_information # 程序重启时,是否保持主机状态相关的信息
retain_nonstatus_information # 程序重启时,是否保持主机状态无关的信息
contact_groups # 联系人组(这个组会在contactgroup.cfg文件中定义),在此组中的联系人都会受到该主机的告警提醒信息。
notification_interval # 告警临界值。达到此次数之后,才会发送该机的报警提醒信息。
notification_period # 告警时间段
notification_options # 告警包括的状态变化结果
notifications_enabled # 是否启用告警提醒功能
stalking_options [o,d,u] # 持续状态检测参数,o = 持续的UP状态,
d = 持续的DOWN状态,and u = 持续的UNREACHABLE状态.
当然在企业的监测环境中很多项目可能都不一定能够用上,这里我只是通过一个简单的例子说明其用法就好了。所以修改/usr/local/nagios/etc/objects/localhost.cfg檔,在檔的“HOST DEFINITION”部分,在原来的基础上增加自己的主机定义内容:
use linux-box ; Inherit default values from a template
host_name localhost ; The name we're giving to this server
alias RHEL5u2 ; A longer name for the server
address 192.168.1.220 ; IP address of the server
}
同时在“HOST GROUP DEFINITION”部分,将192.168.1.220这台主机加入到linux-servers这个hostgroup中。如果有多台主机都属于这个hostgroup,可以用逗号将其隔开。以下是我添加的内容:
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members 192.168.1.220 ; Comma separated list of hosts that belong to this group
}
而在最后的“SERVICE DEFINITION”部分,所有未注释的部分实际上是关于对localhost也就是本机所要监测的内容。其格式和语法就是我在提到Nagios检测原理方面举例说明的内容。对于localhost来说不需要修改了,但是可以把他的内容复制到自定义的cfg档中并照葫芦画瓢修改成对192.168.1.220这台
主机的命令定义。我们下面就来做这样的操作:
在/usr/local/nagios/etc/objects目录下针对监测的服务建立服务定义,建立一个新的文件remotehosts.cfg,加入下面内容:
下面是自定义的:
use generic-service
host_name localhost
service_description CPU Load
check_command check_nrpe!check_load
}
表示监测远程主机的CPU负载。
如果要监测当前在远程主机的磁盘空间,则加入:
use generic-service
host_name localhost
service_description /dev/sda3 Free Space
check_command check_nrpe!check_disk /dev/sda3
}
如果要监测当前远程主机的僵死进程数,则加入:
use generic-service
host_name localhost
service_description Zombie Processes
check_command check_nrpe!check_zombie_procs
}