监控工具之Nagios,搭建和使用( 五 )


# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
联系人分组定义方式为:
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin ;这里填写刚才定义的contact_name
}
4.2 修改报警时间周期
define host{
use linux-server
host_name server_10.61.91.37
alias server_10.61.91.37
address 127.0.0.1
contact_groups admins ;这里添加报警组名称(上面刚定义的)
}
要使主机或服务能够发邮件 , 必须在定义主机或服务时添加说明 , 以服务为例 。 修改localhost.cfg中本机的修改 。 这样主机出现异常时会发送异常到报警组 , 报警组把异常分配给组里的成员 , 然后成员按着自己预先设定的报警方式进行报警 。 主机继承了linux-server模板 , 模板的定义在templates.cfg文件 , 文件中存在着主机和服务的继承关系 , 可以根据需要自己定制参数 , 以linux-server模板为例:
define host{
name linux-server; 主机模板名称
use generic-host; 继承通用模板
check_period 24x7; 监控的时间段为一周七天 , 每天24小时 , 具体定义详见timeperiods.cfg
check_interval 5 ; 对主机每5分钟检测一次(注:这里的数值单位默认为分钟)
retry_interval 1; 重试检测时间为1分钟
max_check_attempts 1; nagios对主机的最大检查次数 , 即nagios在检查发现某主机异常时 , 并不马上下定论
check_command check-host-alive ;指定检查主机状态的命令 , 其中“check-host-alive”在commands.cfg文件中定义
notification_period workhours ; 主机故障时 , 发送通知的时间范围 , 其中“workhours”在timeperiods.cfg中进行了定义;
notification_interval 30; 故障出现 , 没有修复 , 每30分钟再发一次告警
notification_options d,u,r; 定义主机在什么状态下可以发送通知给使用者 , d即down , 表示宕机状态;
register 0;指明这非真正主机 , 这只是模板而已
}注:这里的时间是时间片的含义 , 定义在nagios.cfg中command_check_interval=60,默认单位是s。 30即30*60s
4.3 邮件报警
上面是以邮件报警为例说明的 , 但是前提是系统可以往外发邮件 , 配置如下(以CentOs为例) 打开/etc/mail.rc文件 添加 其中 set from=[发送人邮箱地址] set smtp=[smtp服务器地址] set smtp-auth-user=[邮箱用户名] set smtp-auth-password=[邮箱密码] set smtp-auth=login 测试: mail -s [邮件主题] [邮件地址] 回车 , 然后输入邮件内容 , 最后按“Ctrl + D” 。 如果发送成功表名配置成功 。
5. 分组完成了以上的配置 , 已经完成了nagios的基本配置 , 但是当有多个机器时 , 所有的机器显示在一起会显得很乱 , 并且和自己无关的主机也会对自己报警 。 为了作区分可以对主机和服务进行分组 , 这样管理人员就可以只关注自己管理的主机和服务 。
5.1 主机分组
定义分组的位置放哪都行 , 只要引入到nagios.cfg中即可 , 为了方便找 , 这里把分组放到localhost.cfg和windows.cfg里 。
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup