本文不做为手把手配置说明文档,请谨慎参考.
一、布局,明白了要怎样布局,理解nagios的配置文档结构,接下来会省去很多时间,并且可以自定义自己的脚本来批量配置一定重复项。
Nagios配置文件分为几大块:
1: 主配置文件(nagios.cfg)
Nagios服务启动就是读取这个文件,然后根据这个文件加载所有其它的配置文件,并按照一定的格式写成一个缓存文件,以加快程序运行时的访问速度.
2: CGI
如果你想要在WEB上管理一些任务,或者停止等对现行任务有改动的操作,权限就很重要了,而有时候报权限错误,大部份是因为这个文件或者文件夹及文件权限没有赋给正确的权限所致。
3: Object Definition Files
这里面又包括hosts,service,hostgroups,contacts,contactgroups,
commands,etc 即主机,服务,联系,等,可以分成不同的组,不同的服务,很灵活,也很方便,后期主要维护的就是这些配置文件,配置规范了后,可以省很多维护的功夫
4: Resource Files
存储用户自定义的宏命令,存储一些敏感的信息(如password等),这些信息一般不对CGI生效(这个基本上用不到)
好了,最主要谈谈 3: Object Definition files
我一般可分为下面几个配置文件
localstandard.cfg
groups.cfg
hosts.cfg
servies.cfg
commands.cfg
timeperiods.cfg
contacts.cfg
依照字面上意思应该大多都明明,其中nagios配置文件时支持继承,这样定义不同个性的检查属性是非常方便的
localstandard.cfg最主要定义各种不同的检查属性,主机属性,服务属性,即专门定义属性的一个文件,这样配置主机,服务,组的时候即可以定义用哪个属性来检查该项.
定义属性和定义要检查的项不同的一项就是register,如果是属性,或者你也可以把它理解为模板,它的值就为0,默认是1
下面来个示例参考一下:
定义host属性(模板,这里只是一个简单的示例,还有更多的参数或才继承)
define host{
name xxx
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notifictaion_period 24x7
register 0
}
要想知道上面这些属性的意思,查看模板配置文件或者文档都有解释,这里就不说了
定义主机
define host{
use xxx
host_name test1
alias do_test1
address 192.168.0.11
}
注意到没有,在模板中,有name,而在host里面没有,其时在定义主机的时候也可以加name,不过没有必要了,因为它下面没有再下一级了,我们还可以定义一个模块,name为xxx2,然后use 后面跟xxx,下面定义不同的一些属性,这样,不同的主机列用不同的模板,维护起来就非常方便了.
定义组相对简单,如下:
define hostgroup{
hostgroup_name T1
alias T1-0001
members test1,test2,...
}
看到没有,这个没有什么特别的了,当然也可以定义一组属性,然后hostgroup来继承.
接下来是commands.cfg
讲commands.cfg前先要了解一下service,host是定义主机,而sercvie自然是定义哪些主机要检查哪些服务了,好下:
define service{
use S1 #这里的'S1'也是一个模板属性,和host的模板属性类似
host_name test1,test2,...
service_description POP3
check_command check_pop!-p 110
notification_enabled 1
}
要讲的commands.cfg和这里的chech_command有关系了,这里用到的check_pop,或者其它的命令,必须是commands.cfg里定义好的,才可以在这里使用,就像只有定义好属性(模板)后你才可以继承一样,你可以看一下默认的commands.cfg里面有哪些,基本上常用的它都帮你定义好了
==================================
OK,配置文件基本上就是这样的,再去熟悉一下属性里的各个参数的用途,就可以开始配置使用了.那,如果有大批量的添加或者改动,每次改动这些是不是非常麻烦呢,见意你先按照nagios给出的模板先配置几台试试,等掌握了后再开始思考要怎样批量的添加或者修改
批量修改:
前提:
已定义好localstandard.cfg(即各属性模板)
所有检查的命令都有在commands.cfg里都有定义好
那接下来就可以开始工作了:
GROUPTEMPLATE
HOSTTEMPLATE
SERVICETEMPLATE
最主要的,或者说,重复得最多的,无非就是主机,服务,组了,
这三个模块是你首先需要提取出来了,举个例子如下:
GROUPTEMPLATE
###################
define hostgroup{
hostgroup_name #GROUPTYPE#-servers
alias #GROUPTYPE# Servers
members #HOSTLIST#
}
HOSTTEMPLATE
####################
define host{
use #HOSTSEVICE#
host_name #HOSTNAME#
alias #HOSTNAME#
address #HOSTIP#
}
SERVICETEMPLATE
####################
define service{
use normal-service
host_name #HOSTLIST#
service_description #SERVICETYPE-DESC#
check_command #SERVICETYPE-COM#
notifications_enabled #SINGLE#
}
看到上面这些参数了吗,哦,有一个normal-servcie,因为这里大多数主机基本上检查都是一样的,所以我只定义了一个normal-service,如果你有多样性,这里也可以定义一个变量
另,可以定义hostgroup,servicegroup,但我这里只定义了hostgroup,暂时够用了。
把所有的这些变量看一下,很多都是重复的吧,这样你就可以定义list啦,即列表,然后根据列表来写脚本,批量生成这三个文件,然后注意nagios.cfg里要include这三个配置文件,脚本很好写,基本上就是一个sed的替换而已.
后面再复习一下nagios一些重要的参数项,或者有什么新的变化