Nagios的灵魂与之精华.
全在配置文件,如果只是将服务搭建起来,那和不搭有什么区别呢.
Nagios的配置文件非常多,只要其中一个配置文件出现错误,就会导致Nagios 无法正常工作。也很灵活,但只要掌握了其中的规律,就很简单了
了解Nagios 的各个配置文件
1.主配置文件nagios.cfg
nagios默认的配置文件比较少,并且将很主机,主机组,服务,服务组写在同一个文件中.
这样做的好处是配置文件管理比较方便,但是数据量大了之后,很难整理.所以建议将这些配置分开
- cfg_file=/usr/local/nagios/etc/objects/commands.cfg
- cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
- cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
- cfg_file=/usr/local/nagios/etc/objects/templates.cfg
- cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg
- cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
- cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg
- cfg_file=/usr/local/nagios/etc/objects/services.cfg
- cfg_file=/usr/local/nagios/etc/objects/servicegroups.cfg
- #改check_external_commands=0为check_external_commands=1.这行的作用是允许在web 界面下执行重启nagios、停止主机/服务检查等操作。
- #把command_check_interval的值从默认的1 改成command_check_interval=15s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。
2.资源配置文件resource.cfg
资源文件可以保存用户自定义的宏.资源文件的一个主要用处是用于保存一些敏感的配置信息,如系统口令等不能让CGIs 程序模块获取到的东西
3.CGI配置文件cgi.cfg
CGI 配置文件包含了一系列的设置,它们会影响CGIs程序模块.还有一些保存在主配置文件之中,因此CGI 程序会知道你是如何配置的Nagios并且在哪里保存了对象定义.最实际的例子就是,如果你想建立一个只有查看报警权限的用户,或者只有查看其中一些服务 器或者服务状态的权限,通过修改cfi.cfg可以灵活的控制web访问端的权限.
4.主机定义文件
定义你要监控的对象,这里定义的“host_name”被应用到其它的所有配置文件中,这个是我们配置Nagios 必须修改的配置文件.
- [root@test objects]# vim hosts.cfg
- define host{
- host_name Nagios-Server ; 设置主机的名字,该名字会出现在hostgroups.cfg 和services.cfg 中。注意,这个名字可以不是该服务器的主机名。
- alias Nagios服务器 ; 别名
- address 192.168.81.128 ; 主机的IP 地址
- check_command check-host-alive ; 检查使用的命令,需要在命令定义文件定义,默认是定义好的。
- check_interval 1 ; 检测的时间间隔
- retry_interval 1 ; 检测失败后重试的时间间隔
- max_check_attempts 3 ; 最大重试次数
- check_period 24x7 ; 检测的时段
- process_perf_data 0
- retain_nonstatus_information 0
- contact_groups sagroup ; 需要通知的联系组
- notification_interval 30 ; 通知的时间间隔
- notification_period 24x7 ; 通知的时间段
- notification_options d,u,r ; 通知的选项
- #w—报警(warning),u—未知(unkown)
- #c—严重(critical),r—从异常情况恢复正常
- }
- define host{
- host_name Nagios-Client
- alias Nagios客户端
- address 192.168.81.129
- check_command check-host-alive
- check_interval 1
- retry_interval 1
- max_check_attempts 3
- check_period 24x7
- process_perf_data 0
- retain_nonstatus_information 0
- contact_groups sagroup
- notification_interval 30
- notification_period 24x7
- notification_options d,u,r
- }
5.主机组定义文件
主机组定义文件,可以方便的将相同功能或者在应用上相同的服务器添加到一个主机组里,在WEB 界面可以通过HOST Group 方便的查看该组主机的状态信息.
将刚才定义的两个主机加入到主机组中,针对生产环境就像把所有的MySQL 服务器加到一个MySQL主机组里,将Oracle 服务器加到一个Oracle 主机组里,方便管理和查看,可以配置多个组.
- [root@test objects]# vim hostgroups.cfg
- define hostgroup {
- hostgroup_name Nagios-Example ; 主机组名字
- alias Nagios 主机组 ; 主机组别名
- members Nagios-Server,Nagios-Client ; 主机组成员,用逗号隔开
- }
6.服务定义文件
服务定义文件定义你需要监控的对象的服务,比如本例为检测主机是否存活,在后面会讲到如何监控其它服务,比如服务器负载、内存、磁盘等.
- [root@test objects]# vim services.cfg
- define service {
- host_name Nagios-Server ; hosts.cfg 定义的主机名称
- service_description check-host-alive ; 服务描述
- check_period 24x7 ; 检测的时间段
- max_check_attempts 3 ; 最大检测次数
- 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-host-alive
- }
- define service {
- host_name Nagios-Client
- service_description check-host-alive
- check_period 24x7
- max_check_attempts 3
- 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-host-alive
- }
7.服务组定义文件
和主机组一样,我们可以按需将相同的服务放入一个服务组,这样有规律的分类,便于我们在WEB端查看.
- [root@test objects]# vim servicegroups.cfg
- define servicegroup{
- servicegroup_name Host-Alive ; 组名
- alias Host Alive ; 别名设置
- members Nagios-Server,check-host-alive,Nagios-Client,check-host-alive
- }
8.联系人定义文件
定义发生故障时,需要通知的联系人信息.默认安装完成后,该配置文件已经存在,而且该文件不仅定义了联系人,也定义了联系人组,为了条理化的规划,我们把联系人定义放在contacts.cfg文件里,把联系人组放在contactgroups.cfg文件中.
- [root@test objects]# mv contacts.cfg contacts.cfg.bak
- [root@test objects]# vim contacts.cfg
- define contact{
- contact_name maoxian ; 联系人的名字
- alias maoxian ; 别名
- service_notification_period 24x7 ; 服务报警的时间段
- host_notification_period 24x7 ; 主机报警的时间段
- service_notification_options w,u,c,r ; 就是在这四种情况下报警。
- host_notification_options d,u,r ;同上。
- #服务报警发消息的命令,在command.cfg 中定义。
- service_notification_commands notify-service-by-email
- #服务报警发消息的命令,在command.cfg 中定义。
- host_notification_commands notify-host-by-email
- email wangyx088@gmail.com ; 定义邮件地址,也就是接收报警邮件地址。
- }
9.联系人组定义文件
联系人组定义文件在实际应用中很有好处,我们可以把报警信息分级别,报联系人分级别存放在联系人组里面.例如:当发生一些警告信息的情况下,只发邮件给系统工程师联系人组即可,但是当发生重大问题,比如主机宕机了,可以发给领导联系人组.
- [root@test objects]# vim contactgroups.cfg
- define contactgroup{
- contactgroup_name sagroup ; 组名
- alias Nagios Administrators ; 别名
- members maoxian ; 联系人组成员
- }
10.命令定义文件 commands.cfg
命令定义文件是Nagios中很重要的配置文件,所有在hosts.cfg还是services.cfg使用的命令都必须在命令定义文件中定义才能使用.默认情况下,范例配置文件已经配置好了日常需要使用的命令,所以一般不做修改.
11.时间段定义文件 timeperiods.cfg
我们在检测、通知、报警的时候都需要定义时间段,默认都是使用7x24,这也是默认配置文件里配置好的,如果你需要周六日不做检测,或者在制定的维护时间不做检测,都可以在该时间段定义文件定义好,这样固定维护的时候,就不会为大量的报警邮件或者短信烦恼
- [root@test objects]# cat timeperiods.cfg |grep -v "^#" |grep -v "^$"
- #可以根据业务需求来更改
12.启动Nagios
- #1> 修改配置文件所有者
- [root@test objects]# chown -R nagios:nagios /usr/local/nagios/etc/objects/
- #2> 检测配置是否正确
- [root@test objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
- #如果配置错误,会给出相应的报错信息,可以根据信息查找,注意,如果配置文件中有不可见字符也可以导致配置错误
- #3> 重载Nagios
- [root@test objects]# service nagios restart