bei 发表于 2012-12-25 09:01:24

Nagios配置文件介绍

Nagios配置文件很多,有主配置文件,各种对象配置文件安装nagios默认路径下/usr/local/nagios/etc会有以下文件:

[*]cgi.cfg:cgi配置文件
[*]htpasswd.users:存放认证密码的文件
[*]nagios.cfg:主配置文件
[*]objects :该目录下有各种对象
[*]resource.cfg 资源配置文件
1、认识一下nagios的主配置文件nagios.cfg

[*]log_file=/usr/local/nagios/var/nagios.log   
[*]##定义nagios的日志文件路径
[*]
[*]cfg_file用来加载对象定义的相关文件的,下面就是objects中的
[*]8个对象:
[*]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/localhost.cfg
[*]#cfg_file=/usr/local/nagios/etc/objects/windows.cfg
[*]#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
[*]#cfg_file=/usr/local/nagios/etc/objects/printer.cfg
[*]默认windows主机、交换机和打印机是注释的,其实包含哪些对象
[*]我们可以手动设置的
[*]
[*]
[*]使用cfg_dir可以把一个目录下的文件全部包含进来
[*]#cfg_dir=/usr/local/nagios/etc/routers
[*]
[*]resource_file=/usr/local/nagios/etc/resource.cfg   
[*]##设定Nagios附加的宏定义的相关文件
[*]
[*]status_file:
[*]设定Nagios存储所有主机和服务当前状态信息的文件;
[*]status_update_interval:
[*]设定status_file指定的文件中状态信息的更新频率,默认10s
[*]nagiosnagios_user=nagios 用户
[*]nagiosnagios_froup=nagios 用户组
[*]command_check_interval=-1   
[*]命令检查间隔时间,-1尽可能多的检查
[*]command_file=/usr/local/nagios/var/rw/nagios.cmd   
[*]定义commands的执行权限和身份的
[*]lock_file=/usr/local/nagios/var/nagios.lock定义锁文件
[*]temp_file=/usr/local/nagios/var/nagios.tmp 临时文件
[*]service_check_timeout 设定服务检测的超时时间,默认为60秒;
[*]host_check_timeout 设定主机检测的超时时间,默认为30秒;
[*]notification_timeout   
[*]设定通知信息发送尝试的超时时间,默认为30秒;
2、resource.cfg是定义宏的配置文件:

[*]$USER1$=/usr/local/nagios/libexec   
[*]##定义宏变量的,可以定义32个
[*]
[*]/usr/local/nagios/libexec目录下存放的是各种插件,
[*]nagios对主机或服务等的监控正是通过这些插件来完成的,
[*]
[*]该文件中包含了重要的信息如用户密码等,一般是不允许通过前
[*]端的web接口直接访问的
[*]$USER3$=someuser
[*]$USER4$=somepassword
[*]
[*]cgi要想访问某个用户的个人信息可以调用resource.cfg,但在we
[*]b接口中是不能访问的
3、objects目录    ##各种对象的配置文件

[*]commands.cfg   定义各种命令的配置文件
[*]localhost.cfg 本地主机的配置文件
[*]switch.cfg   交换机的配置文件
[*]timeperiods.cfg时段的配置文件
[*]contacts.cfg   联系人的配置文件
[*]printer.cfg   打印机的配置文件
[*]templates.cfg模板的配置文件
[*]windows.cfg   Windows主机的配置文件
在实际应用中这些对象的配置文件我们可以自己命名,存放于任何位置,
只要在主配置文件中包含进来就可以了

3.1、定义命令:
“命令”用于描述如何对主机或服务进行状态检测

[*]define command{
[*]      command_name    check-host-alive   
[*]      ##command_name的名字必须全局唯一
[*]      command_line    $USER1$/check_ping -H
[*]      $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
[*]
[*]      }
[*]##$USER1$/check_ping:引用宏$USER1$路径下的一个叫check_pi
[*]ng的插件
[*]##-H$HOSTADDRESS$
[*]:-H后跟主机地址,应用到哪个对象上,就是那个主机的地址
[*]##-w 3000.0,80%:如果是80%的丢包率,延迟3s,就为警告状态
[*]         -w:警告,后跟达到警告的值,单位ms
[*]##-c 5000.0,100%
[*]如果有100%的丢包率,且延迟5s,就是危机状态
[*]##-p:一共检测几个包
各状态及其表示符如下:   

