当我们配置好nagios以后,还需要不断的往配置文件中加入监控对象.记得第一次追加监控对象时,有700多个服务及400多个主机,我用vi编辑,花了大量的时间--上万行都是一个一个字符输进去的,很没效率.这次又做了一个nagios监控平台,为了提高效率,我写了一个脚本来处理这些重复输入.
在这些配置文件中,hosts.conf与services.conf关联特别大,大量的输入工作就在这里,所以就从这个地方着手吧.
先建两个模版文件,其内容分别如下:
host.tempt:
define host {
host_name
alias
address
contact_groups sagroup
check_command check-host-alive
max_check_attempts 5
notification_interval 10
notification_period 24x7
notification_options d,u,r
}
host_name
alias
address
contact_groups sagroup
check_command check-host-alive
max_check_attempts 5
notification_interval 10
notification_period 24x7
notification_options d,u,r
}
services.tempt:
define service {
host_name
service_description check_tcp 80
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!80
}
define service {
host_name
service_description check_disk
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_disk
}
define service {
host_name
service_description check_load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
define service {
host_name
service_description check_procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_total_procs
}
host_name
service_description check_tcp 80
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_tcp!80
}
define service {
host_name
service_description check_disk
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_disk
}
define service {
host_name
service_description check_load
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
define service {
host_name
service_description check_procs
check_period 24x7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_total_procs
}
然后我们再建立添加脚本add_nagios.sh,其内容如下
#!/bin/bash
#writed by sery in Apr 28,2008. [email]sery@163.com[/email]
cd /root/nagios_cfg_script
cd /root/nagios_cfg_script
echo "please input host_name: "
read host_name
read host_name
echo "please input alias: "
read alias
read alias
echo "please input address: "
read address
read address
sed -e /host_name/{s/$/$host_name/} -e /alias/{s/$/$alias/} -e /address/{s/$/$address/}\ hosts.tempt>>hosts
sed -e /host_name/{s/$/$host_name/} services.tempt>>services
sed -e /host_name/{s/$/$host_name/} services.tempt>>services
给脚本执行权限,然后执行add_nagios.sh,交互输入ip地址,别名,主机名3项,就可生成hosts及services文件,然后再备份nagios下的配置文件,把这两个文件追加进去,然后nagios -v nagios.cfg检查一下.
如果不想手工交互输入,可以建一个ip地址列表,自动完成这个工作.