3rwdq 发表于 2015-12-16 09:09:30

Nagios各独立配置文件详细介绍

a. templates.cfg文件    nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。这就是templates.cfg的作用。下面详细介绍下templates.cfg文件中每个参数的含义:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
define contact{
      name                            generic-contact    ; 联系人名称
      service_notification_period   24x7               ; 当服务出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义
      host_notification_period      24x7               ; 当主机出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义
      service_notification_options    w,u,c,r            ; 这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态;
                                                         ; c即criticle,表示紧急状态,r即recover,表示恢复状态;
                                                         ; 也就是在服务出现警告状态、未知状态、紧急状态和重新恢复状态时都发送通知给使用者。
      host_notification_options       d,u,r                   ; 定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态;
                                                                ; u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。
      service_notification_commands   notify-service-by-email ; 服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件;
                                                                ; 其中“notify-service-by-email”在commands.cfg文件中定义。
      host_notification_commands      notify-host-by-email    ; 主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件;
                                                                ; 其中“notify-host-by-email”在commands.cfg文件中定义。
      register                        0                  ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
      }
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               ; 其值可以为0或1,其作用为是否启用Nagios的数据输出功能;
                                                      ; 如果将此项赋值为1,那么Nagios就会将收集的数据写入某个文件中,以备提取。
      retain_status_information       1               ; Retain status information across program restarts
      retain_nonstatus_information    1               ; Retain non-status information across program restarts
      notification_period             24x7            ; 指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。
      register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
      }
define host{
      name                            linux-server    ; 主机名称
      use                           generic-host    ; use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来;
                                                      ; 在nagios配置中,很多情况下会用到引用。
      check_period                  24x7            ; 这里的check_period告诉nagios检查主机的时间段
      check_interval                  5               ; nagios对主机的检查时间间隔,这里是5分钟。
      retry_interval                  1               ; 重试检查时间间隔,单位是分钟。
      max_check_attempts            10            ; nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况;
                                                      ; 而是多试几次,因为有可能只是一时网络太拥挤,或是一些其他原因,让主机受到了一点影响;
                                                      ; 这里的10就是最多试10次的意思。
      check_command                   check-host-alive ; 指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义。
      notification_period             24x7            ; 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义;
                                                      ; 下面会陆续讲到。
      notification_interval         10            ; 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟;
                                                      ; 如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0
      notification_options            d,u,r         ; 定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态;
                                                      ; u即unreachable,表示不可到达状态;
                                                      ; r即recovery,表示重新恢复状态。
      contact_groups                  ts            ; 指定联系人组,这个“admins”在contacts.cfg文件中定义。
      register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
      }
define host{
      name                  windows-server; The name of this host template
      use                     generic-host    ; Inherit default values from the generic-host template
      check_period            24x7            ; By default, Windows servers are monitored round the clock
      check_interval          5               ; Actively check the server every 5 minutes
      retry_interval          1               ; Schedule host check retries at 1 minute intervals
      max_check_attempts      10            ; Check each server 10 times (max)
      check_command         check-host-alive      ; Default command to check if servers are "alive"
      notification_period   24x7            ; Send notification out at any time - day or night
      notification_interval   10            ; Resend notifications every 30 minutes
      notification_options    d,r             ; Only send notifications for specific host states
      contact_groups          ts            ; Notifications get sent to the admins by default
      hostgroups            windows-servers ; Host groups that Windows servers should be a member of
      register                0               ; DONT REGISTER THIS - ITS JUST A TEMPLATE
      }
define service{
      name                            generic-service         ; 定义一个服务名称
      active_checks_enabled         1                     ; Active service checks are enabled
      passive_checks_enabled          1                     ; Passive service checks are enabled/accepted
      parallelize_check               1                     ; Active service checks should be parallelized;
                                                                ; (disabling this can lead to major performance problems)
      obsess_over_service             1                     ; We should obsess over this service (if necessary)
      check_freshness               0                     ; Default is to NOT check service 'freshness'
      notifications_enabled         1                     ; Service notifications are enabled
      event_handler_enabled         1                     ; Service 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
      is_volatile                     0                     ; The service is not volatile
      check_period                  24x7             ; 这里的check_period告诉nagios检查服务的时间段。
      max_check_attempts            3                ; nagios对服务的最大检查次数。
      normal_check_interval         5                ; 此选项是用来设置服务检查时间间隔,也就是说,nagios这一次检查和下一次检查之间所隔的时间;
                                                         ; 这里是5分钟。
      retry_check_interval            2                ; 重试检查时间间隔,单位是分钟。
      contact_groups                  ts         ; 指定联系人组
      notification_options            w,u,c,r          ; 这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态;
                                                         ; u即unknown,表示不明状态;
                                                         ; c即criticle,表示紧急状态,r即recover,表示恢复状态;
                                                         ; 也就是在服务出现警告状态、未知状态、紧急状态和重新恢复后都发送通知给使用者。
      notification_interval         10               ; Re-notify about service problems every hour
      notification_period             24x7             ; 指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。
      register                        0                ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
      }