[*]w —— WARNING
[*]          u —— UNKNOWN
[*]          c —— CRITICAL
[*]          r —— OK(recovery)
[*]          f —— flapping
[*]          s —— 调试宕机时间开始或结束

3.2、定义联系人:
“联系人”对象用于定义某主机设备的拥有者或某问题出现时接受通知者


[*]define contact{
[*]      contact_name                     
[*]      nagiosadmin          ##这个名字也要全局唯一
[*]      use                              
[*]            alias                           Nagios
[*]      Admin         ##定义一个别名
[*]
[*]      email                           
[*]      nagios@localhost       ##联系人的email
[*]      }
[*]
[*]timeperiods.cfg用于定义时段的:
[*]7x24小时:
[*]define timeperiod{
[*]      timeperiod_name 24x7    ##名字要全局唯一
[*]      alias         24 Hours A Day, 7 Days A Week   
[*]      ##定义别名
[*]      sunday          00:00-24:00   ##哪一天的什么时间段
[*]      monday          00:00-24:00
[*]      tuesday         00:00-24:00
[*]      wednesday       00:00-24:00
[*]      thursday      00:00-24:00
[*]      friday          00:00-24:00      
[*]      saturday      00:00-24:00
[*]      }
[*]
[*]正常工作日:
[*]define timeperiod{
[*]      timeperiod_name workhours
[*]      alias         Normal Work Hours
[*]      monday          09:00-17:00
[*]      tuesday         09:00-17:00
[*]      wednesday       09:00-17:00
[*]      thursday      09:00-17:00
[*]      friday          09:00-17:00
[*]      }   generic-contact      ##从哪个模板继承,引用模板
3.3、localhost.cfg 定义主机:
“主机”指的是被监控的机器,可是物理主机,也可以是虚拟设备。一个主机对象的定义至少应该包含一个简名(short name)、一个别名、一个IP地址和用到的检测命令


[*]define host{
[*]      use                     linux-server    ##引用模板
[*]                                                      
[*]      host_name          localhost         
[*]      ##主机名,全局唯一
[*]      alias                   localhost      ##别名
[*]      address            127.0.0.1       ##ip地址
[*]      }
3.4、定义服务:
“服务”即某“主机”所提供的功能或资源对象,如HTTP服务、存储空间资源或CPU负载等


[*]define service{
[*]      use                                 
[*]      local-service      
[*]      host_name                     localhost   
[*]                               ##先说明是在哪个主机上的服务
[*]      service_description            PING
[*]                               ##服务名不要求全局唯一的,只要在当前主机上唯一就可以了
[*]      check_command               
[*]      check_ping!100.0,20%!500.0,60%   
[*]                               ##说明使用的是check_ping命令
[*]      }
服务不能脱离主机而运行的,所有服务定义时必须要说明是对应于哪一个主机而提供什么服务的。
上面使用的check_ping命令在commands.cfg文件中是有对应的命令的:


[*]# 'check_ping' command definition
[*]define command{
[*]      command_name    check_ping      
[*]      ##需事先定义好命令,然后再在服务中引用的
[*]      command_line    $USER1$/check_ping -H
[*]      $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
[*]      }
[*]##$HOSTADDRESS$:对应于上面主机中的$HOSTADDRESS$就是127.0
[*].0.1
[*]##定义service时是有两个参数!100.0,20%和!500.0,60%,就是把
[*]对应的参数传递给command中的 $ARG1$和$ARG2$

3.5、再来看一下templates.cfg这个文件,定义模板的:
Nagios通过功能强大的继承引擎来实现基于模板的对象继承。这就意味着可以定义
将某类型的对象的通用属性组织起来定义为对象模板,并在定义其类型中的对象时
直接从此模板继承其相关属性的定义。


