wuli 发表于 2015-11-23 08:41:17

nagios配置文件详解


Nagios的配置文件

一、Nagios的主配置文件时nagios.cfg







参数的设置格式为<parameter>=<value> 有些值是可以重复出现的 其中常用的参数的说明如下:




[*]Log_file:设置nagios的日志文件
[*]cfg_file: Nagios对象定义的相关文件,此参数可重复使用多次以指定多个文件;
[*]cfg_dir:设定Nagios对象定义的相关文件所在的目录,此目录中的所有文件都会被作为对象
[*]                     定义的文件;此参数可重复使用多次以指定多个目录;
[*]resource_file: 设定Nagios附加的宏定义的相关文件;
[*]status_file: 设定Nagios存储所有主机和服务当前状态信息的文件;
[*]status_update_interval: 设定status_file指定的文件中状态信息的更新频率;
[*]service_check_timeout: 设定服务检测的超时时间,默认为60秒;
[*]host_check_timeout: 设定主机检测的超时时间,默认为30秒;
[*]notification_timeout: 设定通知信息发送尝试的超时时间,默认为30秒;


二、resource_file 变量存储文件rescource.cfg

在主配置文件中,参数resource_file用于定义所有用户变量(即“宏”)的存储文件,它用于存储对象定义中的可以访问的额外信息,此文件中可以定义的宏可多达32个,它们分别为$USER1$,$USER2$...$USER32,这些宏一般在check命令中引用。通常情况下$USER1$用于引用Nagios插件所在目录这个路径信息,因此,一般不建议修改其值。

$USER1$=/usr/local/nagios/libexec

Nagios 中事先定义了一些宏,它的值依赖于安全上下文,例如:




[*]HOSTNAME: 用于引用host_name指定所定义的主机的主机名;
[*]HOSTADDRESS: 用于引用host对象中的address指令的值,它通常可以为IP地址或主机名;
[*]HOSTDISPLAYNAME: 用于引用host对象中alias指令的值,用以描述当前主机,
[*]                  即主机的显示名称;
[*]HOSTSTATE:某主机的当前状态,为UP,DOWN,UNREACHABLE三者之一;
[*]HOSTGROUPNAMES: 用于引用某主机所属的所有主机组的简名,主机组名称之间以逗号分隔;
[*]LASTHOSTCHECK:用于引用某主机上次检测的时间和日期,Unix时间戳格式;
[*]LASTHOSTSTATE:用于引用某主机前一次检测时的状态,为UP,DOWN或UNREACHABLE三者之一;
[*]SERVICEDESC: 用于引用对应service对象中的desccription指令的值;
[*]SERVICESTATE: 用于引用某服务的当前状态,为OK,WARNING,UNKOWN或CRITICAL
[*]SERVICEGROUPNAMES: 用于引用某服务所属的所有服务组的简名,服务组名称之间以逗号分隔;
[*]CONTACTNAME: 用于引用某contact对象中contact_name指令的值;
[*]CONTACTALIAS: 用于引用某contact对象中alias指令的值;
[*]CONTACTEMAIL: 用于引用某contact对象中email指令的值;
[*]CONTACTGROUPNAMES: 用于引用某contact所属的所有contact组的简名,contact组名称
[*]                      之间以逗号分隔;






三、 templates.cfg 定义一些通用的模板,被其他对象引用





###############################################################################





定义一个主机




[*]define host{#定义一个主机       定义基本信息 被其他主机引用
[*]      name                         generic-host    ; #主机名称
[*]      notifications_enabled         1      ; Host notifications are enabled
[*]      event_handler_enabled         1       ; Host event handler is enabled
[*]      flap_detection_enabled          1       ; Flap detection is enabled 不稳定检测
[*]      failure_prediction_enabled      1       ; Failure prediction is enabled 启用故障预测
[*]      process_perf_data               1    ; Process performance data 进程性能数据
[*]      retain_status_information       1      ; Retain status information across program restarts保持状态信息到程序重新启动
[*]      retain_nonstatus_information    1         ; Retain non-status information across program restarts
[*]notification_period24x7   ; Send host notifications at any time 发送通知的时段
[*]      register                        0         ;模板         
[*]}






定义主机引用上面的主机属性




