Nagios学习笔记之(三)配置详解
- bin #Nagios执行程序所在目录,包括nagios、npc、nrpe等;
- etc #Nagios配置文件位置,重点;
- libexec #Nagios插件目录,里面有具体监控的各种插件,重点;
- sbin #Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录;
- share #Nagios网页文件所在的目录,也就是web页面给我们展示的文件;
- include #Nagioscgi文件的外部调用;
- var #Nagios日志文件、spid 等文件所在的目录。
- etc/nagios.cfg #Nagios主配置文件,所有的cfg文件(外部调用除外)必须都在此文件中引用才能生效;
- etc/resource.cfg #定义$USER1$变量,设置插件路径;
- etc/nrpe.cfg #定义nrpe检测命令的文件,在command中引用;
- etc/objects下:
- commands.cfg #定义命令执行的文件,比如check_tcp、check_local_disk等,由后面定义服务的配置文件来引用;
- contacts.cfg #定义联系人的文件,比如服务down了通知的对象;
- localhost.cfg #定义本机的监控条目,默认生成;
- printer.cfg #定义打印机的文件,默认未启用,在生产环境中意义不大;
- switch.cfg #定义监控路由器和交换机的配置文件,默认未启用;
- templates.cfg #定义服务类型的文件,样本文件,比如定义的linux-server就是在此文件中预先定义好;
- timeperiods.cfg #定义要监控时间段文件,比如24x7,workhours等;
- windows.cfg #定义监控Windows的文件,默认未启用。
- log_file=/usr/local/nagios/var/nagios.log
- # 这个变量用于设定Nagios在何处创建其日志文件。
- # OBJECT CONFIGURATION FILE(S)
- # 对象的配置文件
- # 可以指定单个对象的配置文件, 如下所示:
- 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
- # 定义监测本地( Linux )主机
- #cfg_file=/usr/local/nagios/etc/objects/windows.cfg
- # 定义监测( windows )主机
- #cfg_file=/usr/local/nagios/etc/objects/switch.cfg
- # 定义监测路由器或交换机
- #cfg_file=/usr/local/nagios/etc/objects/printer.cfg
- # 定义监测打印机
- # 也可以告诉Nagios处理所有配置文件(带有.cfg扩展名)在特定的目录使用cfg_dir指令如下所示:
- #cfg_dir=/usr/local/nagios/etc/servers
- #cfg_dir=/usr/local/nagios/etc/printers
- #cfg_dir=/usr/local/nagios/etc/switches
- #cfg_dir=/usr/local/nagios/etc/routers
- #定义通知的方式,主机发生故障通知和服务发送故障通知
- 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: $H
- OSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
- }
- #定义通知的方式,服务发生故障通知和服务发送故障通知
- # 'notify-service-by-email' command definition
- 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$\nS
- tate: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SE
- RVICESTATE$ **" $CONTACTEMAIL$
- }
- #定义检测主机是否存活的命令,command_name是最后在服务中的引用名,而它是调用的check_ping命令来实现的
- define command{
- command_name check-host-alive
- command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
- }
- #定义检测主机cpu负载的命令
- 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$
- }
- #定义检测主机tcp端口的命令
- define command{
- command_name check_tcp
- command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
- }
- 此定义的为类,也就是日后定义主机或者服务时指定的name引用
- define service{
- name generic-service #通过name来指定服务类名,这里的generice-service是一个类名
- active_checks_enabled 1 #设定启用活动监测服务
- passive_checks_enabled 1 #设定启用被动监测服务
- parallelize_check 1 #设定启用并发活动监测服务
- obsess_over_service 1 #设定启用服务防停滞
- check_freshness 0 #设定关闭更新监测
- notifications_enabled 1 #设定启用事件通知
- event_handler_enabled 1 #设定启用事件处理程序
- flap_detection_enabled 1 #设定启用状态抖动监测
- failure_prediction_enabled 1 #设定启用故障预测
- process_perf_data 1 #设定启用进程性能数据记录
- retain_status_information 1 #设定启用状态信息保存功能。当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的状态数据。
- retain_nonstatus_information 1 #设定启用非状态信息保存功能。当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的非状态数据
- is_volatile 0 #设定服务非易失
- check_period 24x7 #设定监控的时间段
- max_check_attempts 3 #设定监测失败后最多尝试次数
- normal_check_interval 10 #设定正常监测服务的间隔,单位分
- retry_check_interval 2 #设定监测失败后尝试的间隔,单位分
- contact_groups admins #定义通知联系人租
- notification_options w,u,c,r ,d #设定监测指定服务产生的事件通知的条件选项。这里后面跟上一些级别类型参数:
- w代表warning告警;
- u代表unknown未知;
- c代表critical严重;
- r代表recover恢复;
- d代表down奔溃。
- notification_interval 60 #设定服务通知的间隔
- notification_period 24x7 #设定服务通知运行时间
- register 0 #设定register表明本段定义的是一个服务类,而不是具体的服务
- }
- define host{ #此定义的为监控主机的配置文件
- use linux-server #引用类,在templates.cfg中预定义
- host_name localhost #指定主机名,并不是实际机器的主机名,自己定义,方便以后在定义服务时调用
- alias localhost #别名
- address 127.0.0.1 #指定监控主机的地址
- }
- define service{ #此定义为监控主机服务的配置文件
- use local-service #引用类,在templates.cfg中预定义
- host_name localhost #指定主机名,在host段中预定义
- service_description PING #监控服务的名称,也就是在web页面上显示的监控项目
- check_command check_ping!100.0,20%!500.0,60% #具体监控的命令以及阀值
- }
- define contact{
- contact_name nagiosadmin #定义联系人的名称,方便以后在监控项目中调用
- use generic-contact #引用类,在templates.cfg中预定义
- alias Nagios Admin #别名
- email test@abc.com #邮件地址
- }
- define contactgroup{
- contactgroup_name admins #定义联系人组的名称,方便一次性发送多人
- alias Nagios Administrators #别名
- members nagiosadmin #定义组成员,这里nagiosadmin,也就是上面contact_name的值
- }
- define timeperiod{ #定义时间段的配置文件
- timeperiod_name 24x7 #指定时间段的名称,方便以后在服务里调用
- alias 24 Hours A Day, 7 Days A Week #别名
- sunday 00:00-24:00 #具体的时间段定义
- monday 00:00-24:00 #一周24小时
- 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
- }