[*]define host{
[*]      name                            generic-host   
[*]      ##模板的名字
[*]      notifications_enabled         1               
[*]      ##是否发送通知,为1发送
[*]      event_handler_enabled         1            
[*]      ##是否启动额外的处理器
[*]      flap_detection_enabled          1            
[*]      ##是否检查flap状态,flap是四个状态中会有不同状态
[*]      的随机转换
[*]      failure_prediction_enabled      1            
[*]      ##是否提前检测prediction失误
[*]      process_perf_data               1               
[*]      ##进程性能数据是否输出
[*]      retain_status_information       1            
[*]      ##是否保存状态信息
[*]      retain_nonstatus_information    1         
[*]      ##是否保存非状态信息的通知
[*]      notification_period             24x7            
[*]      ##检测的时间段
[*]      register                        
[*]      0                     
[*]      ##并不是一个真正的主机,定义的是一个模板
[*]      }
下面定义Linux主机的模板:

[*]define host{
[*]      name                            linux-server   
[*]      ; The name of this host template
[*]      use                           generic-host   
[*]      ; This template inherits other values from the
[*]      generic-host template
[*]      check_period                  24x7            
[*]      ; By default, Linux hosts are checked round the
[*]      clock
[*]      check_interval                  5               
[*]      ; Actively check the host every 5 minutes
[*]      retry_interval                  1               
[*]      ; Schedule host check retries at 1 minute
[*]      intervals
[*]      max_check_attempts            10               
[*]      ; Check each Linux host 10 times (max)
[*]      check_command                  
[*]      check-host-alive    ##先检测主机是否是alive状态
[*]      notification_period             workhours      
[*]      ##什么时段发送通知信息,此处为workhours
[*]                                                         
[*]; Note that the notification_period variable is being
[*]overridden from
[*]                                                         
[*]; the value that is inherited from the generic-host
[*]template!
[*]      notification_interval         120            
[*]      ##发送通知的间隔时间,单位分钟
[*]      notification_options            d,u,r         
[*]      ##d--宕机,u--UNREACHABLE,r--UP(重新上线)
[*]      contact_groups                  admins         
[*]      ##在定义好的时段内给这个联系人组发送通知信息
[*]      register                        0               
[*]      ; DONT REGISTER THIS DEFINITION - ITS NOT A
[*]      REAL HOST, JUST A TEMPLATE!
[*]      }
##service要定义相应的服务模板
3.6、对象间的依赖关系
为了描述Nagios对象间的依赖关系,这里要用到两个术语:master(被依赖的主机或服务)和dependent(依赖关系中的依赖于master的Nagios对象)。
可以定义对象间的依赖关系,为某对象定义其父对象,也可以指定此依赖关系生效的时段。


[*]如定义主机间的依赖关系:
[*]   define hostdependency
[*]   {
[*]          dependent_host_name backuphost   
[*]          ##定义dependent主机
[*]          host_name vpnserver1    ##定义master主机
[*]          dependency_period maintenancewindows      
[*]          ##定义依赖时段
[*]   }
[*]
[*]服务间依赖关系的定义类似于主机间的依赖关系,例如:
[*]
[*]   define servicedependency
[*]   {
[*]          host_name mysqlserver      ##master主机名
[*]          service_description mysql      ##master服务名
[*]          dependent_hostgroup_name apacheservers   
[*]          ##dependent主机组名
[*]          dependent_service_description webservice      
[*]          ##denpendent服务名
[*]          execution_failure_criteria c,u         
[*]          ##定义master为何种状态时不再对依赖
[*]                                                         
[*]##于此master的主机或服务进行检测,
[*]          notification_failure_criteria c,u,w   
[*]          ##用于定义master处于何种状态时不会
[*]         ##发送dependent相关的主机问题通知到联系人
[*]   }

13432878738 发表于 2013-3-14 06:31:40

不错不错,楼主您辛苦了。。。

圣凤凌霜 发表于 2013-5-16 01:28:35

自从我变成了狗屎,就再也没有人踩在我头上了。

agangliu0400 发表于 2013-5-17 08:47:15

打破老婆终身制,实行小姨股份制。引入小姐竞争制,推广情人合同制。

q2009a06z22 发表于 2013-5-18 11:21:48

花前月下,不如花钱“日”下!*^_^*

nikoo 发表于 2013-5-19 12:32:53

你的丑和你的脸没有关系。。。。。。

yorknong 发表于 2013-5-20 16:28:43

饭在锅里,我在床上*^_^*
页: [1]
查看完整版本: Nagios配置文件介绍