[*]define host{
[*]name   linux-server   ; The name of this host template
[*]usegeneric-host   ;引用前面定义的主机 继承它的属性值   
[*]check_period   24x7    ; 检测周期
[*]check_interval   5   ; 检测频率
[*]retry_interval   1   ; 重试频率
[*]max_check_attempts   10; 最大确认次数
[*]    check_command       check-host-alive ; 检测命令
[*]notification_periodworkhours;故障通知时间段
[*]notification_interval    0   ; 发送故障通知的频率,0表示只发送一次   
[*]notification_options   d,u,r   ;主机处于什么状态下发送通知
[*]contact_groups   admins;   通知人组
[*]register   0   ;
[*]}


其中的notification_options用于指定当主机处于什么状态时应该发送通知。其各状态及其表示符如下:

d —— DOWN

u —— UNREACHABLE

r —— UP(host recovery)

f —— flapping

s —— 调试宕机时间开始或结束



define hostgroup {       #定义主机组

hostgroup_name         webservers       #主机组名

alias               Linux web servers   #主机组别名

members                webserver1      #主机组成员 也可以包含其他主机组

}





###############################################################################



定义一个服务




[*]define service{
[*]      name                     generic-service    ;         
[*]      active_checks_enabled         1       ;
[*]      passive_checks_enabled       1   ;
[*]      parallelize_check          1;    并行检查启动 提高性能
[*]      failure_prediction_enabled      1   ;启用故障预测
[*]      process_perf_data               1    ;过程性能数据
[*]      check_period                  24x7   ;    检测时段
[*]      max_check_attempts            3    ; 检测3次确定状态   
[*]      normal_check_interval         10   ; 正常检测周期
[*]      retry_check_interval            2    ; 重试检测周期
[*]      contact_groups                  admins   ; 通知组
[*]      notification_options   w,u,c,r   ;通知状态
[*]      notification_interval         0    ;发送通知的周期
[*]      notification_period             24x7   ; 发送通知的时间段
[*]         register                        0      ;
[*]      }


其中的notification_options用于指定当服务处于什么状态时应该发送通知。其各状态及其表示符如下:

w —— WARNING

u —— UNKNOWN

c —— CRITICAL

r —— OK(recovery)

f —— flapping

s —— 调试宕机时间开始或结束






[*]define service
[*]{
[*]host_name   webserver1 主机名称 可以给多台主机定义同一服务
[*]service_description   www
[*]check_command    check_http 检测命令
[*]check_interval   10      检测周期
[*]check_period   24x7       检测时间段   
[*]retry_interval      3         重试周期
[*]max_check_attempts 3       重试检测次数
[*]notification_interval 30       通知周期
[*]notification_period 24x7       通知时间段   
[*]notification_options w,c,u,r      通知状态   
[*]contact_groups linux-admins      通知人组
[*]}


#定义服务组




[*]define servicegroup{      #定义服务组
[*]servicegroup_name webservices      
[*]alias All services related to web
[*]members   webserver1,www,webserver2,www
[*]}


一个服务组的成员通常是某主机上的某服务,其指定时使用<host>,<service>的格式,多个服务也使用逗号分隔。

Webwervices 服务组的成员有两个 主机webserver1上的www服务 和主机webserver2上的www服务



##########################################################################



定义命令对象




[*]define command{
[*]command_name    check_local_swap   命令名字
[*]command_line    $USER1$/check_swap -w $ARG1$ -c $ARG2$ 命令行 }


###########################################################################



定义时段对象




[*]define timeperiod
[*]{
[*]timeperiod_name   workinghours    名字      
[*]alias      Working Hours, from Monday to Friday描述名   
[*]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
[*]}




###########################################################################

   



定义联系人对象

   




[*]define contact{
[*]contact_name    zhanghui          #名称
[*]alias         Mage Education   #描述名
[*]email          linuxedu@magedu.com   邮箱地址
[*]host_notification_periodworkinghours    主机通知时段   
[*]service_notification_periodworkinghours   服务通知时段
[*]host_notification_optionsd,u,r            主机通知状态
[*]service_notification_optionsw,u,c,r         服务通知状态
[*]host_notification_commands   host-notify-by-email主机通知命令
[*]service_notification_commands   notify-by-email    服务通知命令
[*]}


notify-service-by-email 和notify-host-by-email都是命令对象 在命令文件里会定义



定义联系人祖对象






[*]define contactgroup
[*]{
[*]contactgroup_name   linux-admins
[*]alias                  Linux Administrators
[*]members            zhanghui,zhang
[*]}




###########################################################################

本文出自 “单人旅行” 博客,请务必保留此出处http://5122542.blog.iyunv.com/5112542/999613
页: [1]
查看完整版本: nagios配置文件详解