“主机”指的是被监控的机器,可是物理主机,也可以是虚拟设备。一个主机对象的定义至少应该包含一个简名(short name)、一个别名、一个IP地址和用到的检测命令。此外,很多时候,其定义中还应该包含监控时段、联系人及要通知的相关问题、检测的频率、重试检测的方式、发送通知的频率等。主机的定义例子如下:
define host{ #主机定义声明
host_name web1 # 设定主机名
hostgroups web # 所属主机组,可以替代hostgroup
alias www ; 主机别名
address 172.16.100.11 # 主机IP地址
check_command check-host-alive # 检测命令
check_interval 5 # 检测间隔
retry_interval 1 # 重试间隔,一次检测失败后,重试的间隔
max_check_attempts 5 # 最大检测次数,一次检测失败后,重复检测的次数
check_period 24x7 # 检测的时间段
contact_groups linux-admins # 联系人组
notification_interval 30 # 再次通知间隔
notification_period 24x7 # 通知时间
notification_options d,u,r # 哪种状态进行通知;d(Down),u(UNREACHABLE),r(recovery),f,s
} 其中的notification_options用于指定当主机处于什么状态时应该发送通知。其各状态及其表示符如下:
d —— DOWN #挂掉了
u —— UNREACHABLE #不可达
r —— UP(host recovery) #重新恢复态
f —— flapping #异常
s —— 调试宕机时间开始或结束
②主机组定义:
主机可以被划分成组,这些组即主机组。每一个主机组对象一般包含一个全局唯一的简名、一个描述名以及属于这个组的成员。此外,一个主机组的成员也可以是其它主机组。主机组的定义例子如下:
define hostgroup{ #主机组定义声明
hostgroup_name Web #主机组的名字
alias Linux Web Servers #主机组别名
members web1,web2 #组中的主机有哪些
}
③服务定义:
“服务”即某“主机”所提供的功能或资源对象,如HTTP服务、存储空间资源或CPU负载等。服务附属于主机,每一个服务使用服务名来标识,此服务名要求在特定的主机上具有唯一性。每一个服务对象还通常定义一个检测命令及如何进行问题通知等。服务的定义例子如下:
define service{
host_name web1,web2,... #主机名,可能有多个主机提供相同的服务
service_description www #服务的描述
check_command check_http #检测的命令
check_interval 10 #检测时间间隔
check_period 24x7 #检测的时间
retry_interval 3 #重试时间间隔
max_check_attempts 3 #最大检测次数
notification_interval 30 #再次同时间隔
notification_period 24x7 #通知时间
notification_options w,c,u,r #哪种状态进行通知:w(warning)/c(critical)/u(unknown)/r(recovery)
contact_groups linux-admins #通知组
} 与主机对象有所不同的是,有时个,多个主机可能会提供同样的服务,比如多台服务器同时提供Web等。因此,在定义服务对象时,其host_name可以为逗号隔开的多个主机。
其中的notification_options用于指定当服务处于什么状态时应该发送通知。其各状态及其表示符如下:
w —— WARNING #警告
u —— UNKNOWN #未知
c —— CRITICAL #紧急
r —— OK(recovery) #重新恢复
f —— flapping #异常
s —— 调试宕机时间开始或结束 ④服务组定义:
服务可以被划分成组,这些组即服务组。每一个服务组对象一般包含一个全局唯一的简名、一个描述名以及属于这个组的成员。此外,一个服务组的成员通常是某主机上的某服务,其指定时使用,的格式,多个服务也使用逗号分隔。服务组的定义例子如下:
define servicegroup{
servicegroup_name webservices #服务组名
alias All services related to web #别名
members we1,www,web2,www #主机的服务
}
⑥联系人组定义:
联系人也可划分为组,即联系人组。一个联系人组对象包含一个全局惟一的标识名称,一个描述名称和属于此联系人组的联系人成员(members)或其人联系人组成员(contactgroup_members)。例如:
define contactgroup{
contactgroup_name admins #组名
alias Nagios Administrators #别名
members nagiosadmin #组成员
}
⑦时间周期定义:
“时间周期”用于定义某“操作”可以执行或不能执行的日期和时间跨度,如工作日内的每天8:00-18:00等,其可以在多个不同的操作中重复引用。一个时段对象的定义包含一个全局唯一的名称标识及一个或多个时间跨度。例如:
define timeperiod{
timeperiod_namenonworkhours #日程名称
alias Non-Work Hours #别名
sunday 00:00-24:00 ; Every Sunday of every week
monday 00:00-09:00,17:00-24:00; Every Monday of every week
tuesday 00:00-09:00,17:00-24:00; Every Tuesday of every week
wednesday 00:00-09:00,17:00-24:00; Every Wednesday of every week
thursday 00:00-09:00,17:00-24:00; Every Thursday of every week
friday 00:00-09:00,17:00-24:00; Every Friday of every week
saturday 00:00-24:00 ; Every Saturday of every week
}