define service{
      name                            local-service         ; The name of this service template
      use                           generic-service         ; Inherit default values from the generic-service definition
      max_check_attempts            4             ; Re-check the service up to 4 times in order to determine its final (hard) state
      normal_check_interval         5             ; Check the service every 5 minutes under normal conditions
      retry_check_interval            1             ; Re-check the service every minute until a hard state can be determined
      register                        0             ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
      }




b. resource.cfg文件
    resource.cfg是nagios的变量定义文件,文件内容只有一行:

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




    其中,变量$USER1$指定了安装nagios插件的路径,如果把插件安装在了其它路径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用。
c. commands.cfg文件
    此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#notify-host-by-email命令的定义
define command{
      command_name    notify-host-by-email             #命令名称,即定义了一个主机异常时发送邮件的命令。
      command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$                                     #命令具体的执行方式。
      }#notify-service-by-email命令的定义
define command{
      command_name    notify-service-by-email          #命令名称,即定义了一个服务异常时发送邮件的命令
      command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
      }
#check-host-alive命令的定义
define command{
      command_name    check-host-alive               #命令名称,用来检测主机状态。
      command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5            
                        # 这里的变量$USER1$在resource.cfg文件中进行定义,即$USER1$=/usr/local/nagios/libexec;
                        # 那么check_ping的完整路径为/usr/local/nagios/libexec/check_ping;
                        # “-w 3000.0,80%”中“-w”说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。
                        # “-c 5000.0,100%”中“-c”说明后面的一对值对应的是“CRITICAL”,“100%”是其临界值。
                        # “-p 1”说明每次探测发送一个包。
      }
define command{
      command_name    check_local_disk
      command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$            #$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。
      }
define command{
      command_name    check_local_load
      command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$
      }
define command{
      command_name    check_local_procs
      command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
      }
define command{
      command_name    check_local_users
      command_line    $USER1$/check_users -w $ARG1$ -c $ARG2$
      }
define command{
      command_name    check_local_swap
      command_line    $USER1$/check_swap -w $ARG1$ -c $ARG2$
      }
define command{
      command_name    check_ftp
      command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
      }
define command{
      command_name    check_http
      command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
      }
define command{
      command_name    check_ssh
      command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
      }
define command{
      command_name    check_ping
      command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
      }
define command{
      command_name    check_nt
      command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
      }




d. hosts.cfg文件
    此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,根据实验目标配置如下:

1
2
3
4
5
6
7
8
9
10
11
define host{   
      use                     linux-server          #引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
      host_name               Nagios-Linux          #主机名
      alias                   Nagios-Linux          #主机别名
      address               192.168.1.111         #被监控的主机地址,这个地址可以是ip,也可以是域名。
      }   
#定义一个主机组   define hostgroup{      
      hostgroup_name          bsmart-servers      #主机组名称,可以随意指定。
      alias                   bsmart servers      #主机组别名
      members               Nagios-Linux          #主机组成员,其中“Nagios-Linux”就是上面定义的主机。   
      }




注意:在/etc/nagios/objects 下默认有localhost.cfg 和windows.cfg 这两个配置文件,localhost.cfg 文件是定义监控主机本身的,windows.cfg 文件是定义windows 主机的,其中包括了对host 和相关services 的定义。所以在本次实验中,将直接在localhost.cfg 中定义监控主机(Nagios-Server),在windows.cfg中定义windows 主机(Nagios-Windows)。根据自己的需要修改其中的相关配置,详细如下:
localhost.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
###############################################################################
# LOCALHOST.CFG - SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE
#
#
# NOTE: This config file is intended to serve as an *extremely* simple
#       example of how you can create configuration entries to monitor
#       the local (Linux) machine.
#
###############################################################################




###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
###############################################################################

# Define a host for the local machine

define host{
      use                     linux-server            
      host_name               10.0.0.14
      alias                   10.0.0.14
      address               127.0.0.1
      }



###############################################################################
###############################################################################
#
# HOST GROUP DEFINITION
#
###############################################################################
###############################################################################

# Define an optional hostgroup for Linux machines

define hostgroup{
      hostgroup_namelinux-servers
      alias         Linux Servers
      members         10.0.0.14   
      }



###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################


# Define a service to "ping" the local machine

define service{
      use                           local-service
      host_name                     10.0.0.14
      service_description             PING
    check_command         check_ping!100.0,20%!500.0,60%
      }


# Define a service to check the disk space of the root partition
# on the local machine.Warning if < 20% free, critical if
# < 10% free space on partition.

define service{
      use                           local-service   
      host_name                     10.0.0.14
      service_description             Root Partition
    check_command         check_local_disk!20%!10%!/
       }



