Nagios学习笔记之(三)配置详解
2012-08-09 13:33
405 查看
Nagios学习笔记之(三)配置详解
前言:
上篇先实现的监控部署,就是想先搭建起来,有点小成就,现在再来看配置文件中的详解。只有把其中配置文件中的联系都理解清楚了,才能方便日后自己自定义的检测。Nagios的配置文件还是有其鲜明的特点的。
网上也有很多零零闪闪的配置讲解,但大多都不够详解,此篇为自己整理,当然也参考了网络上的信息,有配置的解释还有自己的一些备注,可能还有很多不完善的地方,后续会慢慢补充,希望看的人能看懂,还有就是自己以后能看懂,呵呵。
好了,不多说了,开始!
一、目录层次:
Nagios以及其插件,安装并配置好了以后,目录层次如下:
二、配置文件概览:
Nagios所有的配置文件以cfg为结尾,在默认装好以后会在etc/下生成一些,我们来逐个看下:
备注:这些文件的名字不是一定的,只要里面的内容正确就可以,Nagios可以自动识别,比如你把commands.cfg和localhost.cfg的文件名互换,都是没有问题的。
三、各配置文件详解:(考虑篇幅,只列举部分)
1.etc/nagios.cfg(主配置文件)
总结:配置文件里的变量:
日志文件:
格式: log_file=<file_name>
样例: log_file=/usr/local/nagios/var/nagios.log
说明:
这个变量用于设定Nagios在何处创建其日志文件。它应该是你主配置文件里面的第一个变量,当Nagios找到你配置文件并发现配置里有错误时会向该文件中写入错误信息。如果你使能了日志回滚,Nagios将在每小时、每天、每周或每月对日志进行回滚。
对象配置文件:
格式: cfg_file=<file_name>
样例:
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/servers.cfg
cfg_file=/usr/local/nagios/etc/commands.cfg
说明:
该变量用于指定一个包含有将用于Nagios监控对象的对象配置文件。对象配置文件中包括有主机、主机组、联系人、联系人组、服务、命令等等对象的定义。配置信息可以切分为多个文件并且用cfg_file=语句来指向每个待处理的配置文件.
对象配置目录:
格式: cfg_dir=<directory_name>
样例:
cfg_dir=/usr/local/nagios/etc/commands
cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/hosts
说明:
该变量用于指定一个目录,目录里包含有将用于Nagios监控对象的对象配置文件。所有的在这个目录下的且以.cfg为扩展名的文件将被作为配置文件来处理。另外,Nagios将会递归该目录下的子目录并处理其子目录下的全部配置文件。你可以把配置放入不同的目录并且用cfg_dir=语句来指向每个待处理的目录。
2.etc/objects/commands.cfg(命令配置文件)
总结:
命令配置文件:
格式:
define command{
command_name 命令名
command_line 命令调用的实际插件路径以及阀值
}
样例:
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/servers.cfg
cfg_file=/usr/local/nagios/etc/commands.cfg
说明:
该变量用于指定一个包含有将用于Nagios监控命令的配置文件。对象配置文件中包括有命令名以及实际插件路径以及阀值的定义。
3./etc/objects/templates.cfg(样本配置文件)
4.etc/objects/localhost.cfg(本机监控文件)
备注: 以上定义的主机和服务,没有指定通知联系人,那是因为在其中引用了类,而templates.cfg中定义的类是有指定联系人的。
5.etc/objects/contacts.cfg(联系人配置文件)
6.etc/objects/timeperiods.cfg(时间段配置文件)
四、总结:
看过了以上配置文件的详解,来总结下监控一台主机和主机上的服务,必要的条件。
1.首先定义其监控主机,其中注意的就是引用的类必须在templates.cfg中预定义(所有未指定的条目,都按照类的定义载入)
2.再就是监控主机中的资源以及服务,指定的name必须在主机配置文件中预定义,还有就是指定的命令必须在command.cfg中预定义
3.还有就是类中定义的联系人或者联系人组必须在contacts.cfg中预定义
4.再有的细节问题,就自己慢慢摸索了、
备注:以上所说的预定义,其实写在任意位置都是可以的,只是为了有条理,日后也方便查找问题。
五、示例:
新建一台监控远程192.168.1.1主机,以及cpu、内存、硬盘使用率、进程数以及僵尸进程的配置文件。
解:vim etc/objects/192..168.1.1.cfg
define host{
use linux-server
host_name test
alias test_1
address 192.168.1.1
}
define service{
use generic-service
host_name test
service_description CPU Load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name test
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name test
service_description Disk Free Space /
check_command check_nrpe!check_root
}
define service{
use generic-service
host_name test
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use generic-service,services-pnp
host_name Mailbak
service_description Zombie Processes
check_command check_nrpe!check_zombie_procs
}
具体检测的命令都在libexec/下,每条检测命令后面加--help来查看其用法。
定义好后,检查下配置文件,然后重载nagios服务,就可以在web页面上查看了。
记录到此,旨在详解!也为日后方便查看!
后续:外部扩展
Nagios全系列笔记:
Nagios学习笔记之(一)最初搭建
Nagios学习笔记之(二)监控部署
Nagios学习笔记之(三)配置详解
Nagios学习笔记之(四)外部扩展
Nagios学习笔记之(五)后期维护
本文出自 “____哊.時^随记” 博客,转载请与作者联系!
前言:
上篇先实现的监控部署,就是想先搭建起来,有点小成就,现在再来看配置文件中的详解。只有把其中配置文件中的联系都理解清楚了,才能方便日后自己自定义的检测。Nagios的配置文件还是有其鲜明的特点的。
网上也有很多零零闪闪的配置讲解,但大多都不够详解,此篇为自己整理,当然也参考了网络上的信息,有配置的解释还有自己的一些备注,可能还有很多不完善的地方,后续会慢慢补充,希望看的人能看懂,还有就是自己以后能看懂,呵呵。
好了,不多说了,开始!
一、目录层次:
Nagios以及其插件,安装并配置好了以后,目录层次如下:
bin #Nagios执行程序所在目录,包括nagios、npc、nrpe等; etc #Nagios配置文件位置,重点; libexec #Nagios插件目录,里面有具体监控的各种插件,重点; sbin #Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录; share #Nagios网页文件所在的目录,也就是web页面给我们展示的文件; include #Nagioscgi文件的外部调用; var #Nagios日志文件、spid 等文件所在的目录。
二、配置文件概览:
Nagios所有的配置文件以cfg为结尾,在默认装好以后会在etc/下生成一些,我们来逐个看下:
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的文件,默认未启用。
备注:这些文件的名字不是一定的,只要里面的内容正确就可以,Nagios可以自动识别,比如你把commands.cfg和localhost.cfg的文件名互换,都是没有问题的。
三、各配置文件详解:(考虑篇幅,只列举部分)
1.etc/nagios.cfg(主配置文件)
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
总结:配置文件里的变量:
日志文件:
格式: log_file=<file_name>
样例: log_file=/usr/local/nagios/var/nagios.log
说明:
这个变量用于设定Nagios在何处创建其日志文件。它应该是你主配置文件里面的第一个变量,当Nagios找到你配置文件并发现配置里有错误时会向该文件中写入错误信息。如果你使能了日志回滚,Nagios将在每小时、每天、每周或每月对日志进行回滚。
对象配置文件:
格式: cfg_file=<file_name>
样例:
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/servers.cfg
cfg_file=/usr/local/nagios/etc/commands.cfg
说明:
该变量用于指定一个包含有将用于Nagios监控对象的对象配置文件。对象配置文件中包括有主机、主机组、联系人、联系人组、服务、命令等等对象的定义。配置信息可以切分为多个文件并且用cfg_file=语句来指向每个待处理的配置文件.
对象配置目录:
格式: cfg_dir=<directory_name>
样例:
cfg_dir=/usr/local/nagios/etc/commands
cfg_dir=/usr/local/nagios/etc/servers
cfg_dir=/usr/local/nagios/etc/hosts
说明:
该变量用于指定一个目录,目录里包含有将用于Nagios监控对象的对象配置文件。所有的在这个目录下的且以.cfg为扩展名的文件将被作为配置文件来处理。另外,Nagios将会递归该目录下的子目录并处理其子目录下的全部配置文件。你可以把配置放入不同的目录并且用cfg_dir=语句来指向每个待处理的目录。
2.etc/objects/commands.cfg(命令配置文件)
#定义通知的方式,主机发生故障通知和服务发送故障通知 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$ }
总结:
命令配置文件:
格式:
define command{
command_name 命令名
command_line 命令调用的实际插件路径以及阀值
}
样例:
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/servers.cfg
cfg_file=/usr/local/nagios/etc/commands.cfg
说明:
该变量用于指定一个包含有将用于Nagios监控命令的配置文件。对象配置文件中包括有命令名以及实际插件路径以及阀值的定义。
3./etc/objects/templates.cfg(样本配置文件)
此定义的为类,也就是日后定义主机或者服务时指定的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表明本段定义的是一个服务类,而不是具体的服务 }
4.etc/objects/localhost.cfg(本机监控文件)
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% #具体监控的命令以及阀值 }
备注: 以上定义的主机和服务,没有指定通知联系人,那是因为在其中引用了类,而templates.cfg中定义的类是有指定联系人的。
5.etc/objects/contacts.cfg(联系人配置文件)
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的值 }
6.etc/objects/timeperiods.cfg(时间段配置文件)
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 }
四、总结:
看过了以上配置文件的详解,来总结下监控一台主机和主机上的服务,必要的条件。
1.首先定义其监控主机,其中注意的就是引用的类必须在templates.cfg中预定义(所有未指定的条目,都按照类的定义载入)
2.再就是监控主机中的资源以及服务,指定的name必须在主机配置文件中预定义,还有就是指定的命令必须在command.cfg中预定义
3.还有就是类中定义的联系人或者联系人组必须在contacts.cfg中预定义
4.再有的细节问题,就自己慢慢摸索了、
备注:以上所说的预定义,其实写在任意位置都是可以的,只是为了有条理,日后也方便查找问题。
五、示例:
新建一台监控远程192.168.1.1主机,以及cpu、内存、硬盘使用率、进程数以及僵尸进程的配置文件。
解:vim etc/objects/192..168.1.1.cfg
define host{
use linux-server
host_name test
alias test_1
address 192.168.1.1
}
define service{
use generic-service
host_name test
service_description CPU Load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name test
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name test
service_description Disk Free Space /
check_command check_nrpe!check_root
}
define service{
use generic-service
host_name test
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use generic-service,services-pnp
host_name Mailbak
service_description Zombie Processes
check_command check_nrpe!check_zombie_procs
}
具体检测的命令都在libexec/下,每条检测命令后面加--help来查看其用法。
定义好后,检查下配置文件,然后重载nagios服务,就可以在web页面上查看了。
记录到此,旨在详解!也为日后方便查看!
后续:外部扩展
Nagios全系列笔记:
Nagios学习笔记之(一)最初搭建
Nagios学习笔记之(二)监控部署
Nagios学习笔记之(三)配置详解
Nagios学习笔记之(四)外部扩展
Nagios学习笔记之(五)后期维护
本文出自 “____哊.時^随记” 博客,转载请与作者联系!
相关文章推荐
- struts2框架学习笔记2:配置详解
- mybatis学习笔记(十二) 映射配置文件详解
- Nginx学习笔记1—Nginx(Win32) 配置详解
- Flume学习笔记及配置参数详解
- Flume学习笔记及配置参数详解
- Spring4第二讲学习笔记,配置文件详解
- FreeBSD学习笔记12-pureftpd使用详解(1)-安装、配置、实现匿名登录
- Maven学习笔记——常用插件配置详解
- Flume学习笔记及配置参数详解
- Flume学习笔记及配置参数详解
- Linux学习笔记:Nagios的配置
- Flume学习笔记及配置参数详解
- Flume学习笔记及配置参数详解
- 【学习笔记】log4cxx配置详解
- Dynamic CRM 2013学习笔记(三十八)流程1 - 操作(action)开发与配置详解
- spring框架学习笔记2:配置详解
- Flume学习笔记及配置参数详解
- [学习笔记]struts.xml配置详解(所有基本配置,包括通配符)
- Hibernate学习笔记--映射配置文件详解
- hibernate框架学习笔记2:配置文件详解