# Define a service to check the number of currently logged in
# users on the local machine.Warning if > 20 users, critical
# if > 50 users.

define service{
      use                           local-service
      host_name                     10.0.0.14
      service_description             Current Users
    check_command         check_local_users!20!50
      }


# Define a service to check the number of currently running procs
# on the local machine.Warning if > 250 processes, critical if
# > 400 users.

define service{
      use                           local-service
      host_name                     10.0.0.14
      service_description             Total Processes
    check_command         check_local_procs!250!400!RSZDT
      }



# Define a service to check the load on the local machine.

define service{
      use                           local-service
      host_name                     10.0.0.14
      service_description             Current Load
    check_command         check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
      }



# Define a service to check the swap usage the local machine.
# Critical if less than 10% of swap is free, warning if less than 20% is free

define service{
      use                           local-service   
      host_name                     10.0.0.14
      service_description             Swap Usage
    check_command         check_local_swap!20!10
      }



# Define a service to check SSH on the local machine.
# Disable notifications for this service by default, as not all users may have SSH enabled.

define service{
      use                           local-service
      host_name                     10.0.0.14
      service_description             SSH
    check_command         check_ssh
    notifications_enabled       0
      }



# Define a service to check HTTP on the local machine.
# Disable notifications for this service by default, as not all users may have HTTP enabled.

define service{
      use                           local-service
      host_name                     10.0.0.14
      service_description             HTTP
    check_command         check_http
    notifications_enabled       0
      }




windows.cfg


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
define host{
      use             windows-server; Inherit default values from a template
      host_name       Nagios-Windows; The name we're giving to this host
      alias         My Windows Server       ; A longer name associated with the host
      address         192.168.1.113   ; IP address of the host
      }
define hostgroup{
      hostgroup_namewindows-servers ; The name of the hostgroup
      alias         Windows Servers ; Long name of the group
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   NSClient++ Version
      check_command         check_nt!CLIENTVERSION
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   Uptime
      check_command         check_nt!UPTIME
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   CPU Load
      check_command         check_nt!CPULOAD!-l 5,80,90
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   Memory Usage
      check_command         check_nt!MEMUSE!-w 80 -c 90
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   C:\ Drive Space
      check_command         check_nt!USEDDISKSPACE!-l c -w 80 -c 90
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   W3SVC
      check_command         check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
      }
define service{
      use                     generic-service
      host_name               Nagios-Windows
      service_description   Explorer
      check_command         check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
      }




e. services.cfg文件

    此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务和主机资源,例如监控http服务、ftp服务、主机磁盘空间、主机系统负载等等。Nagios-Server 和Nagios-Windows 相关服务已在相应的配置文件中定义,所以这里只需要定义Nagios-Linux 相关服务即可,这里只定义一个检测是否存活的服务来验证配置文件的正确性,其他服务的定义将在后面讲到。

1
2
3
4
5
6
define service{
      use                     local-service          #引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
      host_name               Nagios-Linux         #指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。
      service_description   check-host-alive       #对监控服务内容的描述,以供维护人员参考。
      check_command         check-host-alive       #指定检查的命令。
      }




f. contacts.cfg文件
    contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障,nagios会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者。

1
2
3
4
5
6
7
8
9
10
define contact{
      contact_name                  David             #联系人的名称,这个地方不要有空格      use                           generic-contact   #引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
      alias                           Nagios Admin
      email                           david.tang@bsmart.cn
      }
define contactgroup{
      contactgroup_name       ts                              #联系人组的名称,同样不能空格
      alias                   Technical Support               #联系人组描述
      members               David                           #联系人组成员,其中“david”就是上面定义的联系人,如果有多个联系人则以逗号相隔
      }




g. timeperiods.cfg文件

    此文件只要用于定义监控的时间段,下面是一个配置好的实例:
#下面是定义一个名为24x7的时间段,即监控所有时间段

1
2
3
4
5
6
7
8
9
10
11
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
      }




#下面是定义一个名为workhours的时间段,即工作时间段。

1
2
3
4
5
6
7
8
9
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
      }




h. cgi.cfg文件

    此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件了。
由于nagios的web监控界面验证用户为david,所以只需在cgi.cfg文件中添加此用户的执行权限就可以了,需要修改的配置信息如下:

1
2
3
4
5
6
7
8
default_user_name=david
authorized_for_system_information=nagiosadmin,david
authorized_for_configuration_information=nagiosadmin,david
authorized_for_system_commands=david
authorized_for_all_services=nagiosadmin,david
authorized_for_all_hosts=nagiosadmin,david
authorized_for_all_service_commands=nagiosadmin,david
authorized_for_all_host_commands=nagiosadmin,david






页: [1]
查看完整版本: Nagios各独立配置文件详细介绍